Source release 19.3.0
This commit is contained in:
@@ -22,10 +22,32 @@
|
||||
#include "wv_cdm_constants.h"
|
||||
|
||||
namespace wvcdm {
|
||||
// Protobuf generated classes
|
||||
using ClientCapabilities =
|
||||
video_widevine::ClientIdentification::ClientCapabilities;
|
||||
using video_widevine::ClientIdentification;
|
||||
using video_widevine::License;
|
||||
using KeyContainer = video_widevine::License::KeyContainer;
|
||||
using video_widevine::LicenseRequest;
|
||||
using ContentIdentification = LicenseRequest::ContentIdentification;
|
||||
using video_widevine::SignedMessage;
|
||||
using PsshEntitledKey = video_widevine::WidevinePsshData::EntitledKey;
|
||||
|
||||
// gmock methods
|
||||
using ::testing::_;
|
||||
using ::testing::DoAll;
|
||||
using ::testing::NotNull;
|
||||
using ::testing::PrintToStringParamName;
|
||||
using ::testing::Return;
|
||||
using ::testing::ReturnRef;
|
||||
using ::testing::SetArgPointee;
|
||||
using ::testing::SetArgReferee;
|
||||
using ::testing::UnorderedElementsAre;
|
||||
using ::testing::Values;
|
||||
|
||||
namespace {
|
||||
using wvutil::a2bs_hex;
|
||||
|
||||
namespace {
|
||||
const std::string kEmptyString;
|
||||
const std::string kAesKey = a2bs_hex("000102030405060708090a0b0c0d0e0f");
|
||||
const std::string kAesIv = a2bs_hex("000102030405060708090a0b0c0d0e0f");
|
||||
@@ -156,7 +178,7 @@ class MockCryptoSession : public TestCryptoSession {
|
||||
OEMCrypto_SignatureHashAlgorithm&),
|
||||
(override));
|
||||
MOCK_METHOD(CdmResponseType, LoadEntitledContentKeys,
|
||||
(const std::vector<CryptoKey>& key_array), (override));
|
||||
(const std::vector<CryptoKey>&), (override));
|
||||
MOCK_METHOD(bool, GetResourceRatingTier, (uint32_t*), (override));
|
||||
MOCK_METHOD(bool, GetWatermarkingSupport, (CdmWatermarkingSupport*),
|
||||
(override));
|
||||
@@ -169,37 +191,11 @@ class MockPolicyEngine : public PolicyEngine {
|
||||
public:
|
||||
MockPolicyEngine(CryptoSession* crypto)
|
||||
: PolicyEngine("mock_session_id", nullptr, crypto) {}
|
||||
MOCK_METHOD(
|
||||
void, SetEntitledLicenseKeys,
|
||||
(const std::vector<video_widevine::WidevinePsshData_EntitledKey>&),
|
||||
(override));
|
||||
MOCK_METHOD(void, SetEntitledLicenseKeys,
|
||||
(const std::vector<PsshEntitledKey>&), (override));
|
||||
};
|
||||
|
||||
} // namespace
|
||||
|
||||
// Protobuf generated classes
|
||||
using ClientCapabilities =
|
||||
video_widevine::ClientIdentification::ClientCapabilities;
|
||||
using video_widevine::ClientIdentification;
|
||||
using video_widevine::License;
|
||||
using video_widevine::License_KeyContainer;
|
||||
using video_widevine::LicenseRequest;
|
||||
using video_widevine::LicenseRequest_ContentIdentification;
|
||||
using video_widevine::SignedMessage;
|
||||
using video_widevine::WidevinePsshData_EntitledKey;
|
||||
|
||||
// gmock methods
|
||||
using ::testing::_;
|
||||
using ::testing::DoAll;
|
||||
using ::testing::NotNull;
|
||||
using ::testing::PrintToStringParamName;
|
||||
using ::testing::Return;
|
||||
using ::testing::ReturnRef;
|
||||
using ::testing::SetArgPointee;
|
||||
using ::testing::SetArgReferee;
|
||||
using ::testing::UnorderedElementsAre;
|
||||
using ::testing::Values;
|
||||
|
||||
class CdmLicenseTestPeer : public CdmLicense {
|
||||
public:
|
||||
CdmLicenseTestPeer(const CdmSessionId& session_id, wvutil::Clock* clock)
|
||||
@@ -208,7 +204,10 @@ class CdmLicenseTestPeer : public CdmLicense {
|
||||
using CdmLicense::HandleNewEntitledKeys;
|
||||
|
||||
void set_entitlement_keys(const License& license) {
|
||||
entitlement_keys_.CopyFrom(license.key());
|
||||
for (const auto& key_container : license.key()) {
|
||||
if (key_container.type() != KeyContainer::ENTITLEMENT) continue;
|
||||
entitlement_key_ids_.insert(key_container.id());
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -368,15 +367,13 @@ TEST_F(CdmLicenseTest, PrepareKeyRequestValidation) {
|
||||
|
||||
// Verify Client Identification
|
||||
const ClientIdentification& client_id = license_request.client_id();
|
||||
EXPECT_EQ(
|
||||
video_widevine::ClientIdentification_TokenType_DRM_DEVICE_CERTIFICATE,
|
||||
client_id.type());
|
||||
EXPECT_EQ(ClientIdentification::DRM_DEVICE_CERTIFICATE, client_id.type());
|
||||
EXPECT_TRUE(std::equal(client_id.token().begin(), client_id.token().end(),
|
||||
kToken.begin()));
|
||||
|
||||
EXPECT_LT(0, client_id.client_info_size());
|
||||
for (int i = 0; i < client_id.client_info_size(); ++i) {
|
||||
const ::video_widevine::ClientIdentification_NameValue& name_value =
|
||||
const ClientIdentification::NameValue& name_value =
|
||||
client_id.client_info(i);
|
||||
EXPECT_TRUE(!name_value.name().empty());
|
||||
EXPECT_TRUE(!name_value.value().empty());
|
||||
@@ -406,14 +403,13 @@ TEST_F(CdmLicenseTest, PrepareKeyRequestValidation) {
|
||||
ClientCapabilities::WATERMARKING_CONFIGURABLE);
|
||||
|
||||
// Verify Content Identification
|
||||
const LicenseRequest_ContentIdentification& content_id =
|
||||
license_request.content_id();
|
||||
const ContentIdentification& content_id = license_request.content_id();
|
||||
ASSERT_TRUE(content_id.has_widevine_pssh_data());
|
||||
EXPECT_FALSE(content_id.has_webm_key_id());
|
||||
EXPECT_FALSE(content_id.has_existing_license());
|
||||
|
||||
const ::video_widevine::LicenseRequest_ContentIdentification_WidevinePsshData&
|
||||
widevine_pssh_data = content_id.widevine_pssh_data();
|
||||
const ContentIdentification::WidevinePsshData& widevine_pssh_data =
|
||||
content_id.widevine_pssh_data();
|
||||
EXPECT_TRUE(std::equal(widevine_pssh_data.pssh_data(0).begin(),
|
||||
widevine_pssh_data.pssh_data(0).end(),
|
||||
kCencPssh.begin()));
|
||||
@@ -423,8 +419,7 @@ TEST_F(CdmLicenseTest, PrepareKeyRequestValidation) {
|
||||
kCryptoRequestId.begin()));
|
||||
|
||||
// Verify other license request fields
|
||||
EXPECT_EQ(::video_widevine::LicenseRequest_RequestType_NEW,
|
||||
license_request.type());
|
||||
EXPECT_EQ(LicenseRequest::NEW, license_request.type());
|
||||
EXPECT_EQ(kLicenseStartTime, license_request.request_time());
|
||||
EXPECT_EQ(video_widevine::VERSION_2_1, license_request.protocol_version());
|
||||
EXPECT_EQ(kNonce, license_request.key_control_nonce());
|
||||
@@ -502,15 +497,13 @@ TEST_F(CdmLicenseTest, PrepareKeyRequestValidationV15) {
|
||||
|
||||
// Verify Client Identification
|
||||
const ClientIdentification& client_id = license_request.client_id();
|
||||
EXPECT_EQ(
|
||||
video_widevine::ClientIdentification_TokenType_DRM_DEVICE_CERTIFICATE,
|
||||
client_id.type());
|
||||
EXPECT_EQ(ClientIdentification::DRM_DEVICE_CERTIFICATE, client_id.type());
|
||||
EXPECT_TRUE(std::equal(client_id.token().begin(), client_id.token().end(),
|
||||
kToken.begin()));
|
||||
|
||||
EXPECT_LT(0, client_id.client_info_size());
|
||||
for (int i = 0; i < client_id.client_info_size(); ++i) {
|
||||
const ::video_widevine::ClientIdentification_NameValue& name_value =
|
||||
const ClientIdentification::NameValue& name_value =
|
||||
client_id.client_info(i);
|
||||
EXPECT_TRUE(!name_value.name().empty());
|
||||
EXPECT_TRUE(!name_value.value().empty());
|
||||
@@ -540,14 +533,13 @@ TEST_F(CdmLicenseTest, PrepareKeyRequestValidationV15) {
|
||||
ClientCapabilities::WATERMARKING_NOT_SUPPORTED);
|
||||
|
||||
// Verify Content Identification
|
||||
const LicenseRequest_ContentIdentification& content_id =
|
||||
license_request.content_id();
|
||||
const ContentIdentification& content_id = license_request.content_id();
|
||||
ASSERT_TRUE(content_id.has_widevine_pssh_data());
|
||||
EXPECT_FALSE(content_id.has_webm_key_id());
|
||||
EXPECT_FALSE(content_id.has_existing_license());
|
||||
|
||||
const ::video_widevine::LicenseRequest_ContentIdentification_WidevinePsshData&
|
||||
widevine_pssh_data = content_id.widevine_pssh_data();
|
||||
const ContentIdentification::WidevinePsshData& widevine_pssh_data =
|
||||
content_id.widevine_pssh_data();
|
||||
EXPECT_TRUE(std::equal(widevine_pssh_data.pssh_data(0).begin(),
|
||||
widevine_pssh_data.pssh_data(0).end(),
|
||||
kCencPssh.begin()));
|
||||
@@ -557,8 +549,7 @@ TEST_F(CdmLicenseTest, PrepareKeyRequestValidationV15) {
|
||||
kCryptoRequestId.begin()));
|
||||
|
||||
// Verify other license request fields
|
||||
EXPECT_EQ(::video_widevine::LicenseRequest_RequestType_NEW,
|
||||
license_request.type());
|
||||
EXPECT_EQ(LicenseRequest::NEW, license_request.type());
|
||||
EXPECT_EQ(kLicenseStartTime, license_request.request_time());
|
||||
EXPECT_EQ(video_widevine::VERSION_2_1, license_request.protocol_version());
|
||||
EXPECT_EQ(kNonce, license_request.key_control_nonce());
|
||||
@@ -590,14 +581,13 @@ TEST_P(CdmLicenseEntitledKeyTest, LoadsEntitledKeys) {
|
||||
|
||||
// Set up a known, fake entitlement key
|
||||
License entitlement_license;
|
||||
License_KeyContainer* entitlement_key = entitlement_license.add_key();
|
||||
entitlement_key->set_type(
|
||||
video_widevine::License_KeyContainer_KeyType_ENTITLEMENT);
|
||||
KeyContainer* entitlement_key = entitlement_license.add_key();
|
||||
entitlement_key->set_type(KeyContainer::ENTITLEMENT);
|
||||
entitlement_key->set_id(kFakeEntitlementKeyId);
|
||||
|
||||
// Set up a fake entitled key that matches the entitlement key
|
||||
std::vector<WidevinePsshData_EntitledKey> entitled_keys(1);
|
||||
WidevinePsshData_EntitledKey& padded_key = entitled_keys[0];
|
||||
std::vector<PsshEntitledKey> entitled_keys(1);
|
||||
PsshEntitledKey& padded_key = entitled_keys[0];
|
||||
padded_key.set_entitlement_key_id(kFakeEntitlementKeyId);
|
||||
padded_key.set_key_id(kFakeEntitledKeyId);
|
||||
padded_key.set_key(variant.key);
|
||||
|
||||
Reference in New Issue
Block a user