From 0fe3f79cc3e710654c596a3355b16234ac3f4765 Mon Sep 17 00:00:00 2001 From: Rahul Frias Date: Mon, 5 Oct 2015 11:30:03 -0700 Subject: [PATCH] Additional merges from cdm master * Update unit test make files to use BoringSSL [ Merge of http://go/wvgerrit/14173 ] This CL updates the android makefiles to use the libcrypto_static. * Do Not Run Provisioning Tests On Devices Without Keyboxes [ Merge of http://go/wvgerrit/15633 ] The provisioning tests outside OEMCrypto were failing on devices that use baked-in certificates because only OEMCrypto knows that the cert is baked in and the device cannot be reprovisioned. This change skips those two tests if the device says it does not implement rewrapping the cert. (i.e. it does not implement provisioning) Bug: 23554998 * Add new third-party libs (protobuf & gyp) [ Merge of http://go/wvgerrit/14717 ] The CE CDM used to expect these to be installed system-wide, which creates challenges for integrators who must cross-compile the CDM. These are now used in source form from third_party. Change-Id: I29cca2f9415fe2fafdf948273e5a0f5d7de50285 --- libwvdrmengine/Android.mk | 2 +- libwvdrmengine/cdm/core/include/device_files.h | 1 + libwvdrmengine/cdm/core/src/crypto_session.cpp | 3 ++- libwvdrmengine/cdm/core/src/device_files.cpp | 1 - libwvdrmengine/cdm/core/src/license.cpp | 4 ---- libwvdrmengine/cdm/core/test/cdm_engine_test.cpp | 13 +++++++++++++ libwvdrmengine/cdm/include/timer.h | 6 +++--- libwvdrmengine/cdm/test/request_license_test.cpp | 6 +++--- .../test/gmock/scripts/generator/cpp/__init__.py | 1 + .../third_party/stringencoders/src/modp_b64w.cpp | 2 +- 10 files changed, 25 insertions(+), 14 deletions(-) mode change 100755 => 100644 libwvdrmengine/test/gmock/scripts/generator/cpp/__init__.py diff --git a/libwvdrmengine/Android.mk b/libwvdrmengine/Android.mk index 0fb194d5..e706ef6e 100644 --- a/libwvdrmengine/Android.mk +++ b/libwvdrmengine/Android.mk @@ -81,12 +81,12 @@ LOCAL_C_INCLUDES := \ LOCAL_STATIC_LIBRARIES := \ libcdm \ libcdm_utils \ + libcrypto_static \ libwvlevel3 \ libwvdrmcryptoplugin \ libwvdrmdrmplugin \ LOCAL_SHARED_LIBRARIES := \ - libcrypto \ libcutils \ libdl \ liblog \ diff --git a/libwvdrmengine/cdm/core/include/device_files.h b/libwvdrmengine/cdm/core/include/device_files.h index 57f29fe7..f7cc0636 100644 --- a/libwvdrmengine/cdm/core/include/device_files.h +++ b/libwvdrmengine/cdm/core/include/device_files.h @@ -4,6 +4,7 @@ #define WVCDM_CORE_DEVICE_FILES_H_ #include + #include #include diff --git a/libwvdrmengine/cdm/core/src/crypto_session.cpp b/libwvdrmengine/cdm/core/src/crypto_session.cpp index c5c17cb0..ec255d20 100644 --- a/libwvdrmengine/cdm/core/src/crypto_session.cpp +++ b/libwvdrmengine/cdm/core/src/crypto_session.cpp @@ -641,7 +641,8 @@ CdmResponseType CryptoSession::Decrypt(const CdmDecryptionParameters& params) { buffer_descriptor.type = params.is_secure ? destination_buffer_type_ : OEMCrypto_BufferType_Clear; - if (params.is_secure && buffer_descriptor.type == OEMCrypto_BufferType_Clear) { + if (params.is_secure && + buffer_descriptor.type == OEMCrypto_BufferType_Clear) { return SECURE_BUFFER_REQUIRED; } diff --git a/libwvdrmengine/cdm/core/src/device_files.cpp b/libwvdrmengine/cdm/core/src/device_files.cpp index 46cad569..4eda0f46 100644 --- a/libwvdrmengine/cdm/core/src/device_files.cpp +++ b/libwvdrmengine/cdm/core/src/device_files.cpp @@ -330,7 +330,6 @@ bool DeviceFiles::LicenseExists(const std::string& key_set_id) { LOGW("DeviceFiles::LicenseExists: not initialized"); return false; } - return FileExists(key_set_id + kLicenseFileNameExt); return reserved_license_ids_.count(key_set_id) || FileExists(key_set_id + kLicenseFileNameExt); } diff --git a/libwvdrmengine/cdm/core/src/license.cpp b/libwvdrmengine/cdm/core/src/license.cpp index a789a6e8..a2a5d297 100644 --- a/libwvdrmengine/cdm/core/src/license.cpp +++ b/libwvdrmengine/cdm/core/src/license.cpp @@ -140,10 +140,6 @@ CdmLicense::CdmLicense(const CdmSessionId& session_id, Clock* clock) session_id_(session_id), initialized_(false), renew_with_client_id_(false) { - if (NULL == clock) { - LOGE("CdmLicense::CdmLicense: clock parameter not provided"); - return; - } clock_.reset(clock); } diff --git a/libwvdrmengine/cdm/core/test/cdm_engine_test.cpp b/libwvdrmengine/cdm/core/test/cdm_engine_test.cpp index 1f1dd619..0418728a 100644 --- a/libwvdrmengine/cdm/core/test/cdm_engine_test.cpp +++ b/libwvdrmengine/cdm/core/test/cdm_engine_test.cpp @@ -13,6 +13,7 @@ #include "initialization_data.h" #include "license_request.h" #include "log.h" +#include "OEMCryptoCENC.h" #include "properties.h" #include "scoped_ptr.h" #include "string_conversions.h" @@ -178,6 +179,18 @@ class WvCdmEngineTest : public testing::Test { // Test that provisioning works, even if device is already provisioned. TEST_F(WvCdmEngineTest, ProvisioningTest) { + uint32_t nonce = 0; + uint8_t buffer[1]; + size_t size = 0; + int result = OEMCrypto_RewrapDeviceRSAKey( + 0, buffer, 0, buffer, 0, &nonce, buffer, 0, buffer, buffer, &size); + if (result == OEMCrypto_ERROR_NOT_IMPLEMENTED) { + LOGW("WARNING: Skipping ProvisioningTest because the device does not " + "support provisioning. If you are using a baked-in certificate, this " + "is expected. Otherwise, something is wrong."); + return; + } + Provision(); } diff --git a/libwvdrmengine/cdm/include/timer.h b/libwvdrmengine/cdm/include/timer.h index 4b483bf9..a446c4f2 100644 --- a/libwvdrmengine/cdm/include/timer.h +++ b/libwvdrmengine/cdm/include/timer.h @@ -2,8 +2,8 @@ // // Timer - Platform independent interface for a Timer class // -#ifndef CDM_BASE_CORE_TIMER_H_ -#define CDM_BASE_CORE_TIMER_H_ +#ifndef CDM_BASE_TIMER_H_ +#define CDM_BASE_TIMER_H_ #include "wv_cdm_types.h" @@ -48,4 +48,4 @@ class Timer { } // namespace wvcdm -#endif // CDM_BASE_CORE_TIMER_H_ +#endif // CDM_BASE_TIMER_H_ diff --git a/libwvdrmengine/cdm/test/request_license_test.cpp b/libwvdrmengine/cdm/test/request_license_test.cpp index 377bc082..aa744fc4 100644 --- a/libwvdrmengine/cdm/test/request_license_test.cpp +++ b/libwvdrmengine/cdm/test/request_license_test.cpp @@ -457,8 +457,8 @@ class TestWvCdmClientPropertySet : public CdmClientPropertySet { virtual const std::string& service_certificate() const { return service_certificate_; } - virtual void set_service_certificate(const std::string& service_certificate) { - service_certificate_ = service_certificate; + virtual void set_service_certificate(const std::string& cert) { + service_certificate_ = cert; } virtual bool use_privacy_mode() const { return use_privacy_mode_; } virtual bool is_session_sharing_enabled() const { @@ -980,7 +980,7 @@ TEST_F(WvCdmRequestLicenseTest, PropertySetTest) { itr = query_info.find(wvcdm::QUERY_KEY_SECURITY_LEVEL); EXPECT_TRUE(itr != query_info.end()); security_level = itr->second; - EXPECT_TRUE(security_level.empty() || + EXPECT_TRUE(!security_level.compare(QUERY_VALUE_SECURITY_LEVEL_L1) || !security_level.compare(QUERY_VALUE_SECURITY_LEVEL_L3)); std::string app_id = "not empty"; diff --git a/libwvdrmengine/test/gmock/scripts/generator/cpp/__init__.py b/libwvdrmengine/test/gmock/scripts/generator/cpp/__init__.py old mode 100755 new mode 100644 index e69de29b..9ce06a81 --- a/libwvdrmengine/test/gmock/scripts/generator/cpp/__init__.py +++ b/libwvdrmengine/test/gmock/scripts/generator/cpp/__init__.py @@ -0,0 +1 @@ +# dummy diff --git a/libwvdrmengine/third_party/stringencoders/src/modp_b64w.cpp b/libwvdrmengine/third_party/stringencoders/src/modp_b64w.cpp index 1881db72..84a40e37 100644 --- a/libwvdrmengine/third_party/stringencoders/src/modp_b64w.cpp +++ b/libwvdrmengine/third_party/stringencoders/src/modp_b64w.cpp @@ -48,7 +48,7 @@ * If you are ripping this out of the library, comment out the next * line and uncomment the next lines as approrpiate */ -//#include "config.h" +#include "config.h" /* if on motoral, sun, ibm; uncomment this */ /* #define WORDS_BIGENDIAN 1 */