#pragma once #include // for uint8_t, uint32_t #include // for map #include // for unique_ptr #include // for string #include // for vector #include "Crypto.h" // for CryptoMbedTLS, Crypto namespace cspot { class LoginBlob { private: int blobSkipPosition = 0; std::unique_ptr crypto; std::string name, deviceId; uint32_t readBlobInt(const std::vector& loginData); std::vector decodeBlob(const std::vector& blob, const std::vector& sharedKey); std::vector decodeBlobSecondary(const std::vector& blob, const std::string& username, const std::string& deviceId); public: LoginBlob(std::string name); std::vector authData; std::string username = ""; int authType; // Loading void loadZeroconfQuery(std::map& queryParams); void loadZeroconf(const std::vector& blob, const std::vector& sharedKey, const std::string& deviceId, const std::string& username); void loadUserPass(const std::string& username, const std::string& password); void loadJson(const std::string& json); std::string buildZeroconfInfo(); std::string getDeviceId(); std::string getDeviceName(); std::string getUserName(); std::string toJson(); }; } // namespace cspot