From 0761dd8920cc2ff4b5aef4b8d3d4aad2ea6532c2 Mon Sep 17 00:00:00 2001 From: Rahul Frias Date: Wed, 9 Sep 2020 01:20:06 -0700 Subject: [PATCH] Avoid passing device ID when unused [ Merge of http://go/wvgerrit/105743 ] Device ID is no longer reported directly in provisioning/license request or used by ClientIdentification. It does not need to be passed in during initialization. Bug: 168085721 Test: WV unit/integration tests Change-Id: I483eac963c3f40784e42e1a2b917fcc96aa76a05 --- .../cdm/core/include/client_identification.h | 3 -- libwvdrmengine/cdm/core/include/license.h | 4 +-- libwvdrmengine/cdm/core/src/cdm_session.cpp | 2 +- .../cdm/core/src/client_identification.cpp | 3 -- libwvdrmengine/cdm/core/src/license.cpp | 5 ++- .../cdm/core/test/cdm_session_unittest.cpp | 21 ++++++----- .../cdm/core/test/license_unittest.cpp | 36 +++++++++---------- 7 files changed, 32 insertions(+), 42 deletions(-) diff --git a/libwvdrmengine/cdm/core/include/client_identification.h b/libwvdrmengine/cdm/core/include/client_identification.h index dd9d3e57..32462b42 100644 --- a/libwvdrmengine/cdm/core/include/client_identification.h +++ b/libwvdrmengine/cdm/core/include/client_identification.h @@ -26,10 +26,8 @@ class ClientIdentification { // Use in conjunction with license requests // |client_token| must be provided - // |device_id| optional // |crypto_session| input parameter, mandatory CdmResponseType Init(const std::string& client_token, - const std::string& device_id, CryptoSession* crypto_session); // Fill the ClientIdentification portion of the license or provisioning @@ -53,7 +51,6 @@ class ClientIdentification { bool is_license_request_; std::string client_token_; - std::string device_id_; CryptoSession* crypto_session_; CORE_DISALLOW_COPY_AND_ASSIGN(ClientIdentification); diff --git a/libwvdrmengine/cdm/core/include/license.h b/libwvdrmengine/cdm/core/include/license.h index 9d566803..916c1bab 100644 --- a/libwvdrmengine/cdm/core/include/license.h +++ b/libwvdrmengine/cdm/core/include/license.h @@ -39,8 +39,7 @@ class CdmLicense { virtual ~CdmLicense(); virtual bool Init(const std::string& client_token, - CdmClientTokenType client_token_type, - const std::string& device_id, bool use_privacy_mode, + CdmClientTokenType client_token_type, bool use_privacy_mode, const std::string& signed_service_certificate, CryptoSession* session, PolicyEngine* policy_engine); @@ -135,7 +134,6 @@ class CdmLicense { std::string server_url_; std::string client_token_; CdmClientTokenType client_token_type_; - std::string device_id_; const CdmSessionId session_id_; std::unique_ptr stored_init_data_; bool initialized_; diff --git a/libwvdrmengine/cdm/core/src/cdm_session.cpp b/libwvdrmengine/cdm/core/src/cdm_session.cpp index 8d06e6ee..e274bdda 100644 --- a/libwvdrmengine/cdm/core/src/cdm_session.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_session.cpp @@ -228,7 +228,7 @@ CdmResponseType CdmSession::Init(CdmClientPropertySet* cdm_client_property_set, if (!Properties::GetServiceCertificate(session_id_, &service_certificate)) service_certificate.clear(); - if (!license_parser_->Init(client_token, client_token_type, serial_number, + if (!license_parser_->Init(client_token, client_token_type, Properties::UsePrivacyMode(session_id_), service_certificate, crypto_session_.get(), policy_engine_.get())) diff --git a/libwvdrmengine/cdm/core/src/client_identification.cpp b/libwvdrmengine/cdm/core/src/client_identification.cpp index c039a6a3..1885ae26 100644 --- a/libwvdrmengine/cdm/core/src/client_identification.cpp +++ b/libwvdrmengine/cdm/core/src/client_identification.cpp @@ -20,7 +20,6 @@ const std::string kKeyArchitectureName = "architecture_name"; const std::string kKeyDeviceName = "device_name"; const std::string kKeyProductName = "product_name"; const std::string kKeyBuildInfo = "build_info"; -const std::string kKeyDeviceId = "device_id"; const std::string kKeyWvCdmVersion = "widevine_cdm_version"; const std::string kKeyOemCryptoSecurityPatchLevel = "oem_crypto_security_patch_level"; @@ -50,7 +49,6 @@ CdmResponseType ClientIdentification::Init(CryptoSession* crypto_session) { } CdmResponseType ClientIdentification::Init(const std::string& client_token, - const std::string& device_id, CryptoSession* crypto_session) { if (crypto_session == nullptr) { LOGE("Crypto session not provided"); @@ -63,7 +61,6 @@ CdmResponseType ClientIdentification::Init(const std::string& client_token, } is_license_request_ = true; - device_id_ = device_id; client_token_ = client_token; crypto_session_ = crypto_session; return NO_ERROR; diff --git a/libwvdrmengine/cdm/core/src/license.cpp b/libwvdrmengine/cdm/core/src/license.cpp index d0c0eca5..486a55f2 100644 --- a/libwvdrmengine/cdm/core/src/license.cpp +++ b/libwvdrmengine/cdm/core/src/license.cpp @@ -202,7 +202,7 @@ CdmLicense::~CdmLicense() {} bool CdmLicense::Init(const std::string& client_token, CdmClientTokenType client_token_type, - const std::string& device_id, bool use_privacy_mode, + bool use_privacy_mode, const std::string& signed_service_certificate, CryptoSession* session, PolicyEngine* policy_engine) { if (!clock_) { @@ -233,7 +233,6 @@ bool CdmLicense::Init(const std::string& client_token, client_token_ = client_token; client_token_type_ = client_token_type; - device_id_ = device_id; crypto_session_ = session; policy_engine_ = policy_engine; use_privacy_mode_ = use_privacy_mode; @@ -1025,7 +1024,7 @@ CdmResponseType CdmLicense::PrepareClientId( const CdmAppParameterMap& app_parameters, const std::string& provider_client_token, LicenseRequest* license_request) { wvcdm::ClientIdentification id; - CdmResponseType status = id.Init(client_token_, device_id_, crypto_session_); + CdmResponseType status = id.Init(client_token_, crypto_session_); if (status != NO_ERROR) return status; video_widevine::ClientIdentification* client_id = diff --git a/libwvdrmengine/cdm/core/test/cdm_session_unittest.cpp b/libwvdrmengine/cdm/core/test/cdm_session_unittest.cpp index 9fd6fba0..c9626f82 100644 --- a/libwvdrmengine/cdm/core/test/cdm_session_unittest.cpp +++ b/libwvdrmengine/cdm/core/test/cdm_session_unittest.cpp @@ -164,9 +164,8 @@ class MockCdmLicense : public CdmLicense { public: MockCdmLicense(const CdmSessionId& session_id) : CdmLicense(session_id) {} - MOCK_METHOD7(Init, - bool(const std::string&, CdmClientTokenType, const std::string&, - bool, const std::string&, CryptoSession*, PolicyEngine*)); + MOCK_METHOD6(Init, bool(const std::string&, CdmClientTokenType, bool, + const std::string&, CryptoSession*, PolicyEngine*)); MOCK_METHOD0(provider_session_token, std::string()); }; @@ -225,8 +224,8 @@ TEST_F(CdmSessionTest, InitWithBuiltInCertificate) { .WillOnce(Return(NO_ERROR)); EXPECT_CALL(*file_handle_, Init(Eq(level))).WillOnce(Return(true)); EXPECT_CALL(*license_parser_, - Init(Eq(kToken), Eq(kClientTokenDrmCert), Eq(kEmptyString), false, - Eq(kEmptyString), Eq(crypto_session_), Eq(policy_engine_))) + Init(Eq(kToken), Eq(kClientTokenDrmCert), false, Eq(kEmptyString), + Eq(crypto_session_), Eq(policy_engine_))) .WillOnce(Return(true)); ASSERT_EQ(NO_ERROR, cdm_session_->Init(nullptr)); @@ -252,8 +251,8 @@ TEST_F(CdmSessionTest, InitWithCertificate) { .InSequence(crypto_session_seq) .WillOnce(Return(NO_ERROR)); EXPECT_CALL(*license_parser_, - Init(Eq(kToken), Eq(kClientTokenDrmCert), Eq(kEmptyString), false, - Eq(kEmptyString), Eq(crypto_session_), Eq(policy_engine_))) + Init(Eq(kToken), Eq(kClientTokenDrmCert), false, Eq(kEmptyString), + Eq(crypto_session_), Eq(policy_engine_))) .WillOnce(Return(true)); ASSERT_EQ(NO_ERROR, cdm_session_->Init(nullptr)); @@ -279,8 +278,8 @@ TEST_F(CdmSessionTest, ReInitFail) { .InSequence(crypto_session_seq) .WillOnce(Return(NO_ERROR)); EXPECT_CALL(*license_parser_, - Init(Eq(kToken), Eq(kClientTokenDrmCert), Eq(kEmptyString), false, - Eq(kEmptyString), Eq(crypto_session_), Eq(policy_engine_))) + Init(Eq(kToken), Eq(kClientTokenDrmCert), false, Eq(kEmptyString), + Eq(crypto_session_), Eq(policy_engine_))) .WillOnce(Return(true)); ASSERT_EQ(NO_ERROR, cdm_session_->Init(nullptr)); @@ -336,8 +335,8 @@ TEST_F(CdmSessionTest, UpdateUsageEntry) { EXPECT_CALL(*crypto_session_, GetUsageTableHeader()) .WillOnce(Return(&usage_table_header_)); EXPECT_CALL(*license_parser_, - Init(Eq(kToken), Eq(kClientTokenDrmCert), Eq(kEmptyString), false, - Eq(kEmptyString), Eq(crypto_session_), Eq(policy_engine_))) + Init(Eq(kToken), Eq(kClientTokenDrmCert), false, Eq(kEmptyString), + Eq(crypto_session_), Eq(policy_engine_))) .WillOnce(Return(true)); // Set up mocks and expectations for the UpdateUsageEntryInformation call. diff --git a/libwvdrmengine/cdm/core/test/license_unittest.cpp b/libwvdrmengine/cdm/core/test/license_unittest.cpp index e311e747..7645b095 100644 --- a/libwvdrmengine/cdm/core/test/license_unittest.cpp +++ b/libwvdrmengine/cdm/core/test/license_unittest.cpp @@ -245,21 +245,21 @@ TEST_F(CdmLicenseTest, InitSuccess) { EXPECT_CALL(*crypto_session_, IsOpen()).WillOnce(Return(true)); CreateCdmLicense(); - EXPECT_TRUE(cdm_license_->Init(kToken, kClientTokenDrmCert, kEmptyString, - false, kEmptyServiceCertificate, - crypto_session_, policy_engine_)); + EXPECT_TRUE(cdm_license_->Init(kToken, kClientTokenDrmCert, false, + kEmptyServiceCertificate, crypto_session_, + policy_engine_)); } TEST_F(CdmLicenseTest, InitFail_EmptyToken) { CreateCdmLicense(); - EXPECT_FALSE(cdm_license_->Init("", kClientTokenDrmCert, "", false, + EXPECT_FALSE(cdm_license_->Init("", kClientTokenDrmCert, false, kEmptyServiceCertificate, crypto_session_, policy_engine_)); } TEST_F(CdmLicenseTest, InitFail_CryptoSessionNull) { CreateCdmLicense(); - EXPECT_FALSE(cdm_license_->Init(kToken, kClientTokenDrmCert, "", false, + EXPECT_FALSE(cdm_license_->Init(kToken, kClientTokenDrmCert, false, kEmptyServiceCertificate, nullptr, policy_engine_)); } @@ -268,7 +268,7 @@ TEST_F(CdmLicenseTest, InitFail_PolicyEngineNull) { EXPECT_CALL(*crypto_session_, IsOpen()).WillOnce(Return(true)); CreateCdmLicense(); - EXPECT_FALSE(cdm_license_->Init(kToken, kClientTokenDrmCert, "", false, + EXPECT_FALSE(cdm_license_->Init(kToken, kClientTokenDrmCert, false, kEmptyServiceCertificate, crypto_session_, nullptr)); } @@ -277,7 +277,7 @@ TEST_F(CdmLicenseTest, InitWithEmptyServiceCert) { EXPECT_CALL(*crypto_session_, IsOpen()).WillOnce(Return(true)); CreateCdmLicense(); - EXPECT_TRUE(cdm_license_->Init(kToken, kClientTokenDrmCert, "", true, + EXPECT_TRUE(cdm_license_->Init(kToken, kClientTokenDrmCert, true, kEmptyServiceCertificate, crypto_session_, policy_engine_)); } @@ -286,7 +286,7 @@ TEST_F(CdmLicenseTest, InitWithInvalidServiceCert) { EXPECT_CALL(*crypto_session_, IsOpen()).WillOnce(Return(true)); CreateCdmLicense(); - EXPECT_FALSE(cdm_license_->Init(kToken, kClientTokenDrmCert, "", true, + EXPECT_FALSE(cdm_license_->Init(kToken, kClientTokenDrmCert, true, kInvalidServiceCertificate, crypto_session_, policy_engine_)); } @@ -295,7 +295,7 @@ TEST_F(CdmLicenseTest, InitWithServiceCert) { EXPECT_CALL(*crypto_session_, IsOpen()).WillOnce(Return(true)); CreateCdmLicense(); - EXPECT_TRUE(cdm_license_->Init(kToken, kClientTokenDrmCert, "", true, + EXPECT_TRUE(cdm_license_->Init(kToken, kClientTokenDrmCert, true, kDefaultServiceCertificate, crypto_session_, policy_engine_)); } @@ -330,9 +330,9 @@ TEST_F(CdmLicenseTest, PrepareKeyRequestValidation) { Return(NO_ERROR))); CreateCdmLicense(); - EXPECT_TRUE(cdm_license_->Init(kToken, kClientTokenDrmCert, kEmptyString, - true, kDefaultServiceCertificate, - crypto_session_, policy_engine_)); + EXPECT_TRUE(cdm_license_->Init(kToken, kClientTokenDrmCert, true, + kDefaultServiceCertificate, crypto_session_, + policy_engine_)); CdmAppParameterMap app_parameters; CdmKeyMessage signed_request; @@ -457,9 +457,9 @@ TEST_F(CdmLicenseTest, PrepareKeyRequestValidationV15) { Return(NO_ERROR))); CreateCdmLicense(); - EXPECT_TRUE(cdm_license_->Init(kToken, kClientTokenDrmCert, kEmptyString, - true, kDefaultServiceCertificate, - crypto_session_, policy_engine_)); + EXPECT_TRUE(cdm_license_->Init(kToken, kClientTokenDrmCert, true, + kDefaultServiceCertificate, crypto_session_, + policy_engine_)); CdmAppParameterMap app_parameters; CdmKeyMessage signed_request; @@ -600,9 +600,9 @@ TEST_P(CdmLicenseEntitledKeyTest, LoadsEntitledKeys) { // Set up the CdmLicense with the mocks and fake entitlement key CreateCdmLicense(); - EXPECT_TRUE(cdm_license_->Init(kToken, kClientTokenDrmCert, kEmptyString, - true, kDefaultServiceCertificate, - crypto_session_, policy_engine_)); + EXPECT_TRUE(cdm_license_->Init(kToken, kClientTokenDrmCert, true, + kDefaultServiceCertificate, crypto_session_, + policy_engine_)); cdm_license_->set_entitlement_keys(entitlement_license); // Call the function under test and check its return value