keyexchange.h 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. // THIS CORNFILE IS GENERATED. DO NOT EDIT! 🌽
  2. #ifndef _KEYEXCHANGEH
  3. #define _KEYEXCHANGEH
  4. #include <vector>
  5. #include <optional>
  6. enum class Product {
  7. PRODUCT_CLIENT = 0,
  8. PRODUCT_LIBSPOTIFY = 1,
  9. PRODUCT_MOBILE = 2,
  10. PRODUCT_PARTNER = 3,
  11. PRODUCT_LIBSPOTIFY_EMBEDDED = 5,
  12. };
  13. enum class Platform {
  14. PLATFORM_WIN32_X86 = 0,
  15. PLATFORM_OSX_X86 = 1,
  16. PLATFORM_LINUX_X86 = 2,
  17. PLATFORM_IPHONE_ARM = 3,
  18. PLATFORM_S60_ARM = 4,
  19. PLATFORM_OSX_PPC = 5,
  20. PLATFORM_ANDROID_ARM = 6,
  21. PLATFORM_WINDOWS_CE_ARM = 7,
  22. PLATFORM_LINUX_X86_64 = 8,
  23. PLATFORM_OSX_X86_64 = 9,
  24. PLATFORM_PALM_ARM = 10,
  25. PLATFORM_LINUX_SH = 11,
  26. PLATFORM_FREEBSD_X86 = 12,
  27. PLATFORM_FREEBSD_X86_64 = 13,
  28. PLATFORM_BLACKBERRY_ARM = 14,
  29. PLATFORM_SONOS = 15,
  30. PLATFORM_LINUX_MIPS = 16,
  31. PLATFORM_LINUX_ARM = 17,
  32. PLATFORM_LOGITECH_ARM = 18,
  33. PLATFORM_LINUX_BLACKFIN = 19,
  34. PLATFORM_WP7_ARM = 20,
  35. PLATFORM_ONKYO_ARM = 21,
  36. PLATFORM_QNXNTO_ARM = 22,
  37. PLATFORM_BCO_ARM = 23,
  38. };
  39. enum class Cryptosuite {
  40. CRYPTO_SUITE_SHANNON = 0,
  41. CRYPTO_SUITE_RC4_SHA1_HMAC = 1,
  42. };
  43. class LoginCryptoDiffieHellmanChallenge {
  44. public:
  45. std::vector<uint8_t> gs;
  46. static constexpr ReflectTypeID _TYPE_ID = ReflectTypeID::ClassLoginCryptoDiffieHellmanChallenge;
  47. };
  48. class LoginCryptoChallengeUnion {
  49. public:
  50. std::optional<LoginCryptoDiffieHellmanChallenge> diffie_hellman;
  51. static constexpr ReflectTypeID _TYPE_ID = ReflectTypeID::ClassLoginCryptoChallengeUnion;
  52. };
  53. class LoginCryptoDiffieHellmanHello {
  54. public:
  55. std::vector<uint8_t> gc;
  56. uint32_t server_keys_known;
  57. static constexpr ReflectTypeID _TYPE_ID = ReflectTypeID::ClassLoginCryptoDiffieHellmanHello;
  58. };
  59. class LoginCryptoHelloUnion {
  60. public:
  61. std::optional<LoginCryptoDiffieHellmanHello> diffie_hellman;
  62. static constexpr ReflectTypeID _TYPE_ID = ReflectTypeID::ClassLoginCryptoHelloUnion;
  63. };
  64. class BuildInfo {
  65. public:
  66. Product product;
  67. Platform platform;
  68. uint64_t version;
  69. static constexpr ReflectTypeID _TYPE_ID = ReflectTypeID::ClassBuildInfo;
  70. };
  71. class FeatureSet {
  72. public:
  73. std::optional<bool> autoupdate2;
  74. static constexpr ReflectTypeID _TYPE_ID = ReflectTypeID::ClassFeatureSet;
  75. };
  76. class APChallenge {
  77. public:
  78. LoginCryptoChallengeUnion login_crypto_challenge;
  79. static constexpr ReflectTypeID _TYPE_ID = ReflectTypeID::ClassAPChallenge;
  80. };
  81. class APResponseMessage {
  82. public:
  83. std::optional<APChallenge> challenge;
  84. static constexpr ReflectTypeID _TYPE_ID = ReflectTypeID::ClassAPResponseMessage;
  85. };
  86. class LoginCryptoDiffieHellmanResponse {
  87. public:
  88. std::vector<uint8_t> hmac;
  89. static constexpr ReflectTypeID _TYPE_ID = ReflectTypeID::ClassLoginCryptoDiffieHellmanResponse;
  90. };
  91. class LoginCryptoResponseUnion {
  92. public:
  93. std::optional<LoginCryptoDiffieHellmanResponse> diffie_hellman;
  94. static constexpr ReflectTypeID _TYPE_ID = ReflectTypeID::ClassLoginCryptoResponseUnion;
  95. };
  96. class CryptoResponseUnion {
  97. public:
  98. static constexpr ReflectTypeID _TYPE_ID = ReflectTypeID::ClassCryptoResponseUnion;
  99. };
  100. class PoWResponseUnion {
  101. public:
  102. static constexpr ReflectTypeID _TYPE_ID = ReflectTypeID::ClassPoWResponseUnion;
  103. };
  104. class ClientResponsePlaintext {
  105. public:
  106. LoginCryptoResponseUnion login_crypto_response;
  107. PoWResponseUnion pow_response;
  108. CryptoResponseUnion crypto_response;
  109. static constexpr ReflectTypeID _TYPE_ID = ReflectTypeID::ClassClientResponsePlaintext;
  110. };
  111. class ClientHello {
  112. public:
  113. BuildInfo build_info;
  114. LoginCryptoHelloUnion login_crypto_hello;
  115. std::vector<Cryptosuite> cryptosuites_supported;
  116. std::vector<uint8_t> client_nonce;
  117. std::optional<std::vector<uint8_t>> padding;
  118. std::optional<FeatureSet> feature_set;
  119. static constexpr ReflectTypeID _TYPE_ID = ReflectTypeID::ClassClientHello;
  120. };
  121. #endif