Files
android/libwvdrmengine/level3/mips/level3_stubs.cpp
Fred Gylys-Colwell e6aa70410b OEMCrypto v11 Refrence Code and Unit Tests
This CL is a merge from the widevine repo of
http://go/wvgerrit/16553 Prebuilt Level 3 OEMCrypto for Android
http://go/wvgerrit/16238 Require OEMCrypto v11 for Android N Unit Tests
http://go/wvgerrit/16484 Shared License Tests (OEMCrypto v11)
http://go/wvgerrit/16448 Pattern Decrypt Unit Tests and Reference Implementation
http://go/wvgerrit/16489 Enforce UNUSED Variables
http://go/wvgerrit/16479 Pattern Decrypt for Level 3 OEMCrypto
http://go/wvgerrit/16280 Correctly handle bad RSA key
http://go/wvgerrit/16315 Security Patch Level - haystack version
http://go/wvgerrit/16282 Correctly handle null pointer in GetKeyData
http://go/wvgerrit/16294 Initialize data for generation number

It contains the Level 3 implementation, as well.
mips/libwvlevel3.a  Level3 Library Jan 22 2016 14:30:27
arm/libwvlevel3.a  Level3 Library Jan 22 2016 15:03:55
x86/libwvlevel3.a  Level3 Library Jan 22 2016 13:52:29

b/26692954 [DRM] OEMCrypto v11 needed for Nexus devices

Change-Id: Ibb1384959620f63a1be1e82ce2952ec9f48f0d3e
2016-01-22 15:30:42 -08:00

286 lines
12 KiB
C++

/*******************************************************************************
*
* Copyright 2015 Google Inc. All Rights Reserved.
*
* Stubs for OEMCrypto Level 3 Fallback APIs. (use when level 3 doesn't compile)
*
******************************************************************************/
#include "level3.h"
namespace wvoec3 {
OEMCryptoResult Level3_Initialize(void) {
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*/) {
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_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_UpdateUsageTable() {
return OEMCrypto_ERROR_NOT_IMPLEMENTED;
}
OEMCryptoResult Level3_DeactivateUsageEntry(const uint8_t */*pst*/,
size_t /*pst_length*/) {
return OEMCrypto_ERROR_NOT_IMPLEMENTED;
}
OEMCryptoResult Level3_ReportUsage(OEMCrypto_SESSION /*session*/,
const uint8_t* /*pst*/, size_t /*pst_length*/,
OEMCrypto_PST_Report* /*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_DeleteUsageTable() {
return OEMCrypto_ERROR_NOT_IMPLEMENTED;
}
} // namespace wvoec3