Merge "Allow a service certificate to be specified for provisioning" into pi-dev
This commit is contained in:
@@ -57,6 +57,8 @@ const wvcdm::CdmIdentifier kExampleIdentifier = {
|
||||
7
|
||||
};
|
||||
|
||||
const std::string kEmptyServiceCertificate;
|
||||
|
||||
// Protobuf generated classes
|
||||
using video_widevine::LicenseIdentification;
|
||||
using video_widevine::LicenseRequest_ContentIdentification;
|
||||
@@ -1170,6 +1172,33 @@ FourSampleDecryptionInfo kCenc30SwitchCipherData[8] = {
|
||||
kCenc30Cbc1Key33Sample, kCenc30Cbc1Key32Sample, } },
|
||||
};
|
||||
|
||||
// NOTE: Provider ID = staging.google.com
|
||||
const std::string kGoogleStagingServiceCertificate = wvcdm::a2bs_hex(
|
||||
"0ac102080312101705b917cc1204868b06333a2f772a8c1882b482920522"
|
||||
"8e023082010a028201010099ed5b3b327dab5e24efc3b62a95b598520ad5"
|
||||
"bccb37503e0645b814d876b8df40510441ad8ce3adb11bb88c4e725a5e4a"
|
||||
"9e0795291d58584023a7e1af0e38a91279393008610b6f158c878c7e21bf"
|
||||
"fbfeea77e1019e1e5781e8a45f46263d14e60e8058a8607adce04fac8457"
|
||||
"b137a8d67ccdeb33705d983a21fb4eecbd4a10ca47490ca47eaa5d438218"
|
||||
"ddbaf1cade3392f13d6ffb6442fd31e1bf40b0c604d1c4ba4c9520a4bf97"
|
||||
"eebd60929afceef55bbaf564e2d0e76cd7c55c73a082b996120b8359edce"
|
||||
"24707082680d6f67c6d82c4ac5f3134490a74eec37af4b2f010c59e82843"
|
||||
"e2582f0b6b9f5db0fc5e6edf64fbd308b4711bcf1250019c9f5a09020301"
|
||||
"00013a146c6963656e73652e7769646576696e652e636f6d128003ae3473"
|
||||
"14b5a835297f271388fb7bb8cb5277d249823cddd1da30b93339511eb3cc"
|
||||
"bdea04b944b927c121346efdbdeac9d413917e6ec176a10438460a503bc1"
|
||||
"952b9ba4e4ce0fc4bfc20a9808aaaf4bfcd19c1dcfcdf574ccac28d1b410"
|
||||
"416cf9de8804301cbdb334cafcd0d40978423a642e54613df0afcf96ca4a"
|
||||
"9249d855e42b3a703ef1767f6a9bd36d6bf82be76bbf0cba4fde59d2abcc"
|
||||
"76feb64247b85c431fbca52266b619fc36979543fca9cbbdbbfafa0e1a55"
|
||||
"e755a3c7bce655f9646f582ab9cf70aa08b979f867f63a0b2b7fdb362c5b"
|
||||
"c4ecd555d85bcaa9c593c383c857d49daab77e40b7851ddfd24998808e35"
|
||||
"b258e75d78eac0ca16f7047304c20d93ede4e8ff1c6f17e6243e3f3da8fc"
|
||||
"1709870ec45fba823a263f0cefa1f7093b1909928326333705043a29bda6"
|
||||
"f9b4342cc8df543cb1a1182f7c5fff33f10490faca5b25360b76015e9c5a"
|
||||
"06ab8ee02f00d2e8d5986104aacc4dd475fd96ee9ce4e326f21b83c70585"
|
||||
"77b38732cddabc6a6bed13fb0d49d38a45eb87a5f4");
|
||||
|
||||
} // namespace
|
||||
|
||||
namespace wvcdm {
|
||||
@@ -1570,8 +1599,9 @@ class WvCdmRequestLicenseTest : public WvCdmTestBase {
|
||||
std::string cert_authority, cert, wrapped_key;
|
||||
|
||||
status = decryptor_.GetProvisioningRequest(cert_type, cert_authority,
|
||||
identifier, &key_msg_,
|
||||
&provisioning_server);
|
||||
identifier,
|
||||
kEmptyServiceCertificate,
|
||||
&key_msg_, &provisioning_server);
|
||||
EXPECT_EQ(wvcdm::NO_ERROR, status);
|
||||
if (NO_ERROR != status) return;
|
||||
EXPECT_EQ(provisioning_server, g_config->provisioning_server());
|
||||
@@ -1652,8 +1682,38 @@ TEST_F(WvCdmRequestLicenseTest, ProvisioningTest) {
|
||||
|
||||
EXPECT_EQ(wvcdm::NO_ERROR, decryptor_.GetProvisioningRequest(
|
||||
cert_type, cert_authority,
|
||||
kDefaultCdmIdentifier, &key_msg_,
|
||||
&provisioning_server));
|
||||
kDefaultCdmIdentifier,
|
||||
kEmptyServiceCertificate,
|
||||
&key_msg_, &provisioning_server));
|
||||
EXPECT_EQ(provisioning_server, g_config->provisioning_server());
|
||||
|
||||
std::string response =
|
||||
GetCertRequestResponse(g_config->provisioning_server());
|
||||
EXPECT_NE(0, static_cast<int>(response.size()));
|
||||
EXPECT_EQ(wvcdm::NO_ERROR, decryptor_.HandleProvisioningResponse(
|
||||
kDefaultCdmIdentifier, response, &cert,
|
||||
&wrapped_key));
|
||||
EXPECT_EQ(0, static_cast<int>(cert.size()));
|
||||
EXPECT_EQ(0, static_cast<int>(wrapped_key.size()));
|
||||
decryptor_.CloseSession(session_id_);
|
||||
}
|
||||
|
||||
TEST_F(WvCdmRequestLicenseTest, ProvisioningTestWithServiceCertificate) {
|
||||
CdmResponseType status =
|
||||
decryptor_.OpenSession(g_key_system, NULL,
|
||||
kDefaultCdmIdentifier, NULL,
|
||||
&session_id_);
|
||||
EXPECT_TRUE(status == NEED_PROVISIONING || status == NO_ERROR)
|
||||
<< "Failure to open session. error: " << status;
|
||||
std::string provisioning_server;
|
||||
CdmCertificateType cert_type = kCertificateWidevine;
|
||||
std::string cert_authority, cert, wrapped_key;
|
||||
|
||||
EXPECT_EQ(wvcdm::NO_ERROR, decryptor_.GetProvisioningRequest(
|
||||
cert_type, cert_authority,
|
||||
kDefaultCdmIdentifier,
|
||||
kGoogleStagingServiceCertificate,
|
||||
&key_msg_, &provisioning_server));
|
||||
EXPECT_EQ(provisioning_server, g_config->provisioning_server());
|
||||
|
||||
std::string response =
|
||||
@@ -1670,17 +1730,19 @@ TEST_F(WvCdmRequestLicenseTest, ProvisioningTest) {
|
||||
TEST_F(WvCdmRequestLicenseTest, L3ProvisioningTest) {
|
||||
TestWvCdmClientPropertySet property_set_L3;
|
||||
property_set_L3.set_security_level(QUERY_VALUE_SECURITY_LEVEL_L3);
|
||||
EXPECT_EQ(NEED_PROVISIONING,
|
||||
decryptor_.OpenSession(g_key_system, &property_set_L3,
|
||||
kDefaultCdmIdentifier, NULL,
|
||||
&session_id_));
|
||||
CdmResponseType status =
|
||||
decryptor_.OpenSession(g_key_system, &property_set_L3,
|
||||
kDefaultCdmIdentifier, NULL, &session_id_);
|
||||
EXPECT_TRUE(status == NEED_PROVISIONING || status == NO_ERROR)
|
||||
<< "Failure to open session. error: " << status;
|
||||
std::string provisioning_server;
|
||||
CdmCertificateType cert_type = kCertificateWidevine;
|
||||
std::string cert_authority, cert, wrapped_key;
|
||||
|
||||
EXPECT_EQ(wvcdm::NO_ERROR, decryptor_.GetProvisioningRequest(
|
||||
cert_type, cert_authority,
|
||||
kDefaultCdmIdentifier, &key_msg_,
|
||||
kDefaultCdmIdentifier,
|
||||
kEmptyServiceCertificate, &key_msg_,
|
||||
&provisioning_server));
|
||||
EXPECT_EQ(provisioning_server, g_config->provisioning_server());
|
||||
|
||||
@@ -1771,13 +1833,15 @@ TEST_F(WvCdmRequestLicenseTest, ProvisioningInterposedRetryTest) {
|
||||
|
||||
EXPECT_EQ(wvcdm::NO_ERROR, decryptor_.GetProvisioningRequest(
|
||||
cert_type, cert_authority,
|
||||
kDefaultCdmIdentifier, &key_msg1,
|
||||
kDefaultCdmIdentifier,
|
||||
kEmptyServiceCertificate, &key_msg1,
|
||||
&provisioning_server));
|
||||
EXPECT_EQ(provisioning_server, g_config->provisioning_server());
|
||||
|
||||
EXPECT_EQ(wvcdm::NO_ERROR, decryptor_.GetProvisioningRequest(
|
||||
cert_type, cert_authority,
|
||||
kDefaultCdmIdentifier, &key_msg2,
|
||||
kDefaultCdmIdentifier,
|
||||
kEmptyServiceCertificate, &key_msg2,
|
||||
&provisioning_server));
|
||||
EXPECT_EQ(provisioning_server, g_config->provisioning_server());
|
||||
|
||||
@@ -1813,13 +1877,15 @@ TEST_F(WvCdmRequestLicenseTest, ProvisioningInterspersedRetryTest) {
|
||||
|
||||
EXPECT_EQ(wvcdm::NO_ERROR, decryptor_.GetProvisioningRequest(
|
||||
cert_type, cert_authority,
|
||||
kDefaultCdmIdentifier, &key_msg1,
|
||||
kDefaultCdmIdentifier,
|
||||
kEmptyServiceCertificate, &key_msg1,
|
||||
&provisioning_server));
|
||||
EXPECT_EQ(provisioning_server, g_config->provisioning_server());
|
||||
|
||||
EXPECT_EQ(wvcdm::NO_ERROR, decryptor_.GetProvisioningRequest(
|
||||
cert_type, cert_authority,
|
||||
kDefaultCdmIdentifier, &key_msg2,
|
||||
kDefaultCdmIdentifier,
|
||||
kEmptyServiceCertificate, &key_msg2,
|
||||
&provisioning_server));
|
||||
EXPECT_EQ(provisioning_server, g_config->provisioning_server());
|
||||
|
||||
@@ -1857,7 +1923,8 @@ TEST_F(WvCdmRequestLicenseTest, DISABLED_X509ProvisioningTest) {
|
||||
|
||||
EXPECT_EQ(wvcdm::NO_ERROR, decryptor_.GetProvisioningRequest(
|
||||
cert_type, cert_authority,
|
||||
kDefaultCdmIdentifier, &key_msg_,
|
||||
kDefaultCdmIdentifier,
|
||||
kEmptyServiceCertificate, &key_msg_,
|
||||
&provisioning_server));
|
||||
EXPECT_EQ(provisioning_server, g_config->provisioning_server());
|
||||
|
||||
@@ -1897,7 +1964,8 @@ TEST_F(WvCdmRequestLicenseTest, PropertySetTest) {
|
||||
std::string cert_authority, cert, wrapped_key;
|
||||
EXPECT_EQ(NO_ERROR, decryptor_.GetProvisioningRequest(
|
||||
cert_type, cert_authority, kDefaultCdmIdentifier,
|
||||
&key_msg_, &provisioning_server));
|
||||
kEmptyServiceCertificate, &key_msg_,
|
||||
&provisioning_server));
|
||||
EXPECT_EQ(provisioning_server, g_config->provisioning_server());
|
||||
std::string response =
|
||||
GetCertRequestResponse(g_config->provisioning_server());
|
||||
@@ -1973,7 +2041,8 @@ TEST_F(WvCdmRequestLicenseTest, ForceL3Test) {
|
||||
std::string cert_authority, cert, wrapped_key;
|
||||
EXPECT_EQ(NO_ERROR, decryptor_.GetProvisioningRequest(
|
||||
cert_type, cert_authority, kDefaultCdmIdentifier,
|
||||
&key_msg_, &provisioning_server));
|
||||
kEmptyServiceCertificate, &key_msg_,
|
||||
&provisioning_server));
|
||||
EXPECT_EQ(provisioning_server, g_config->provisioning_server());
|
||||
std::string response =
|
||||
GetCertRequestResponse(g_config->provisioning_server());
|
||||
@@ -2262,6 +2331,7 @@ TEST_F(WvCdmRequestLicenseTest, ReleaseRetryL3OfflineKeyTest) {
|
||||
std::string cert_authority, cert, wrapped_key;
|
||||
EXPECT_EQ(NO_ERROR, decryptor_.GetProvisioningRequest(
|
||||
cert_type, cert_authority, kDefaultCdmIdentifier,
|
||||
kEmptyServiceCertificate,
|
||||
&key_msg_, &provisioning_server));
|
||||
EXPECT_EQ(provisioning_server, g_config->provisioning_server());
|
||||
std::string response =
|
||||
@@ -2337,6 +2407,7 @@ TEST_F(WvCdmRequestLicenseTest,
|
||||
std::string cert_authority, cert, wrapped_key;
|
||||
EXPECT_EQ(NO_ERROR, decryptor_.GetProvisioningRequest(
|
||||
cert_type, cert_authority, kDefaultCdmIdentifier,
|
||||
kEmptyServiceCertificate,
|
||||
&key_msg_, &provisioning_server_url));
|
||||
EXPECT_EQ(provisioning_server_url, g_config->provisioning_server());
|
||||
std::string response =
|
||||
|
||||
Reference in New Issue
Block a user