| Index: media/cdm/json_web_key_unittest.cc
|
| diff --git a/media/cdm/json_web_key_unittest.cc b/media/cdm/json_web_key_unittest.cc
|
| index 57a57c290ca7bb5ee1157f62bf2f31ba0da92052..fa5f823169611e7baa34054ff1de768d9218e1ce 100644
|
| --- a/media/cdm/json_web_key_unittest.cc
|
| +++ b/media/cdm/json_web_key_unittest.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "media/cdm/json_web_key.h"
|
|
|
| +#include "base/base64.h"
|
| #include "base/logging.h"
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| @@ -125,7 +126,7 @@ TEST_F(JSONWebKeyTest, ExtractValidJWKKeys) {
|
| " \"kty\": \"oct\","
|
| " \"alg\": \"A128KW\","
|
| " \"kid\": \"JCUmJygpKissLS4vMA\","
|
| - " \"k\":\"MTIzNDU2Nzg5Ojs8PT4/QA\""
|
| + " \"k\":\"MTIzNDU2Nzg5Ojs8PT4_QA\""
|
| " }"
|
| " ]"
|
| "}";
|
| @@ -152,7 +153,7 @@ TEST_F(JSONWebKeyTest, ExtractValidJWKKeys) {
|
| " \"kty\": \"oct\","
|
| " \"alg\": \"A128KW\","
|
| " \"kid\": \"JCUmJygpKissLS4vMA\","
|
| - " \"k\":\"MTIzNDU2Nzg5Ojs8PT4/QA\""
|
| + " \"k\":\"MTIzNDU2Nzg5Ojs8PT4_QA\""
|
| " }"
|
| " ]"
|
| "}";
|
| @@ -471,5 +472,31 @@ TEST_F(JSONWebKeyTest, ExtractLicense) {
|
| ExtractKeyFromLicenseAndExpect("{\"kids\":[\"!@#$%^&*()\"]}", false, NULL, 0);
|
| }
|
|
|
| +TEST_F(JSONWebKeyTest, Base64UrlEncoding) {
|
| + const uint8 data1[] = { 0xfb, 0xfd, 0xfb, 0xfd, 0xfb, 0xfd, 0xfb };
|
| +
|
| + // Verify that |data1| contains invalid base64url characters '+' and '/'
|
| + // and is padded with = when converted to base64.
|
| + std::string encoded_text;
|
| + base::Base64Encode(
|
| + std::string(reinterpret_cast<const char*>(&data1[0]), arraysize(data1)),
|
| + &encoded_text);
|
| + EXPECT_EQ(encoded_text, "+/37/fv9+w==");
|
| + EXPECT_NE(encoded_text.find('+'), std::string::npos);
|
| + EXPECT_NE(encoded_text.find('/'), std::string::npos);
|
| + EXPECT_NE(encoded_text.find('='), std::string::npos);
|
| +
|
| + // base64url characters '-' and '_' not in base64 encoding.
|
| + EXPECT_EQ(encoded_text.find('-'), std::string::npos);
|
| + EXPECT_EQ(encoded_text.find('_'), std::string::npos);
|
| +
|
| + CreateLicenseAndExpect(data1, arraysize(data1), MediaKeys::TEMPORARY_SESSION,
|
| + "{\"kids\":[\"-_37_fv9-w\"],\"type\":\"temporary\"}");
|
| +
|
| + ExtractKeyFromLicenseAndExpect(
|
| + "{\"kids\":[\"-_37_fv9-w\"],\"type\":\"temporary\"}", true, data1,
|
| + arraysize(data1));
|
| +}
|
| +
|
| } // namespace media
|
|
|
|
|