LoginBlob.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #pragma once
  2. #include <iostream>
  3. #include <map>
  4. #include <memory>
  5. #ifndef BELL_ONLY_CJSON
  6. #include <nlohmann/json.hpp>
  7. #endif
  8. #include <vector>
  9. #include "ConstantParameters.h"
  10. #include "Crypto.h"
  11. #include "protobuf/authentication.pb.h"
  12. namespace cspot {
  13. class LoginBlob {
  14. private:
  15. int blobSkipPosition = 0;
  16. std::unique_ptr<Crypto> crypto;
  17. std::string name, deviceId;
  18. uint32_t readBlobInt(const std::vector<uint8_t>& loginData);
  19. std::vector<uint8_t> decodeBlob(const std::vector<uint8_t>& blob,
  20. const std::vector<uint8_t>& sharedKey);
  21. std::vector<uint8_t> decodeBlobSecondary(const std::vector<uint8_t>& blob,
  22. const std::string& username,
  23. const std::string& deviceId);
  24. public:
  25. LoginBlob(std::string name);
  26. std::vector<uint8_t> authData;
  27. std::string username = "";
  28. int authType;
  29. // Loading
  30. void loadZeroconfQuery(std::map<std::string, std::string>& queryParams);
  31. void loadZeroconf(const std::vector<uint8_t>& blob,
  32. const std::vector<uint8_t>& sharedKey,
  33. const std::string& deviceId, const std::string& username);
  34. void loadUserPass(const std::string& username, const std::string& password);
  35. void loadJson(const std::string& json);
  36. std::string buildZeroconfInfo();
  37. std::string getDeviceId();
  38. std::string getDeviceName();
  39. std::string getUserName();
  40. std::string toJson();
  41. };
  42. } // namespace cspot