diff --git a/libwvdrmengine/level3/mips/Android.mk b/libwvdrmengine/level3/mips/Android.mk index 3ffa9e38..2a2e7e3c 100644 --- a/libwvdrmengine/level3/mips/Android.mk +++ b/libwvdrmengine/level3/mips/Android.mk @@ -3,9 +3,18 @@ include $(CLEAR_VARS) LOCAL_MODULE := libwvlevel3 LOCAL_MODULE_CLASS := STATIC_LIBRARIES LOCAL_MODULE_SUFFIX := .a -LOCAL_SRC_FILES := $(LOCAL_MODULE)$(LOCAL_MODULE_SUFFIX) +LOCAL_SRC_FILES := level3_stubs.cpp + +LOCAL_CFLAGS := -Wno-unused-parameter + +LOCAL_C_INCLUDES := \ + vendor/widevine/libwvdrmengine/cdm/core/include \ + vendor/widevine/libwvdrmengine/cdm/include \ + vendor/widevine/libwvdrmengine/oemcrypto/include \ + vendor/widevine/libwvdrmengine/third_party/stringencoders/src + LOCAL_PROPRIETARY_MODULE := true LOCAL_MODULE_TAGS := optional LOCAL_MODULE_OWNER := widevine LOCAL_MODULE_TARGET_ARCH := mips -include $(BUILD_PREBUILT) +include $(BUILD_STATIC_LIBRARY) diff --git a/libwvdrmengine/level3/mips/level3_stubs.cpp b/libwvdrmengine/level3/mips/level3_stubs.cpp new file mode 100644 index 00000000..1f8e4bc1 --- /dev/null +++ b/libwvdrmengine/level3/mips/level3_stubs.cpp @@ -0,0 +1,397 @@ +/******************************************************************************* + * + * Copyright 2015 Google Inc. All Rights Reserved. + * + * Stubs for OEMCrypto Level 3 Fallback APIs. (use when level 3 doesn't compile) + * + ******************************************************************************/ + +#include "level3.h" + +// This error string shows up when we run "strings libwvleel3.a" +const char* error_string = "Level3 Library is stubbed out."; + +namespace wvoec3 { +bool Level3_IsInApp() { + return false; +} + +OEMCryptoResult Level3_Initialize(void (*ClearCache)(void *, size_t), + const char* base_path) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_Terminate(void) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_OpenSession(OEMCrypto_SESSION* /*session*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_CloseSession(OEMCrypto_SESSION /*session*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_GenerateDerivedKeys(OEMCrypto_SESSION /*session*/, + const uint8_t* /*mac_key_context*/, + uint32_t /*mac_key_context_length*/, + const uint8_t* /*enc_key_context*/, + uint32_t /*enc_key_context_length*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_GenerateNonce(OEMCrypto_SESSION /*session*/, + uint32_t* /*nonce*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_GenerateSignature(OEMCrypto_SESSION /*session*/, + const uint8_t* /*message*/, + size_t /*message_length*/, + uint8_t* /*signature*/, + size_t* /*signature_length*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_LoadKeys(OEMCrypto_SESSION /*session*/, + const uint8_t* /*message*/, + size_t /*message_length*/, + const uint8_t* /*signature*/, + size_t /*signature_length*/, + const uint8_t* /*enc_mac_key_iv*/, + const uint8_t* /*enc_mac_key*/, + size_t /*num_keys*/, + const OEMCrypto_KeyObject* /*key_array*/, + const uint8_t* /*pst*/, + size_t /*pst_length*/, + const uint8_t* /*srm_requirement*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_RefreshKeys(OEMCrypto_SESSION /*session*/, + const uint8_t* /*message*/, + size_t /*message_length*/, + const uint8_t* /*signature*/, + size_t /*signature_length*/, + size_t /*num_keys*/, + const OEMCrypto_KeyRefreshObject* /*key_array*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_QueryKeyControl(OEMCrypto_SESSION /*session*/, + const uint8_t* /*key_id*/, + size_t /*key_id_length*/, + uint8_t* /*key_control_block*/, + size_t* /*key_control_block_length*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_SelectKey(const OEMCrypto_SESSION /*session*/, + const uint8_t* /*key_id*/, + size_t /*key_id_length*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_DecryptCENC(OEMCrypto_SESSION /*session*/, + const uint8_t* /*data_addr*/, size_t /*data_length*/, + bool /*is_encrypted*/, const uint8_t* /*iv*/, + size_t /*block_offset*/, + const OEMCrypto_DestBufferDesc* /*out_buffer*/, + const OEMCrypto_CENCEncryptPatternDesc* /*pattern*/, + uint8_t /*subsample_flags*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_CopyBuffer(const uint8_t */*data_addr*/, + size_t /*data_length*/, + OEMCrypto_DestBufferDesc* /*out_buffer*/, + uint8_t /*subsample_flags*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_WrapKeybox(const uint8_t* /*keybox*/, + size_t /*keyBoxLength*/, + uint8_t* /*wrappedKeybox*/, + size_t* /*wrappedKeyBoxLength*/, + const uint8_t* /*transportKey*/, + size_t /*transportKeyLength*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_InstallKeybox(const uint8_t* /*keybox*/, + size_t /*keyBoxLength*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_LoadTestKeybox() { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_IsKeyboxValid(void) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_GetDeviceID(uint8_t* /*deviceID*/, size_t* /*idLength*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_GetKeyData(uint8_t* /*keyData*/, + size_t* /*keyDataLength*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_GetRandom(uint8_t* /*randomData*/, size_t /*dataLength*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_RewrapDeviceRSAKey30(OEMCrypto_SESSION /*session*/, + const uint32_t */*nonce*/, + const uint8_t* /*encrypted_message_key*/, + size_t /*encrypted_message_key_length*/, + const uint8_t* /*enc_rsa_key*/, + size_t /*enc_rsa_key_length*/, + const uint8_t* /*enc_rsa_key_iv*/, + uint8_t* /*wrapped_rsa_key*/, + size_t* /*wrapped_rsa_key_length*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_RewrapDeviceRSAKey(OEMCrypto_SESSION /*session*/, + const uint8_t* /*message*/, + size_t /*message_length*/, + const uint8_t* /*signature*/, + size_t /*signature_length*/, + const uint32_t* /*nonce*/, + const uint8_t* /*enc_rsa_key*/, + size_t /*enc_rsa_key_length*/, + const uint8_t* /*enc_rsa_key_iv*/, + uint8_t* /*wrapped_rsa_key*/, + size_t* /*wrapped_rsa_key_length*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_LoadDeviceRSAKey(OEMCrypto_SESSION /*session*/, + const uint8_t* /*wrapped_rsa_key*/, + size_t /*wrapped_rsa_key_length*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_LoadTestRSAKey() { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_GenerateRSASignature(OEMCrypto_SESSION /*session*/, + const uint8_t* /*message*/, + size_t /*message_length*/, + uint8_t* /*signature*/, + size_t* /*signature_length*/, + RSA_Padding_Scheme /*padding_scheme*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_DeriveKeysFromSessionKey(OEMCrypto_SESSION /*session*/, + const uint8_t* /*enc_session_key*/, + size_t /*enc_session_key_length*/, + const uint8_t* /*mac_key_context*/, + size_t /*mac_key_context_length*/, + const uint8_t* /*enc_key_context*/, + size_t /*enc_key_context_length*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +uint32_t Level3_APIVersion() { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +uint8_t Level3_SecurityPatchLevel() { + return 0; +} + +const char* Level3_SecurityLevel() { + return "L3"; +} + +OEMCryptoResult Level3_GetHDCPCapability(OEMCrypto_HDCP_Capability */*current*/, + OEMCrypto_HDCP_Capability */*maximum*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +bool Level3_SupportsUsageTable() { + return false; +} + +bool Level3_IsAntiRollbackHwPresent() { + return false; +} + +OEMCryptoResult Level3_GetNumberOfOpenSessions(size_t* /*count*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_GetMaxNumberOfSessions(size_t* /*maximum*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_Generic_Encrypt(OEMCrypto_SESSION /*session*/, + const uint8_t* /*in_buffer*/, + size_t /*buffer_length*/, + const uint8_t* /*iv*/, + OEMCrypto_Algorithm /*algorithm*/, + uint8_t* /*out_buffer*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_Generic_Decrypt(OEMCrypto_SESSION /*session*/, + const uint8_t* /*in_buffer*/, + size_t /*buffer_length*/, + const uint8_t* /*iv*/, + OEMCrypto_Algorithm /*algorithm*/, + uint8_t* /*out_buffer*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_Generic_Sign(OEMCrypto_SESSION /*session*/, + const uint8_t* /*in_buffer*/, + size_t /*buffer_length*/, + OEMCrypto_Algorithm /*algorithm*/, + uint8_t* /*signature*/, + size_t* /*signature_length*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_Generic_Verify(OEMCrypto_SESSION /*session*/, + const uint8_t* /*in_buffer*/, + size_t /*buffer_length*/, + OEMCrypto_Algorithm /*algorithm*/, + const uint8_t* /*signature*/, + size_t /*signature_length*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_DeactivateUsageEntry(OEMCrypto_SESSION /*session*/, + const uint8_t */*pst*/, + size_t /*pst_length*/) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_UpdateUsageTable() { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_ReportUsage(OEMCrypto_SESSION session, + const uint8_t *pst, + size_t pst_length, + uint8_t *buffer, + size_t *buffer_length) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_DeleteUsageEntry(OEMCrypto_SESSION session, + const uint8_t* pst, + size_t pst_length, + const uint8_t *message, + size_t message_length, + const uint8_t *signature, + size_t signature_length) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_ForceDeleteUsageEntry(const uint8_t* pst, + size_t pst_length) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_DeleteOldUsageTable() { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} +bool Level3_IsSRMUpdateSupported() { + return false; +} +OEMCryptoResult Level3_GetCurrentSRMVersion(uint16_t* version) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_LoadSRM(const uint8_t* buffer, + size_t buffer_length){ + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_RemoveSRM() { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_CreateUsageTableHeader(uint8_t* header_buffer, + size_t* header_buffer_length) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_LoadUsageTableHeader(const uint8_t* buffer, + size_t buffer_length) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_CreateNewUsageEntry(OEMCrypto_SESSION session, + uint32_t *usage_entry_number) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_LoadUsageEntry(OEMCrypto_SESSION session, + uint32_t index, + const uint8_t *buffer, + size_t buffer_size) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_UpdateUsageEntry(OEMCrypto_SESSION session, + uint8_t* header_buffer, + size_t* header_buffer_length, + uint8_t* entry_buffer, + size_t* entry_buffer_length) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_ShrinkUsageTableHeader(uint32_t new_table_size, + uint8_t* header_buffer, + size_t* header_buffer_length) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_MoveEntry(OEMCrypto_SESSION session, + uint32_t new_index) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_CopyOldUsageEntry(OEMCrypto_SESSION session, + const uint8_t*pst, + size_t pst_length) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCryptoResult Level3_CreateOldUsageEntry(uint64_t time_since_license_received, + uint64_t time_since_first_decrypt, + uint64_t time_since_last_decrypt, + OEMCrypto_Usage_Entry_Status status, + uint8_t *server_mac_key, + uint8_t *client_mac_key, + const uint8_t* pst, + size_t pst_length) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +uint32_t Level3_SupportedCertificates() { + return 0; +} + +OEMCryptoResult Level3_GetOEMPublicCertificate(OEMCrypto_SESSION session, + uint8_t *public_cert, + size_t *public_cert_length) { + return OEMCrypto_ERROR_NOT_IMPLEMENTED; +} + +OEMCrypto_ProvisioningMethod Level3_GetProvisioningMethod() { + return OEMCrypto_ProvisioningError; +} + + +} // namespace wvoec3 diff --git a/libwvdrmengine/level3/mips/libwvlevel3.a b/libwvdrmengine/level3/mips/libwvlevel3.a deleted file mode 100644 index e0948b50..00000000 Binary files a/libwvdrmengine/level3/mips/libwvlevel3.a and /dev/null differ