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

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

Issue 1132223002: Sanitize data before providing it to the CDM (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: windows change Created 5 years, 7 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/cdm/key_system_names.h » ('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/base64.h" 7 #include "base/base64.h"
8 #include "base/logging.h" 8 #include "base/logging.h"
9 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
10 10
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 VerifyKeyId(key, expected_key, expected_key_length); 64 VerifyKeyId(key, expected_key, expected_key_length);
65 } 65 }
66 66
67 void VerifyKeyId(std::vector<uint8> key, 67 void VerifyKeyId(std::vector<uint8> key,
68 const uint8* expected_key, 68 const uint8* expected_key,
69 int expected_key_length) { 69 int expected_key_length) {
70 std::vector<uint8> key_result(expected_key, 70 std::vector<uint8> key_result(expected_key,
71 expected_key + expected_key_length); 71 expected_key + expected_key_length);
72 EXPECT_EQ(key_result, key); 72 EXPECT_EQ(key_result, key);
73 } 73 }
74
75 KeyIdAndKeyPair MakeKeyIdAndKeyPair(const uint8* key,
76 int key_length,
77 const uint8* key_id,
78 int key_id_length) {
79 return std::make_pair(std::string(key_id, key_id + key_id_length),
80 std::string(key, key + key_length));
81 }
74 }; 82 };
75 83
76 TEST_F(JSONWebKeyTest, GenerateJWKSet) { 84 TEST_F(JSONWebKeyTest, GenerateJWKSet) {
77 const uint8 data1[] = { 0x01, 0x02 }; 85 const uint8 data1[] = { 0x01, 0x02 };
78 const uint8 data2[] = { 0x01, 0x02, 0x03, 0x04 }; 86 const uint8 data2[] = { 0x01, 0x02, 0x03, 0x04 };
79 const uint8 data3[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 87 const uint8 data3[] = { 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
80 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10 }; 88 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10 };
81 89
82 EXPECT_EQ("{\"keys\":[{\"k\":\"AQI\",\"kid\":\"AQI\",\"kty\":\"oct\"}]}", 90 EXPECT_EQ("{\"keys\":[{\"k\":\"AQI\",\"kid\":\"AQI\",\"kty\":\"oct\"}]}",
83 GenerateJWKSet(data1, arraysize(data1), data1, arraysize(data1))); 91 GenerateJWKSet(data1, arraysize(data1), data1, arraysize(data1)));
84 EXPECT_EQ( 92 EXPECT_EQ(
85 "{\"keys\":[{\"k\":\"AQIDBA\",\"kid\":\"AQIDBA\",\"kty\":\"oct\"}]}", 93 "{\"keys\":[{\"k\":\"AQIDBA\",\"kid\":\"AQIDBA\",\"kty\":\"oct\"}]}",
86 GenerateJWKSet(data2, arraysize(data2), data2, arraysize(data2))); 94 GenerateJWKSet(data2, arraysize(data2), data2, arraysize(data2)));
87 EXPECT_EQ("{\"keys\":[{\"k\":\"AQI\",\"kid\":\"AQIDBA\",\"kty\":\"oct\"}]}", 95 EXPECT_EQ("{\"keys\":[{\"k\":\"AQI\",\"kid\":\"AQIDBA\",\"kty\":\"oct\"}]}",
88 GenerateJWKSet(data1, arraysize(data1), data2, arraysize(data2))); 96 GenerateJWKSet(data1, arraysize(data1), data2, arraysize(data2)));
89 EXPECT_EQ("{\"keys\":[{\"k\":\"AQIDBA\",\"kid\":\"AQI\",\"kty\":\"oct\"}]}", 97 EXPECT_EQ("{\"keys\":[{\"k\":\"AQIDBA\",\"kid\":\"AQI\",\"kty\":\"oct\"}]}",
90 GenerateJWKSet(data2, arraysize(data2), data1, arraysize(data1))); 98 GenerateJWKSet(data2, arraysize(data2), data1, arraysize(data1)));
91 EXPECT_EQ( 99 EXPECT_EQ(
92 "{\"keys\":[{\"k\":\"AQIDBAUGBwgJCgsMDQ4PEA\",\"kid\":" 100 "{\"keys\":[{\"k\":\"AQIDBAUGBwgJCgsMDQ4PEA\",\"kid\":"
93 "\"AQIDBAUGBwgJCgsMDQ4PEA\",\"kty\":\"oct\"}]}", 101 "\"AQIDBAUGBwgJCgsMDQ4PEA\",\"kty\":\"oct\"}]}",
94 GenerateJWKSet(data3, arraysize(data3), data3, arraysize(data3))); 102 GenerateJWKSet(data3, arraysize(data3), data3, arraysize(data3)));
103
104 KeyIdAndKeyPairs keys;
105 keys.push_back(
106 MakeKeyIdAndKeyPair(data1, arraysize(data1), data1, arraysize(data1)));
107 EXPECT_EQ(
108 "{\"keys\":[{\"k\":\"AQI\",\"kid\":\"AQI\",\"kty\":\"oct\"}],\"type\":"
109 "\"temporary\"}",
110 GenerateJWKSet(keys, MediaKeys::TEMPORARY_SESSION));
111 keys.push_back(
112 MakeKeyIdAndKeyPair(data2, arraysize(data2), data2, arraysize(data2)));
113 EXPECT_EQ(
114 "{\"keys\":[{\"k\":\"AQI\",\"kid\":\"AQI\",\"kty\":\"oct\"},{\"k\":"
115 "\"AQIDBA\",\"kid\":\"AQIDBA\",\"kty\":\"oct\"}],\"type\":\"persistent-"
116 "license\"}",
117 GenerateJWKSet(keys, MediaKeys::PERSISTENT_LICENSE_SESSION));
118 keys.push_back(
119 MakeKeyIdAndKeyPair(data3, arraysize(data3), data3, arraysize(data3)));
120 EXPECT_EQ(
121 "{\"keys\":[{\"k\":\"AQI\",\"kid\":\"AQI\",\"kty\":\"oct\"},{\"k\":"
122 "\"AQIDBA\",\"kid\":\"AQIDBA\",\"kty\":\"oct\"},{\"k\":"
123 "\"AQIDBAUGBwgJCgsMDQ4PEA\",\"kid\":\"AQIDBAUGBwgJCgsMDQ4PEA\",\"kty\":"
124 "\"oct\"}],\"type\":\"persistent-release-message\"}",
125 GenerateJWKSet(keys, MediaKeys::PERSISTENT_RELEASE_MESSAGE_SESSION));
95 } 126 }
96 127
97 TEST_F(JSONWebKeyTest, ExtractValidJWKKeys) { 128 TEST_F(JSONWebKeyTest, ExtractValidJWKKeys) {
98 // Try an empty 'keys' dictionary. 129 // Try an empty 'keys' dictionary.
99 ExtractJWKKeysAndExpect("{ \"keys\": [] }", true, 0); 130 ExtractJWKKeysAndExpect("{ \"keys\": [] }", true, 0);
100 131
101 // Try a key list with one entry. 132 // Try a key list with one entry.
102 const std::string kJwksOneEntry = 133 const std::string kJwksOneEntry =
103 "{" 134 "{"
104 " \"keys\": [" 135 " \"keys\": ["
(...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after
600 key_ids.push_back(std::vector<uint8>(data3, data3 + arraysize(data3))); 631 key_ids.push_back(std::vector<uint8>(data3, data3 + arraysize(data3)));
601 std::vector<uint8> init_data3; 632 std::vector<uint8> init_data3;
602 CreateKeyIdsInitData(key_ids, &init_data3); 633 CreateKeyIdsInitData(key_ids, &init_data3);
603 std::string result3(init_data3.begin(), init_data3.end()); 634 std::string result3(init_data3.begin(), init_data3.end());
604 EXPECT_EQ(result3, 635 EXPECT_EQ(result3,
605 "{\"kids\":[\"AQI\",\"AQIDBA\",\"AQIDBAUGBwgJCgsMDQ4PEA\"]}"); 636 "{\"kids\":[\"AQI\",\"AQIDBA\",\"AQIDBAUGBwgJCgsMDQ4PEA\"]}");
606 } 637 }
607 638
608 } // namespace media 639 } // namespace media
609 640
OLDNEW
« no previous file with comments | « media/cdm/json_web_key.cc ('k') | media/cdm/key_system_names.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698