1syntax = "proto2"; 2 3message ClientResponseEncrypted { 4 required LoginCredentials login_credentials = 0xa; 5 optional AccountCreation account_creation = 0x14; 6 optional FingerprintResponseUnion fingerprint_response = 0x1e; 7 optional PeerTicketUnion peer_ticket = 0x28; 8 required SystemInfo system_info = 0x32; 9 optional string platform_model = 0x3c; 10 optional string version_string = 0x46; 11 optional LibspotifyAppKey appkey = 0x50; 12 optional ClientInfo client_info = 0x5a; 13} 14 15message LoginCredentials { 16 optional string username = 0xa; 17 required AuthenticationType typ = 0x14; 18 optional bytes auth_data = 0x1e; 19} 20 21enum AuthenticationType { 22 AUTHENTICATION_USER_PASS = 0x0; 23 AUTHENTICATION_STORED_SPOTIFY_CREDENTIALS = 0x1; 24 AUTHENTICATION_STORED_FACEBOOK_CREDENTIALS = 0x2; 25 AUTHENTICATION_SPOTIFY_TOKEN = 0x3; 26 AUTHENTICATION_FACEBOOK_TOKEN = 0x4; 27} 28 29enum AccountCreation { 30 ACCOUNT_CREATION_ALWAYS_PROMPT = 0x1; 31 ACCOUNT_CREATION_ALWAYS_CREATE = 0x3; 32} 33 34message FingerprintResponseUnion { 35 optional FingerprintGrainResponse grain = 0xa; 36 optional FingerprintHmacRipemdResponse hmac_ripemd = 0x14; 37} 38 39message FingerprintGrainResponse { 40 required bytes encrypted_key = 0xa; 41} 42 43message FingerprintHmacRipemdResponse { 44 required bytes hmac = 0xa; 45} 46 47message PeerTicketUnion { 48 optional PeerTicketPublicKey public_key = 0xa; 49 optional PeerTicketOld old_ticket = 0x14; 50} 51 52message PeerTicketPublicKey { 53 required bytes public_key = 0xa; 54} 55 56message PeerTicketOld { 57 required bytes peer_ticket = 0xa; 58 required bytes peer_ticket_signature = 0x14; 59} 60 61message SystemInfo { 62 required CpuFamily cpu_family = 0xa; 63 optional uint32 cpu_subtype = 0x14; 64 optional uint32 cpu_ext = 0x1e; 65 optional Brand brand = 0x28; 66 optional uint32 brand_flags = 0x32; 67 required Os os = 0x3c; 68 optional uint32 os_version = 0x46; 69 optional uint32 os_ext = 0x50; 70 optional string system_information_string = 0x5a; 71 optional string device_id = 0x64; 72} 73 74enum CpuFamily { 75 CPU_UNKNOWN = 0x0; 76 CPU_X86 = 0x1; 77 CPU_X86_64 = 0x2; 78 CPU_PPC = 0x3; 79 CPU_PPC_64 = 0x4; 80 CPU_ARM = 0x5; 81 CPU_IA64 = 0x6; 82 CPU_SH = 0x7; 83 CPU_MIPS = 0x8; 84 CPU_BLACKFIN = 0x9; 85} 86 87enum Brand { 88 BRAND_UNBRANDED = 0x0; 89 BRAND_INQ = 0x1; 90 BRAND_HTC = 0x2; 91 BRAND_NOKIA = 0x3; 92} 93 94enum Os { 95 OS_UNKNOWN = 0x0; 96 OS_WINDOWS = 0x1; 97 OS_OSX = 0x2; 98 OS_IPHONE = 0x3; 99 OS_S60 = 0x4; 100 OS_LINUX = 0x5; 101 OS_WINDOWS_CE = 0x6; 102 OS_ANDROID = 0x7; 103 OS_PALM = 0x8; 104 OS_FREEBSD = 0x9; 105 OS_BLACKBERRY = 0xa; 106 OS_SONOS = 0xb; 107 OS_LOGITECH = 0xc; 108 OS_WP7 = 0xd; 109 OS_ONKYO = 0xe; 110 OS_PHILIPS = 0xf; 111 OS_WD = 0x10; 112 OS_VOLVO = 0x11; 113 OS_TIVO = 0x12; 114 OS_AWOX = 0x13; 115 OS_MEEGO = 0x14; 116 OS_QNXNTO = 0x15; 117 OS_BCO = 0x16; 118} 119 120message LibspotifyAppKey { 121 required uint32 version = 0x1; 122 required bytes devkey = 0x2; 123 required bytes signature = 0x3; 124 required string useragent = 0x4; 125 required bytes callback_hash = 0x5; 126} 127 128message ClientInfo { 129 optional bool limited = 0x1; 130 optional ClientInfoFacebook fb = 0x2; 131 optional string language = 0x3; 132} 133 134message ClientInfoFacebook { 135 optional string machine_id = 0x1; 136} 137 138message APWelcome { 139 required string canonical_username = 0xa; 140 required AccountType account_type_logged_in = 0x14; 141 required AccountType credentials_type_logged_in = 0x19; 142 required AuthenticationType reusable_auth_credentials_type = 0x1e; 143 required bytes reusable_auth_credentials = 0x28; 144 optional bytes lfs_secret = 0x32; 145 optional AccountInfo account_info = 0x3c; 146 optional AccountInfoFacebook fb = 0x46; 147} 148 149enum AccountType { 150 Spotify = 0x0; 151 Facebook = 0x1; 152} 153 154message AccountInfo { 155 optional AccountInfoSpotify spotify = 0x1; 156 optional AccountInfoFacebook facebook = 0x2; 157} 158 159message AccountInfoSpotify { 160} 161 162message AccountInfoFacebook { 163 optional string access_token = 0x1; 164 optional string machine_id = 0x2; 165} 166