/******************************************************************************* * * 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; } OEMCrypto_ProvisioningMethod Level3_GetProvisioningMethod() { return OEMCrypto_ProvisioningError; } OEMCryptoResult Level3_GetOEMPublicCertificate(OEMCrypto_SESSION /*session*/, uint8_t */*public_cert*/, size_t */*public_cert_length*/) { return OEMCrypto_ERROR_NOT_IMPLEMENTED; } 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; } uint32_t Level3_SupportedCertificates() { return 0; } 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; } } // namespace wvoec3