keyexchange.proto 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. syntax = "proto2";
  2. message LoginCryptoDiffieHellmanChallenge {
  3. required bytes gs = 0xa;
  4. }
  5. message LoginCryptoChallengeUnion {
  6. optional LoginCryptoDiffieHellmanChallenge diffie_hellman = 0xa;
  7. }
  8. enum Product {
  9. PRODUCT_CLIENT = 0x0;
  10. PRODUCT_LIBSPOTIFY= 0x1;
  11. PRODUCT_MOBILE = 0x2;
  12. PRODUCT_PARTNER = 0x3;
  13. PRODUCT_LIBSPOTIFY_EMBEDDED = 0x5;
  14. }
  15. message LoginCryptoDiffieHellmanHello {
  16. required bytes gc = 0xa;
  17. required uint32 server_keys_known = 0x14;
  18. }
  19. message LoginCryptoHelloUnion {
  20. optional LoginCryptoDiffieHellmanHello diffie_hellman = 0xa;
  21. }
  22. enum Platform2 {
  23. PLATFORM_WIN32_X86 = 0x0;
  24. PLATFORM_OSX_X86 = 0x1;
  25. PLATFORM_LINUX_X86 = 0x2;
  26. PLATFORM_IPHONE_ARM = 0x3;
  27. PLATFORM_S60_ARM = 0x4;
  28. PLATFORM_OSX_PPC = 0x5;
  29. PLATFORM_ANDROID_ARM = 0x6;
  30. PLATFORM_WINDOWS_CE_ARM = 0x7;
  31. PLATFORM_LINUX_X86_64 = 0x8;
  32. PLATFORM_OSX_X86_64 = 0x9;
  33. PLATFORM_PALM_ARM = 0xa;
  34. PLATFORM_LINUX_SH = 0xb;
  35. PLATFORM_FREEBSD_X86 = 0xc;
  36. PLATFORM_FREEBSD_X86_64 = 0xd;
  37. PLATFORM_BLACKBERRY_ARM = 0xe;
  38. PLATFORM_SONOS = 0xf;
  39. PLATFORM_LINUX_MIPS = 0x10;
  40. PLATFORM_LINUX_ARM = 0x11;
  41. PLATFORM_LOGITECH_ARM = 0x12;
  42. PLATFORM_LINUX_BLACKFIN = 0x13;
  43. PLATFORM_WP7_ARM = 0x14;
  44. PLATFORM_ONKYO_ARM = 0x15;
  45. PLATFORM_QNXNTO_ARM = 0x16;
  46. PLATFORM_BCO_ARM = 0x17;
  47. }
  48. enum Cryptosuite {
  49. CRYPTO_SUITE_SHANNON = 0x0;
  50. CRYPTO_SUITE_RC4_SHA1_HMAC = 0x1;
  51. }
  52. message BuildInfo {
  53. required Product product = 0xa;
  54. required Platform2 platform = 0x1e;
  55. required uint64 version = 0x28;
  56. }
  57. message FeatureSet {
  58. optional bool autoupdate2 = 0x1;
  59. }
  60. message APChallenge {
  61. required LoginCryptoChallengeUnion login_crypto_challenge = 0xa;
  62. }
  63. message APResponseMessage {
  64. optional APChallenge challenge = 0xa;
  65. }
  66. message LoginCryptoDiffieHellmanResponse {
  67. required bytes hmac = 0xa;
  68. }
  69. message LoginCryptoResponseUnion {
  70. optional LoginCryptoDiffieHellmanResponse diffie_hellman = 0xa;
  71. }
  72. message CryptoResponseUnion {
  73. }
  74. message PoWResponseUnion {
  75. }
  76. message ClientResponsePlaintext {
  77. required LoginCryptoResponseUnion login_crypto_response = 0xa;
  78. required PoWResponseUnion pow_response = 0x14;
  79. required CryptoResponseUnion crypto_response = 0x1e;
  80. }
  81. message ClientHello {
  82. required BuildInfo build_info = 0xa;
  83. required LoginCryptoHelloUnion login_crypto_hello = 0x32;
  84. repeated Cryptosuite cryptosuites_supported = 0x1e;
  85. required bytes client_nonce = 0x3c;
  86. optional bytes padding = 0x46;
  87. optional FeatureSet feature_set = 0x50;
  88. }