From 4e047b8b0c5eee2584640654158b800ca09ad40f Mon Sep 17 00:00:00 2001 From: Rahul Frias Date: Fri, 25 Sep 2015 18:26:54 -0700 Subject: [PATCH] Make CdmProvisioningResponse const and DeviceFiles level support * Make CdmProvisioningResponse const. [ Merge of http://go/wvgerrit/14618 ] The lack of const on this reference seems to be a mistake, since the responses is never modified. This also allows the new CE CDM to pass responses directly through from the caller. * Let Properties determine DeviceFiles level support [ Merge of http://go/wvgerrit/14620 ] Non-Android platforms do not have multiple security levels, and so do not use the security level to construct a base path. Instead of requiring a known "security level" to construct a file, accept anything that platform Properties will accept as a base path. * Drop Properties::GetSecurityLevel(). [ Merge of http://go/wvgerrit/14617 ] This seems to be dead code. Change-Id: I94a970279213100730d6e6c763558dbe386f936a --- libwvdrmengine/cdm/core/include/cdm_engine.h | 2 +- .../core/include/certificate_provisioning.h | 9 +++++---- libwvdrmengine/cdm/core/include/properties.h | 2 -- libwvdrmengine/cdm/core/src/cdm_engine.cpp | 2 +- .../cdm/core/src/certificate_provisioning.cpp | 2 +- libwvdrmengine/cdm/core/src/device_files.cpp | 12 ++++------- libwvdrmengine/cdm/core/src/properties.cpp | 11 ---------- .../cdm/test/request_license_test.cpp | 20 +++++++++++++++---- 8 files changed, 28 insertions(+), 32 deletions(-) diff --git a/libwvdrmengine/cdm/core/include/cdm_engine.h b/libwvdrmengine/cdm/core/include/cdm_engine.h index 0786f879..490c7d38 100644 --- a/libwvdrmengine/cdm/core/include/cdm_engine.h +++ b/libwvdrmengine/cdm/core/include/cdm_engine.h @@ -122,7 +122,7 @@ class CdmEngine { std::string* default_url); virtual CdmResponseType HandleProvisioningResponse( - const std::string& origin, CdmProvisioningResponse& response, + const std::string& origin, const CdmProvisioningResponse& response, std::string* cert, std::string* wrapped_key); virtual bool IsProvisioned(CdmSecurityLevel security_level, diff --git a/libwvdrmengine/cdm/core/include/certificate_provisioning.h b/libwvdrmengine/cdm/core/include/certificate_provisioning.h index da6a8d03..dd222828 100644 --- a/libwvdrmengine/cdm/core/include/certificate_provisioning.h +++ b/libwvdrmengine/cdm/core/include/certificate_provisioning.h @@ -25,10 +25,11 @@ class CertificateProvisioning { const std::string& origin, CdmProvisioningRequest* request, std::string* default_url); - CdmResponseType HandleProvisioningResponse(const std::string& origin, - CdmProvisioningResponse& response, - std::string* cert, - std::string* wrapped_key); + CdmResponseType HandleProvisioningResponse( + const std::string& origin, + const CdmProvisioningResponse& response, + std::string* cert, + std::string* wrapped_key); private: void ComposeJsonRequestAsQueryString(const std::string& message, diff --git a/libwvdrmengine/cdm/core/include/properties.h b/libwvdrmengine/cdm/core/include/properties.h index a0890317..cc8f7ee3 100644 --- a/libwvdrmengine/cdm/core/include/properties.h +++ b/libwvdrmengine/cdm/core/include/properties.h @@ -58,8 +58,6 @@ class Properties { static bool GetSecurityLevelDirectories(std::vector* dirs); static bool GetApplicationId(const CdmSessionId& session_id, std::string* app_id); - static bool GetSecurityLevel(const CdmSessionId& session_id, - std::string* security_level); static bool GetServiceCertificate(const CdmSessionId& session_id, std::string* service_certificate); static bool UsePrivacyMode(const CdmSessionId& session_id); diff --git a/libwvdrmengine/cdm/core/src/cdm_engine.cpp b/libwvdrmengine/cdm/core/src/cdm_engine.cpp index 0f68a06d..9bdc3acd 100644 --- a/libwvdrmengine/cdm/core/src/cdm_engine.cpp +++ b/libwvdrmengine/cdm/core/src/cdm_engine.cpp @@ -589,7 +589,7 @@ CdmResponseType CdmEngine::GetProvisioningRequest( * Returns NO_ERROR for success and CdmResponseType error code if fails. */ CdmResponseType CdmEngine::HandleProvisioningResponse( - const std::string& origin, CdmProvisioningResponse& response, + const std::string& origin, const CdmProvisioningResponse& response, std::string* cert, std::string* wrapped_key) { if (response.empty()) { LOGE("CdmEngine::HandleProvisioningResponse: Empty provisioning response."); diff --git a/libwvdrmengine/cdm/core/src/certificate_provisioning.cpp b/libwvdrmengine/cdm/core/src/certificate_provisioning.cpp index 515d1986..61c27077 100644 --- a/libwvdrmengine/cdm/core/src/certificate_provisioning.cpp +++ b/libwvdrmengine/cdm/core/src/certificate_provisioning.cpp @@ -189,7 +189,7 @@ bool CertificateProvisioning::ParseJsonResponse( * Returns NO_ERROR for success and CERT_PROVISIONING_RESPONSE_ERROR_? if fails. */ CdmResponseType CertificateProvisioning::HandleProvisioningResponse( - const std::string& origin, CdmProvisioningResponse& response, + const std::string& origin, const CdmProvisioningResponse& response, std::string* cert, std::string* wrapped_key) { // Extracts signed response from JSON string, decodes base64 signed response const std::string kMessageStart = "\"signedResponse\": \""; diff --git a/libwvdrmengine/cdm/core/src/device_files.cpp b/libwvdrmengine/cdm/core/src/device_files.cpp index bc8ab008..b1d88b9f 100644 --- a/libwvdrmengine/cdm/core/src/device_files.cpp +++ b/libwvdrmengine/cdm/core/src/device_files.cpp @@ -76,14 +76,10 @@ DeviceFiles::~DeviceFiles() { } bool DeviceFiles::Init(CdmSecurityLevel security_level) { - switch (security_level) { - case kSecurityLevelL1: - case kSecurityLevelL2: - case kSecurityLevelL3: - break; - default: - LOGW("DeviceFiles::Init: Unsupported security level %d", security_level); - return false; + std::string path; + if (!Properties::GetDeviceFilesBasePath(security_level, &path)) { + LOGW("DeviceFiles::Init: Unsupported security level %d", security_level); + return false; } if (!test_file_) file_.reset(new File()); security_level_ = security_level; diff --git a/libwvdrmengine/cdm/core/src/properties.cpp b/libwvdrmengine/cdm/core/src/properties.cpp index 686f2e43..3983bf16 100644 --- a/libwvdrmengine/cdm/core/src/properties.cpp +++ b/libwvdrmengine/cdm/core/src/properties.cpp @@ -58,17 +58,6 @@ bool Properties::GetApplicationId(const CdmSessionId& session_id, return true; } -bool Properties::GetSecurityLevel(const CdmSessionId& session_id, - std::string* security_level) { - const CdmClientPropertySet* property_set = - GetCdmClientPropertySet(session_id); - if (NULL == property_set) { - return false; - } - *security_level = property_set->security_level(); - return true; -} - bool Properties::GetServiceCertificate(const CdmSessionId& session_id, std::string* service_certificate) { const CdmClientPropertySet* property_set = diff --git a/libwvdrmengine/cdm/test/request_license_test.cpp b/libwvdrmengine/cdm/test/request_license_test.cpp index 47e59ba9..844d635c 100644 --- a/libwvdrmengine/cdm/test/request_license_test.cpp +++ b/libwvdrmengine/cdm/test/request_license_test.cpp @@ -957,17 +957,29 @@ TEST_F(WvCdmRequestLicenseTest, PropertySetTest) { decryptor_.OpenSession(g_key_system, &property_set_Ln, EMPTY_ORIGIN, NULL, &session_id_Ln); - std::string security_level; - EXPECT_TRUE(Properties::GetSecurityLevel(session_id_L1, &security_level)); + CdmQueryMap query_info; + EXPECT_EQ(wvcdm::NO_ERROR, + decryptor_.QuerySessionStatus(session_id_L1, &query_info)); + CdmQueryMap::iterator itr = query_info.find(wvcdm::QUERY_KEY_SECURITY_LEVEL); + EXPECT_TRUE(itr != query_info.end()); + std::string security_level = itr->second; EXPECT_TRUE(!security_level.compare(QUERY_VALUE_SECURITY_LEVEL_L1) || !security_level.compare(QUERY_VALUE_SECURITY_LEVEL_L3)); EXPECT_TRUE(Properties::UsePrivacyMode(session_id_L1)); - EXPECT_TRUE(Properties::GetSecurityLevel(session_id_L3, &security_level)); + EXPECT_EQ(wvcdm::NO_ERROR, + decryptor_.QuerySessionStatus(session_id_L3, &query_info)); + itr = query_info.find(wvcdm::QUERY_KEY_SECURITY_LEVEL); + EXPECT_TRUE(itr != query_info.end()); + security_level = itr->second; EXPECT_EQ(security_level, QUERY_VALUE_SECURITY_LEVEL_L3); EXPECT_FALSE(Properties::UsePrivacyMode(session_id_L3)); - EXPECT_TRUE(Properties::GetSecurityLevel(session_id_Ln, &security_level)); + EXPECT_EQ(wvcdm::NO_ERROR, + decryptor_.QuerySessionStatus(session_id_Ln, &query_info)); + itr = query_info.find(wvcdm::QUERY_KEY_SECURITY_LEVEL); + EXPECT_TRUE(itr != query_info.end()); + security_level = itr->second; EXPECT_TRUE(security_level.empty() || !security_level.compare(QUERY_VALUE_SECURITY_LEVEL_L3));