Certificate provisioning verification
bug: 8620943 This is a merge of changes made to the Widevine CDM repository during certificate provisioning verification. The following changes are included: Fixes for certificate based licensing https://widevine-internal-review.googlesource.com/#/c/5162/ Base64 encode and decode now handles non-multiple of 24-bits input https://widevine-internal-review.googlesource.com/#/c/4981/ Fixed issues with device provisioning response handling https://widevine-internal-review.googlesource.com/#/c/5153/ Persistent storage to support device certificates https://widevine-internal-review.googlesource.com/#/c/5161/ Enable loading of certificates https://widevine-internal-review.googlesource.com/#/c/5172/ Provide license server url https://widevine-internal-review.googlesource.com/#/c/5173/ Change-Id: I0c032c1ae0055dcc1a7a77ad4b0ea0898030dc7d
This commit is contained in:
193
libwvdrmengine/cdm/core/test/base64_test.cpp
Normal file
193
libwvdrmengine/cdm/core/test/base64_test.cpp
Normal file
@@ -0,0 +1,193 @@
|
||||
// Copyright 2013 Google Inc. All Rights Reserved.
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include "log.h"
|
||||
#include "string_conversions.h"
|
||||
|
||||
namespace {
|
||||
std::string kMultipleOf24BitsData("Good day!");
|
||||
std::string kOneByteOverData("Hello Googler");
|
||||
std::string kTwoBytesOverData("Hello Googlers");
|
||||
std::string kMultipleOf24BitsB64Data("R29vZCBkYXkh");
|
||||
std::string kOneByteOverB64Data("SGVsbG8gR29vZ2xlcg==");
|
||||
std::string kTwoBytesOverB64Data("SGVsbG8gR29vZ2xlcnM=");
|
||||
std::string kTestData =
|
||||
"\030\361\\\366\267> \331\210\360\\-\311:\324\256\376"
|
||||
"\261\234\241\326d\326\177\346\346\223\333Y\305\214\330";
|
||||
std::string kB64TestData = "GPFc9rc-INmI8FwtyTrUrv6xnKHWZNZ_5uaT21nFjNg=";
|
||||
std::string kB64ShortString("r-LpoZcbbr2KtoPaFnuWTVBh4Gup1k8vn0ClW2qm32A=");
|
||||
std::string kB64LongString =
|
||||
"CrAJYTyIdLPiA2jBzMskbE_gFQj69wv23VlJ2e3MBKtK4nJwKyNYGyyluqKo"
|
||||
"TP751tvoADf86iLrf73mEzF58eSlaOjCpJRf2R3dojbNeSTy3JICmCc8vKtMjZRX9QWTvJbq_cg"
|
||||
"yMB8FQC8enuYhOaw1yJDYyCFHgik34NrUVUfmvaKKdSKQimqAZmjXi6P0znAn-XdPtz2xJVRxZp"
|
||||
"NH3QCD1bGcH_O1ercBW2JwF9KNalKFsxQrBhIwvyx-q-Ah4vf4r3M2HzY6JTHvcYGGc7dJNA3Xe"
|
||||
"WfCrYIvg0SGCP_z7Y2wICIA36VMwR3gnwNZlKkx6WGCCgsaU6IbLm4HpRBZfajuiOlasoYN4z1R"
|
||||
"lQ14Z32fdaFy8xOqLl-ZukxjWa7wv9zOSveH6JcHap1FS3R-RZ7E5WhfjxSTS0nWWZgmAjS2PkP"
|
||||
"9g4GPNsnpsrVymI39j6R6jPoc3__2EGN6qAvmp4pFKR7lQyslgNn2vYLuE0Ps5mIXVkxNiZOO3T"
|
||||
"jxgZyHaHOm1KmAZKI0EfddMATJCTt-UeLG3haqS_pYaBWcQ_xzWhoEHWU7_6ZaWrWemV8CVCg6s"
|
||||
"OB1SRI5MrkRBBSV0r8UKddLJGthZVjuTG75KK72KE9yhe86mCadvfVYe5keJ5GOC-t1EiFzBo4c"
|
||||
"4oqwkOCkkmYX_BEuZ3pOWztFp1_Br2Tl_fziw4O2vNIPCXB9yEewV6PkYPziTue3x4vRqD_mYjm"
|
||||
"1ia8fxISQnEC0vrqvrFFs9fLAHPlsvaRFnhv_XKpRwFoBdfqWTakb3k6uRz0Oh2SJ8euzFIyQNB"
|
||||
"efesMWk45DSrQjnlwlKXwZSiDKjAss0W2WwIb9F_x5LdB1Aa-CBudLVdxf62ggYaNZ57qx3YeHA"
|
||||
"jkqMGIF7Fq09D4OxM0jRsnrmXbJWKleUpJi7nHJgQGZk2ifN95gjuTNcRaGfYXMOsDoWdkrNAq0"
|
||||
"LScsPB06xEUR0DcO9vWx0zAEK7gsxxHziR7ZaYiIIkPysRR92r2NoLFPOUXf8j8ait-51jZmPKn"
|
||||
"bD6adieLy6ujSl907QsUgyGvokLs1OCsYHZr-X6vnyMjdk4G3QfmWwRepD_CMyXGvtLbTNCto7E"
|
||||
"L_M2yPZveAwYWwNlBtWK21gwIU2dgY298z7_S6jaQBc29f25sREjvN793ttYsPaeyom08qHYDnb"
|
||||
"jae3XX-2qqde6AGXlv__jO8WDZ5od6DWu2ThqV10ijVGFfGniRsSruzq0iq8zuAqTOGhmA9Dw7b"
|
||||
"rNlI95P4LpJA5pbjmNdnX7CQa2oHUuojmwlXRYuOA28PNEf-sc7ZPmMyFzedJi4EpkqzeQspEdH"
|
||||
"yNMf23iEjK6GOff7dgAaxg9vYHyprhkEml4BdmFVYwCYQy8o6KRcA0NgJb8c3tg4d3aRXWp6L-F"
|
||||
"sVhwqvq6FLOunSTNRIqhr2mOjRpU5w4mx-9GJRtk4XEcKT9YgUHGOUjGwfhQ5gBQDyZZVTddIUb"
|
||||
"MOThsSg7zr38oUCfgXeZaai3X2foKo1Bt94Q_q18dw5xNAN5e7rSwfilltHL23zbZduuhWkvp8S"
|
||||
"dag_NbO2C4IRMkzbjQBmiO9ixjXRhdqHlRRWcfR0wbQvEhD47egRVfnhKZ0W9G2-FGhyGuwJCq4"
|
||||
"CCAISEAfZ_94TqpXBImeAUzYhNr0Y48SbiwUijgIwggEKAoIBAQDRigR9nFm4mfBUh1Y3SGyOcF"
|
||||
"E-yK2NtfDiQe9l70KtkOeH4sB6MMB8g1QKPbUE8SBjPvXVJC_2DAWKjALzk4Aw-K-VmYe_Ag9CH"
|
||||
"JiS-XcfUYEGgK4jVMxadEq3LufEEREKUZnzjgQlR39dzgjFqIrC1bwfy3_99RsjPt6QpWPg36PI"
|
||||
"O4UKlmwBDTFzSOJB-4IV8Opy5Zv84BqPuyO9P5e3bXj_shRfy_XAGG2HGP_PpOCZWEfxuce0Iyu"
|
||||
"vpTPLQpTOgNw-VvUBGCWMZFoERopmqp_pQwWZ2a-EwlT_vvYY4SkuNjflBskR70xz4QzEo9665g"
|
||||
"k6I-HbHrTv29KEiAllAgMBAAEomSASgAIkKz1CSdFJVKcpO56jW0vsjKp92_cdqXBSEY3nuhzug"
|
||||
"_LFluMJx_IqATUcCOY-w6w0yKn2ezfZGE0MDIaCngEgQFI_DRoaSOBNNeirF59uYM0sK3P2eGS9"
|
||||
"G6F0l-OUXJdSO0b_LO8AbAK9LA3j7UHaajupJI1mdc4VtJfPRTsml2vIeKhDWXWaSvmeHgfF_tp"
|
||||
"-OV7oPuk6Ub26xpCp2He2rEAblCYEl25Zlz97K4DhyTOV5_xuSdSt-KbTLY9cWM5i9ncND1RzCc"
|
||||
"4qOixKarnMM5DdpZhs3B5xVj3yBAM1mVxPD2sZnqHSEN2EK7BMlHEnnyxhX0MGE36TQZR7P-I-G"
|
||||
"rUFCq8CCAESEDAxMjM0NTY3ODlBQkNERUYYspIEIo4CMIIBCgKCAQEApwA2YGXcvVRaKkC04RWU"
|
||||
"WBFPlFjd3qcfPCzgiAkpYVdnXlZ-7iePWTSaKqqdtE76p2rUyXpTwU6f4zT3PbfJEEdPKNo_zjF"
|
||||
"7_QYQ6_e-kvmv-z5o2u4aZEzzKfJznjnY9m_YsoCCcY61pPLCPs0KyrYEzZoTi1RzVCVUjL6Yem"
|
||||
"et2rNOs_qCqEpnmFZXVHHNEn_towHAaoskA5aIvpdmKrxTyYMGUVqIZRMY5Drta_FhW0zIHvTCr"
|
||||
"gheLV_4En-i_LshGDDa_kD7AcouNw7O3XaHgkYLOnePwHIHLH-dHoZb7Scp3wOXYu9E01s925xe"
|
||||
"G3s5tAttBGu7uyxfz7N6BQIDAQABKNKF2MwEEoADe9NAqNAxHpU13bMgz8LPySZJU8hY1RLwcfT"
|
||||
"UM47Xb3m-F-s2cfI7w08668f79kD45uRRzkVc8GbRIlVyzVC0WgIvtxEkYRKfgF_J7snUe2J2NN"
|
||||
"1FrkK7H3oYhcfPyYZH_SPZJr5HPoBFQTmS5A4l24U1dzQ6Z7_q-oS6uT0DiagTnzWhEg6AEnIkT"
|
||||
"sJtK3cZuKGYq3NDefZ7nslPuLXxdXl6SAEOtrk-RvCY6EBqYOuPUXgxXOEPbyM289R6aHQyPPYw"
|
||||
"qs9Pt9_E4BuMqCsbf5H5mLms9FA-wRx6mK2IaOboT4tf9_YObp3hVeL3WyxzXncETzJdE1GPGlO"
|
||||
"t_x5S_MylgJKbiWQYSdmqs3fzYExunw3wvI4tPHT_O8A_xKjyTEAvE5cBuCkfjwT716qUOzFUzF"
|
||||
"gZYLHnFiQLZekZUbUUlWY_CwU9Cv0UtxqQ6Oa835_Ug8_n1BwX6BPbmbcWe2Y19laSnDWg4JBNl"
|
||||
"F2CyP9N75jPtW9rVfjUSqKEPOwaIgwzNDkyMjM3NDcAAAA=";
|
||||
}
|
||||
|
||||
namespace wvcdm {
|
||||
|
||||
class Base64Test : public testing::Test {
|
||||
public:
|
||||
Base64Test() {}
|
||||
~Base64Test() {}
|
||||
|
||||
};
|
||||
|
||||
TEST_F(Base64Test, Base64MultipleOf24BitsTest)
|
||||
{
|
||||
// encodes string
|
||||
std::vector<uint8_t> message_vector(kMultipleOf24BitsData.begin(),
|
||||
kMultipleOf24BitsData.end());
|
||||
std::string message_b64 = Base64SafeEncode(message_vector);
|
||||
|
||||
// decodes string
|
||||
std::vector<uint8_t> result_vector = Base64SafeDecode(message_b64);
|
||||
std::string result;
|
||||
result.assign(result_vector.begin(), result_vector.end());
|
||||
EXPECT_STREQ(kMultipleOf24BitsData.data(), result.data());
|
||||
}
|
||||
|
||||
TEST_F(Base64Test, Base64OneByteOverTest)
|
||||
{
|
||||
// encodes string
|
||||
std::vector<uint8_t> message_vector(kOneByteOverData.begin(),
|
||||
kOneByteOverData.end());
|
||||
std::string message_b64 = Base64SafeEncode(message_vector);
|
||||
|
||||
// decodes string
|
||||
std::vector<uint8_t> result_vector = Base64SafeDecode(message_b64);
|
||||
std::string result;
|
||||
result.assign(result_vector.begin(), result_vector.end());
|
||||
EXPECT_STREQ(kOneByteOverData.data(), result.data());
|
||||
}
|
||||
|
||||
TEST_F(Base64Test, Base64TwoBytesOverTest)
|
||||
{
|
||||
// encodes string
|
||||
std::vector<uint8_t> message_vector(kTwoBytesOverData.begin(),
|
||||
kTwoBytesOverData.end());
|
||||
std::string message_b64 = Base64SafeEncode(message_vector);
|
||||
|
||||
// decodes string
|
||||
std::vector<uint8_t> result_vector = Base64SafeDecode(message_b64);
|
||||
std::string result;
|
||||
result.assign(result_vector.begin(), result_vector.end());
|
||||
EXPECT_STREQ(kTwoBytesOverData.data(), result.data());
|
||||
}
|
||||
|
||||
TEST_F(Base64Test, Base64EncodeTest)
|
||||
{
|
||||
// encodes string
|
||||
std::vector<uint8_t> message_vector(kTestData.begin(), kTestData.end());
|
||||
std::string message_b64 = Base64SafeEncode(message_vector);
|
||||
std::string result;
|
||||
result.assign(message_b64.begin(), message_b64.end());
|
||||
EXPECT_STREQ(kB64TestData.data(), result.data());
|
||||
|
||||
// decodes string
|
||||
std::vector<uint8_t> result_vector = Base64SafeDecode(message_b64);
|
||||
result.clear();
|
||||
result.assign(result_vector.begin(), result_vector.end());
|
||||
EXPECT_STREQ(kTestData.data(), result.data());
|
||||
}
|
||||
|
||||
TEST_F(Base64Test, Base64MultipleOf24BitsDecodeTest)
|
||||
{
|
||||
// decodes string
|
||||
std::vector<uint8_t> decoded_vector = Base64SafeDecode(kMultipleOf24BitsB64Data);
|
||||
std::string result;
|
||||
result.assign(decoded_vector.begin(), decoded_vector.end());
|
||||
EXPECT_STREQ(kMultipleOf24BitsData.data(), result.data());
|
||||
|
||||
// encodes string
|
||||
std::string b64_string = Base64SafeEncode(decoded_vector);
|
||||
EXPECT_STREQ(kMultipleOf24BitsB64Data.data(), b64_string.data());
|
||||
}
|
||||
|
||||
TEST_F(Base64Test, Base64OneByteOverDecodeTest)
|
||||
{
|
||||
// decodes string
|
||||
std::vector<uint8_t> decoded_vector = Base64SafeDecode(kOneByteOverB64Data);
|
||||
std::string result;
|
||||
result.assign(decoded_vector.begin(), decoded_vector.end());
|
||||
EXPECT_STREQ(kOneByteOverData.data(), result.data());
|
||||
|
||||
// encodes string
|
||||
std::string b64_string = Base64SafeEncode(decoded_vector);
|
||||
EXPECT_STREQ(kOneByteOverB64Data.data(), b64_string.data());
|
||||
}
|
||||
|
||||
TEST_F(Base64Test, Base64TwoBytesOverDecodeTest)
|
||||
{
|
||||
// decodes string
|
||||
std::vector<uint8_t> decoded_vector = Base64SafeDecode(kTwoBytesOverB64Data);
|
||||
std::string result;
|
||||
result.assign(decoded_vector.begin(), decoded_vector.end());
|
||||
EXPECT_STREQ(kTwoBytesOverData.data(), result.data());
|
||||
|
||||
// encodes string
|
||||
std::string b64_string = Base64SafeEncode(decoded_vector);
|
||||
EXPECT_STREQ(kTwoBytesOverB64Data.data(), b64_string.data());
|
||||
}
|
||||
|
||||
TEST_F(Base64Test, Base64ShortDecodeTest)
|
||||
{
|
||||
// decodes string
|
||||
std::vector<uint8_t> decoded_vector = Base64SafeDecode(kB64ShortString);
|
||||
|
||||
// encodes string
|
||||
std::string b64_string = Base64SafeEncode(decoded_vector);
|
||||
EXPECT_STREQ(kB64ShortString.data(), b64_string.data());
|
||||
}
|
||||
|
||||
TEST_F(Base64Test, Base64LongDecodeTest)
|
||||
{
|
||||
// decodes string
|
||||
std::vector<uint8_t> decoded_vector = Base64SafeDecode(kB64LongString);
|
||||
|
||||
// encodes string
|
||||
std::string b64_string = Base64SafeEncode(decoded_vector);
|
||||
EXPECT_STREQ(kB64LongString.data(), b64_string.data());
|
||||
}
|
||||
|
||||
} // namespace wvcdm
|
||||
Reference in New Issue
Block a user