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

Unified Diff: media/cdm/json_web_key_unittest.cc

Issue 934423002: Encode JSON key IDs and keys as base64url (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: test Created 5 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/cdm/json_web_key.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « media/cdm/json_web_key.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698