OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |