Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(370)

Side by Side Diff: media/cdm/json_web_key_unittest.cc

Issue 798583003: Encrypted Media: Check "alg":"A128KW" in AesDecryptor. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix AesDecryptorTest. Created 5 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « media/cdm/json_web_key.cc ('k') | media/test/data/eme_player_js/utils.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "media/cdm/json_web_key.h" 5 #include "media/cdm/json_web_key.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 namespace media { 10 namespace media {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 } 64 }
65 } 65 }
66 }; 66 };
67 67
68 TEST_F(JSONWebKeyTest, GenerateJWKSet) { 68 TEST_F(JSONWebKeyTest, GenerateJWKSet) {
69 const uint8 data1[] = { 0x01, 0x02 }; 69 const uint8 data1[] = { 0x01, 0x02 };
70 const uint8 data2[] = { 0x01, 0x02, 0x03, 0x04 }; 70 const uint8 data2[] = { 0x01, 0x02, 0x03, 0x04 };
71 const uint8 data3[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 71 const uint8 data3[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
72 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10 }; 72 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10 };
73 73
74 EXPECT_EQ("{\"keys\":[{\"k\":\"AQI\",\"kid\":\"AQI\",\"kty\":\"oct\"}]}",
75 GenerateJWKSet(data1, arraysize(data1), data1, arraysize(data1)));
76 EXPECT_EQ( 74 EXPECT_EQ(
77 "{\"keys\":[{\"k\":\"AQIDBA\",\"kid\":\"AQIDBA\",\"kty\":\"oct\"}]}", 75 "{\"keys\":[{\"alg\":\"A128KW\",\"k\":\"AQI\",\"kid\":\"AQI\",\"kty\":"
76 "\"oct\"}]}",
77 GenerateJWKSet(data1, arraysize(data1), data1, arraysize(data1)));
78 EXPECT_EQ(
79 "{\"keys\":[{\"alg\":\"A128KW\",\"k\":\"AQIDBA\",\"kid\":\"AQIDBA\","
80 "\"kty\":\"oct\"}]}",
78 GenerateJWKSet(data2, arraysize(data2), data2, arraysize(data2))); 81 GenerateJWKSet(data2, arraysize(data2), data2, arraysize(data2)));
79 EXPECT_EQ("{\"keys\":[{\"k\":\"AQI\",\"kid\":\"AQIDBA\",\"kty\":\"oct\"}]}",
80 GenerateJWKSet(data1, arraysize(data1), data2, arraysize(data2)));
81 EXPECT_EQ("{\"keys\":[{\"k\":\"AQIDBA\",\"kid\":\"AQI\",\"kty\":\"oct\"}]}",
82 GenerateJWKSet(data2, arraysize(data2), data1, arraysize(data1)));
83 EXPECT_EQ( 82 EXPECT_EQ(
84 "{\"keys\":[{\"k\":\"AQIDBAUGBwgJCgsMDQ4PEA\",\"kid\":" 83 "{\"keys\":[{\"alg\":\"A128KW\",\"k\":\"AQI\",\"kid\":\"AQIDBA\",\"kty\":"
84 "\"oct\"}]}",
85 GenerateJWKSet(data1, arraysize(data1), data2, arraysize(data2)));
86 EXPECT_EQ(
87 "{\"keys\":[{\"alg\":\"A128KW\",\"k\":\"AQIDBA\",\"kid\":\"AQI\",\"kty\":"
88 "\"oct\"}]}",
89 GenerateJWKSet(data2, arraysize(data2), data1, arraysize(data1)));
90 EXPECT_EQ(
91 "{\"keys\":[{\"alg\":\"A128KW\",\"k\":\"AQIDBAUGBwgJCgsMDQ4PEA\",\"kid\":"
85 "\"AQIDBAUGBwgJCgsMDQ4PEA\",\"kty\":\"oct\"}]}", 92 "\"AQIDBAUGBwgJCgsMDQ4PEA\",\"kty\":\"oct\"}]}",
86 GenerateJWKSet(data3, arraysize(data3), data3, arraysize(data3))); 93 GenerateJWKSet(data3, arraysize(data3), data3, arraysize(data3)));
87 } 94 }
88 95
89 TEST_F(JSONWebKeyTest, ExtractJWKKeys) { 96 TEST_F(JSONWebKeyTest, ExtractValidJWKKeys) {
90 // Try a simple JWK key (i.e. not in a set) 97 // Try an empty 'keys' dictionary.
91 const std::string kJwkSimple = 98 ExtractJWKKeysAndExpect("{ \"keys\": [] }", true, 0);
99
100 // Try a key list with one entry.
101 const std::string kJwksOneEntry =
92 "{" 102 "{"
93 " \"kty\": \"oct\"," 103 " \"keys\": ["
94 " \"kid\": \"AAECAwQFBgcICQoLDA0ODxAREhM\"," 104 " {"
95 " \"k\": \"FBUWFxgZGhscHR4fICEiIw\"" 105 " \"kty\": \"oct\","
106 " \"alg\": \"A128KW\","
107 " \"kid\": \"AAECAwQFBgcICQoLDA0ODxAREhM\","
108 " \"k\": \"FBUWFxgZGhscHR4fICEiIw\""
109 " }"
110 " ]"
96 "}"; 111 "}";
97 ExtractJWKKeysAndExpect(kJwkSimple, false, 0); 112 ExtractJWKKeysAndExpect(kJwksOneEntry, true, 1);
98 113
99 // Try a key list with multiple entries. 114 // Try a key list with multiple entries.
100 const std::string kJwksMultipleEntries = 115 const std::string kJwksMultipleEntries =
101 "{" 116 "{"
102 " \"keys\": [" 117 " \"keys\": ["
103 " {" 118 " {"
104 " \"kty\": \"oct\"," 119 " \"kty\": \"oct\","
120 " \"alg\": \"A128KW\","
105 " \"kid\": \"AAECAwQFBgcICQoLDA0ODxAREhM\"," 121 " \"kid\": \"AAECAwQFBgcICQoLDA0ODxAREhM\","
106 " \"k\": \"FBUWFxgZGhscHR4fICEiIw\"" 122 " \"k\": \"FBUWFxgZGhscHR4fICEiIw\""
107 " }," 123 " },"
108 " {" 124 " {"
109 " \"kty\": \"oct\"," 125 " \"kty\": \"oct\","
126 " \"alg\": \"A128KW\","
110 " \"kid\": \"JCUmJygpKissLS4vMA\"," 127 " \"kid\": \"JCUmJygpKissLS4vMA\","
111 " \"k\":\"MTIzNDU2Nzg5Ojs8PT4/QA\"" 128 " \"k\":\"MTIzNDU2Nzg5Ojs8PT4/QA\""
112 " }" 129 " }"
113 " ]" 130 " ]"
114 "}"; 131 "}";
115 ExtractJWKKeysAndExpect(kJwksMultipleEntries, true, 2); 132 ExtractJWKKeysAndExpect(kJwksMultipleEntries, true, 2);
116 133
117 // Try a key with no spaces and some \n plus additional fields. 134 // Try a key with no spaces and some \n plus additional fields.
118 const std::string kJwksNoSpaces = 135 const std::string kJwksNoSpaces =
119 "\n\n{\"something\":1,\"keys\":[{\n\n\"kty\":\"oct\",\"alg\":\"A128KW\"," 136 "\n\n{\"something\":1,\"keys\":[{\n\n\"kty\":\"oct\",\"alg\":\"A128KW\","
120 "\"kid\":\"AAECAwQFBgcICQoLDA0ODxAREhM\",\"k\":\"GawgguFyGrWKav7AX4VKUg" 137 "\"kid\":\"AAECAwQFBgcICQoLDA0ODxAREhM\",\"k\":\"GawgguFyGrWKav7AX4VKUg"
121 "\",\"foo\":\"bar\"}]}\n\n"; 138 "\",\"foo\":\"bar\"}]}\n\n";
122 ExtractJWKKeysAndExpect(kJwksNoSpaces, true, 1); 139 ExtractJWKKeysAndExpect(kJwksNoSpaces, true, 1);
123 140
141 // Try a list with multiple keys with the same kid.
142 const std::string kJwksDuplicateKids =
143 "{"
144 " \"keys\": ["
145 " {"
146 " \"kty\": \"oct\","
147 " \"alg\": \"A128KW\","
148 " \"kid\": \"JCUmJygpKissLS4vMA\","
149 " \"k\": \"FBUWFxgZGhscHR4fICEiIw\""
150 " },"
151 " {"
152 " \"kty\": \"oct\","
153 " \"alg\": \"A128KW\","
154 " \"kid\": \"JCUmJygpKissLS4vMA\","
155 " \"k\":\"MTIzNDU2Nzg5Ojs8PT4/QA\""
156 " }"
157 " ]"
158 "}";
159 ExtractJWKKeysAndExpect(kJwksDuplicateKids, true, 2);
160 }
161
162 TEST_F(JSONWebKeyTest, ExtractInvalidJWKKeys) {
163 // Try a simple JWK key (i.e. not in a set)
164 const std::string kJwkSimple =
165 "{"
166 " \"kty\": \"oct\","
167 " \"alg\": \"A128KW\","
168 " \"kid\": \"AAECAwQFBgcICQoLDA0ODxAREhM\","
169 " \"k\": \"FBUWFxgZGhscHR4fICEiIw\""
170 "}";
171 ExtractJWKKeysAndExpect(kJwkSimple, false, 0);
172
124 // Try some non-ASCII characters. 173 // Try some non-ASCII characters.
125 ExtractJWKKeysAndExpect( 174 ExtractJWKKeysAndExpect(
126 "This is not ASCII due to \xff\xfe\xfd in it.", false, 0); 175 "This is not ASCII due to \xff\xfe\xfd in it.", false, 0);
127 176
128 // Try some non-ASCII characters in an otherwise valid JWK. 177 // Try some non-ASCII characters in an otherwise valid JWK.
129 const std::string kJwksInvalidCharacters = 178 const std::string kJwksInvalidCharacters =
130 "\n\n{\"something\":1,\"keys\":[{\n\n\"kty\":\"oct\",\"alg\":\"A128KW\"," 179 "\n\n{\"something\":1,\"keys\":[{\n\n\"kty\":\"oct\",\"alg\":\"A128KW\","
131 "\"kid\":\"AAECAwQFBgcICQoLDA0ODxAREhM\",\"k\":\"\xff\xfe\xfd" 180 "\"kid\":\"AAECAwQFBgcICQoLDA0ODxAREhM\",\"k\":\"\xff\xfe\xfd"
132 "\",\"foo\":\"bar\"}]}\n\n"; 181 "\",\"foo\":\"bar\"}]}\n\n";
133 ExtractJWKKeysAndExpect(kJwksInvalidCharacters, false, 0); 182 ExtractJWKKeysAndExpect(kJwksInvalidCharacters, false, 0);
134 183
135 // Try a badly formatted key. Assume that the JSON parser is fully tested, 184 // Try a badly formatted key. Assume that the JSON parser is fully tested,
136 // so we won't try a lot of combinations. However, need a test to ensure 185 // so we won't try a lot of combinations. However, need a test to ensure
137 // that the code doesn't crash if invalid JSON received. 186 // that the code doesn't crash if invalid JSON received.
138 ExtractJWKKeysAndExpect("This is not a JSON key.", false, 0); 187 ExtractJWKKeysAndExpect("This is not a JSON key.", false, 0);
139 188
140 // Try passing some valid JSON that is not a dictionary at the top level. 189 // Try passing some valid JSON that is not a dictionary at the top level.
141 ExtractJWKKeysAndExpect("40", false, 0); 190 ExtractJWKKeysAndExpect("40", false, 0);
142 191
143 // Try an empty dictionary. 192 // Try an empty dictionary.
144 ExtractJWKKeysAndExpect("{ }", false, 0); 193 ExtractJWKKeysAndExpect("{ }", false, 0);
145 194
146 // Try an empty 'keys' dictionary.
147 ExtractJWKKeysAndExpect("{ \"keys\": [] }", true, 0);
148
149 // Try with 'keys' not a dictionary. 195 // Try with 'keys' not a dictionary.
150 ExtractJWKKeysAndExpect("{ \"keys\":\"1\" }", false, 0); 196 ExtractJWKKeysAndExpect("{ \"keys\":\"1\" }", false, 0);
151 197
152 // Try with 'keys' a list of integers. 198 // Try with 'keys' a list of integers.
153 ExtractJWKKeysAndExpect("{ \"keys\": [ 1, 2, 3 ] }", false, 0); 199 ExtractJWKKeysAndExpect("{ \"keys\": [ 1, 2, 3 ] }", false, 0);
154 200
155 // Try padding(=) at end of 'k' base64 string. 201 // Try padding(=) at end of 'k' base64 string.
156 const std::string kJwksWithPaddedKey = 202 const std::string kJwksWithPaddedKey =
157 "{" 203 "{"
158 " \"keys\": [" 204 " \"keys\": ["
159 " {" 205 " {"
160 " \"kty\": \"oct\"," 206 " \"kty\": \"oct\","
207 " \"alg\": \"A128KW\","
161 " \"kid\": \"AAECAw\"," 208 " \"kid\": \"AAECAw\","
162 " \"k\": \"BAUGBwgJCgsMDQ4PEBESEw==\"" 209 " \"k\": \"BAUGBwgJCgsMDQ4PEBESEw==\""
163 " }" 210 " }"
164 " ]" 211 " ]"
165 "}"; 212 "}";
166 ExtractJWKKeysAndExpect(kJwksWithPaddedKey, false, 0); 213 ExtractJWKKeysAndExpect(kJwksWithPaddedKey, false, 0);
167 214
168 // Try padding(=) at end of 'kid' base64 string. 215 // Try padding(=) at end of 'kid' base64 string.
169 const std::string kJwksWithPaddedKeyId = 216 const std::string kJwksWithPaddedKeyId =
170 "{" 217 "{"
171 " \"keys\": [" 218 " \"keys\": ["
172 " {" 219 " {"
173 " \"kty\": \"oct\"," 220 " \"kty\": \"oct\","
221 " \"alg\": \"A128KW\","
174 " \"kid\": \"AAECAw==\"," 222 " \"kid\": \"AAECAw==\","
175 " \"k\": \"BAUGBwgJCgsMDQ4PEBESEw\"" 223 " \"k\": \"BAUGBwgJCgsMDQ4PEBESEw\""
176 " }" 224 " }"
177 " ]" 225 " ]"
178 "}"; 226 "}";
179 ExtractJWKKeysAndExpect(kJwksWithPaddedKeyId, false, 0); 227 ExtractJWKKeysAndExpect(kJwksWithPaddedKeyId, false, 0);
180 228
181 // Try a key with invalid base64 encoding. 229 // Try a key with invalid base64 encoding.
182 const std::string kJwksWithInvalidBase64 = 230 const std::string kJwksWithInvalidBase64 =
183 "{" 231 "{"
184 " \"keys\": [" 232 " \"keys\": ["
185 " {" 233 " {"
186 " \"kty\": \"oct\"," 234 " \"kty\": \"oct\","
235 " \"alg\": \"A128KW\","
187 " \"kid\": \"!@#$%^&*()\"," 236 " \"kid\": \"!@#$%^&*()\","
188 " \"k\": \"BAUGBwgJCgsMDQ4PEBESEw\"" 237 " \"k\": \"BAUGBwgJCgsMDQ4PEBESEw\""
189 " }" 238 " }"
190 " ]" 239 " ]"
191 "}"; 240 "}";
192 ExtractJWKKeysAndExpect(kJwksWithInvalidBase64, false, 0); 241 ExtractJWKKeysAndExpect(kJwksWithInvalidBase64, false, 0);
193 242
194 // Empty key id. 243 // Empty key id.
195 const std::string kJwksWithEmptyKeyId = 244 const std::string kJwksWithEmptyKeyId =
196 "{" 245 "{"
197 " \"keys\": [" 246 " \"keys\": ["
198 " {" 247 " {"
199 " \"kty\": \"oct\"," 248 " \"kty\": \"oct\","
249 " \"alg\": \"A128KW\","
200 " \"kid\": \"\"," 250 " \"kid\": \"\","
201 " \"k\": \"BAUGBwgJCgsMDQ4PEBESEw\"" 251 " \"k\": \"BAUGBwgJCgsMDQ4PEBESEw\""
202 " }" 252 " }"
203 " ]" 253 " ]"
204 "}"; 254 "}";
205 ExtractJWKKeysAndExpect(kJwksWithEmptyKeyId, false, 0); 255 ExtractJWKKeysAndExpect(kJwksWithEmptyKeyId, false, 0);
256 }
206 257
207 // Try a list with multiple keys with the same kid. 258 TEST_F(JSONWebKeyTest, KeyType) {
208 const std::string kJwksDuplicateKids = 259 // Valid key type.
260 const std::string kJwksWithValidKeyType =
209 "{" 261 "{"
210 " \"keys\": [" 262 " \"keys\": ["
211 " {" 263 " {"
212 " \"kty\": \"oct\"," 264 " \"kty\": \"oct\","
213 " \"kid\": \"JCUmJygpKissLS4vMA\"," 265 " \"alg\": \"A128KW\","
214 " \"k\": \"FBUWFxgZGhscHR4fICEiIw\"" 266 " \"kid\": \"AAECAwQFBgcICQoLDA0ODxAREhM\","
215 " }," 267 " \"k\": \"BAUGBwgJCgsMDQ4PEBESEw\""
216 " {"
217 " \"kty\": \"oct\","
218 " \"kid\": \"JCUmJygpKissLS4vMA\","
219 " \"k\":\"MTIzNDU2Nzg5Ojs8PT4/QA\""
220 " }" 268 " }"
221 " ]" 269 " ]"
222 "}"; 270 "}";
223 ExtractJWKKeysAndExpect(kJwksDuplicateKids, true, 2); 271 ExtractJWKKeysAndExpect(kJwksWithValidKeyType, true, 1);
272
273 // Empty key type.
274 const std::string kJwksWithEmptyKeyType =
275 "{"
276 " \"keys\": ["
277 " {"
278 " \"kty\": \"\","
279 " \"alg\": \"A128KW\","
280 " \"kid\": \"AAECAwQFBgcICQoLDA0ODxAREhM\","
281 " \"k\": \"BAUGBwgJCgsMDQ4PEBESEw\""
282 " }"
283 " ]"
284 "}";
285 ExtractJWKKeysAndExpect(kJwksWithEmptyKeyType, false, 0);
286
287 // Key type is case sensitive.
288 const std::string kJwksWithUppercaseKeyType =
289 "{"
290 " \"keys\": ["
291 " {"
292 " \"kty\": \"OCT\","
293 " \"alg\": \"A128KW\","
294 " \"kid\": \"AAECAwQFBgcICQoLDA0ODxAREhM\","
295 " \"k\": \"BAUGBwgJCgsMDQ4PEBESEw\""
296 " }"
297 " ]"
298 "}";
299 ExtractJWKKeysAndExpect(kJwksWithUppercaseKeyType, false, 0);
300
301 // Wrong key type.
302 const std::string kJwksWithWrongKeyType =
303 "{"
304 " \"keys\": ["
305 " {"
306 " \"kty\": \"RSA\","
307 " \"alg\": \"A128KW\","
308 " \"kid\": \"AAECAwQFBgcICQoLDA0ODxAREhM\","
309 " \"k\": \"BAUGBwgJCgsMDQ4PEBESEw\""
310 " }"
311 " ]"
312 "}";
313 ExtractJWKKeysAndExpect(kJwksWithWrongKeyType, false, 0);
314 }
315
316 TEST_F(JSONWebKeyTest, Alg) {
317 // Valid alg.
318 const std::string kJwksWithValidAlg =
319 "{"
320 " \"keys\": ["
321 " {"
322 " \"kty\": \"oct\","
323 " \"alg\": \"A128KW\","
324 " \"kid\": \"AAECAwQFBgcICQoLDA0ODxAREhM\","
325 " \"k\": \"BAUGBwgJCgsMDQ4PEBESEw\""
326 " }"
327 " ]"
328 "}";
329 ExtractJWKKeysAndExpect(kJwksWithValidAlg, true, 1);
330
331 // Empty alg.
332 const std::string kJwksWithEmptyAlg =
333 "{"
334 " \"keys\": ["
335 " {"
336 " \"kty\": \"oct\","
337 " \"alg\": \"\","
338 " \"kid\": \"AAECAwQFBgcICQoLDA0ODxAREhM\","
339 " \"k\": \"BAUGBwgJCgsMDQ4PEBESEw\""
340 " }"
341 " ]"
342 "}";
343 ExtractJWKKeysAndExpect(kJwksWithEmptyAlg, false, 0);
344
345 // Alg is case sensitive.
346 const std::string kJwksWithLowercaseAlg =
347 "{"
348 " \"keys\": ["
349 " {"
350 " \"kty\": \"oct\","
351 " \"alg\": \"a128kw\","
352 " \"kid\": \"AAECAwQFBgcICQoLDA0ODxAREhM\","
353 " \"k\": \"BAUGBwgJCgsMDQ4PEBESEw\""
354 " }"
355 " ]"
356 "}";
357 ExtractJWKKeysAndExpect(kJwksWithLowercaseAlg, false, 0);
358
359 // Wrong alg.
360 const std::string kJwksWithWrongAlg =
361 "{"
362 " \"keys\": ["
363 " {"
364 " \"kty\": \"oct\","
365 " \"alg\": \"RS256\","
366 " \"kid\": \"AAECAwQFBgcICQoLDA0ODxAREhM\","
367 " \"k\": \"BAUGBwgJCgsMDQ4PEBESEw\""
368 " }"
369 " ]"
370 "}";
371 ExtractJWKKeysAndExpect(kJwksWithWrongAlg, false, 0);
224 } 372 }
225 373
226 TEST_F(JSONWebKeyTest, SessionType) { 374 TEST_F(JSONWebKeyTest, SessionType) {
227 ExtractSessionTypeAndExpect( 375 ExtractSessionTypeAndExpect(
228 "{\"keys\":[{\"k\":\"AQI\",\"kid\":\"AQI\",\"kty\":\"oct\"}]}", 376 "{\"keys\":[{\"alg\": "
229 true, 377 "\"A128KW\",\"k\":\"AQI\",\"kid\":\"AQI\",\"kty\":\"oct\"}]}",
230 MediaKeys::TEMPORARY_SESSION); 378 true, MediaKeys::TEMPORARY_SESSION);
231 ExtractSessionTypeAndExpect( 379 ExtractSessionTypeAndExpect(
232 "{\"keys\":[{\"k\":\"AQI\",\"kid\":\"AQI\",\"kty\":\"oct\"}],\"type\":" 380 "{\"keys\":[{\"alg\": "
381 "\"A128KW\",\"k\":\"AQI\",\"kid\":\"AQI\",\"kty\":\"oct\"}],\"type\":"
233 "\"temporary\"}", 382 "\"temporary\"}",
234 true, 383 true, MediaKeys::TEMPORARY_SESSION);
235 MediaKeys::TEMPORARY_SESSION);
236 ExtractSessionTypeAndExpect( 384 ExtractSessionTypeAndExpect(
237 "{\"keys\":[{\"k\":\"AQI\",\"kid\":\"AQI\",\"kty\":\"oct\"}],\"type\":" 385 "{\"keys\":[{\"alg\": "
386 "\"A128KW\",\"k\":\"AQI\",\"kid\":\"AQI\",\"kty\":\"oct\"}],\"type\":"
238 "\"persistent\"}", 387 "\"persistent\"}",
239 true, 388 true, MediaKeys::PERSISTENT_SESSION);
240 MediaKeys::PERSISTENT_SESSION);
241 ExtractSessionTypeAndExpect( 389 ExtractSessionTypeAndExpect(
242 "{\"keys\":[{\"k\":\"AQI\",\"kid\":\"AQI\",\"kty\":\"oct\"}],\"type\":" 390 "{\"keys\":[{\"alg\": "
391 "\"A128KW\",\"k\":\"AQI\",\"kid\":\"AQI\",\"kty\":\"oct\"}],\"type\":"
243 "\"unknown\"}", 392 "\"unknown\"}",
244 false, 393 false, MediaKeys::TEMPORARY_SESSION);
245 MediaKeys::TEMPORARY_SESSION);
246 ExtractSessionTypeAndExpect( 394 ExtractSessionTypeAndExpect(
247 "{\"keys\":[{\"k\":\"AQI\",\"kid\":\"AQI\",\"kty\":\"oct\"}],\"type\":3}", 395 "{\"keys\":[{\"alg\": "
248 false, 396 "\"A128KW\",\"k\":\"AQI\",\"kid\":\"AQI\",\"kty\":\"oct\"}],\"type\":3}",
249 MediaKeys::TEMPORARY_SESSION); 397 false, MediaKeys::TEMPORARY_SESSION);
250 } 398 }
251 399
252 TEST_F(JSONWebKeyTest, CreateLicense) { 400 TEST_F(JSONWebKeyTest, CreateLicense) {
253 const uint8 data1[] = { 0x01, 0x02 }; 401 const uint8 data1[] = { 0x01, 0x02 };
254 const uint8 data2[] = { 0x01, 0x02, 0x03, 0x04 }; 402 const uint8 data2[] = { 0x01, 0x02, 0x03, 0x04 };
255 const uint8 data3[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 403 const uint8 data3[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
256 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10 }; 404 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10 };
257 405
258 CreateLicenseAndExpect(data1, 406 CreateLicenseAndExpect(data1,
259 arraysize(data1), 407 arraysize(data1),
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 460
313 // Correct tag, but list doesn't contain a string. 461 // Correct tag, but list doesn't contain a string.
314 ExtractKeyFromLicenseAndExpect("{\"kids\":[[\"AQI\"]]}", false, NULL, 0); 462 ExtractKeyFromLicenseAndExpect("{\"kids\":[[\"AQI\"]]}", false, NULL, 0);
315 463
316 // Correct tag, but invalid base64 encoding. 464 // Correct tag, but invalid base64 encoding.
317 ExtractKeyFromLicenseAndExpect("{\"kids\":[\"!@#$%^&*()\"]}", false, NULL, 0); 465 ExtractKeyFromLicenseAndExpect("{\"kids\":[\"!@#$%^&*()\"]}", false, NULL, 0);
318 } 466 }
319 467
320 } // namespace media 468 } // namespace media
321 469
OLDNEW
« no previous file with comments | « media/cdm/json_web_key.cc ('k') | media/test/data/eme_player_js/utils.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698