|
|
|
|
@@ -28,6 +28,12 @@
|
|
|
|
|
#include "oemcrypto_usage_table_ref.h"
|
|
|
|
|
#include "string_conversions.h"
|
|
|
|
|
|
|
|
|
|
#if defined(_WIN32)
|
|
|
|
|
# define OEMCRYPTO_API extern "C" __declspec(dllexport)
|
|
|
|
|
#else // defined(_WIN32)
|
|
|
|
|
# define OEMCRYPTO_API extern "C" __attribute__((visibility("default")))
|
|
|
|
|
#endif // defined(_WIN32)
|
|
|
|
|
|
|
|
|
|
namespace {
|
|
|
|
|
const uint8_t kBakedInCertificateMagicBytes[] = {0xDE, 0xAD, 0xBE, 0xEF};
|
|
|
|
|
|
|
|
|
|
@@ -57,7 +63,7 @@ typedef struct {
|
|
|
|
|
uint8_t enc_rsa_key[];
|
|
|
|
|
} WrappedRSAKey;
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_Initialize(void) {
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_Initialize(void) {
|
|
|
|
|
if (crypto_engine) {
|
|
|
|
|
LOGE("------------------------- Calling Initialize without Terminate\n");
|
|
|
|
|
delete crypto_engine;
|
|
|
|
|
@@ -75,12 +81,12 @@ extern "C" OEMCryptoResult OEMCrypto_Initialize(void) {
|
|
|
|
|
return OEMCrypto_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_SetSandbox(const uint8_t* /*sandbox_id*/,
|
|
|
|
|
size_t /*sandbox_id_length*/) {
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_SetSandbox(
|
|
|
|
|
const uint8_t* /*sandbox_id*/, size_t /*sandbox_id_length*/) {
|
|
|
|
|
return OEMCrypto_ERROR_NOT_IMPLEMENTED;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_Terminate(void) {
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_Terminate(void) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("[OEMCrypto_Terminate(): not initialized]");
|
|
|
|
|
return OEMCrypto_ERROR_TERMINATE_FAILED;
|
|
|
|
|
@@ -92,7 +98,8 @@ extern "C" OEMCryptoResult OEMCrypto_Terminate(void) {
|
|
|
|
|
return OEMCrypto_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_OpenSession(OEMCrypto_SESSION* session) {
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_OpenSession(
|
|
|
|
|
OEMCrypto_SESSION* session) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_OpenSession: OEMCrypto not initialized.");
|
|
|
|
|
return OEMCrypto_ERROR_UNKNOWN_FAILURE;
|
|
|
|
|
@@ -107,7 +114,8 @@ extern "C" OEMCryptoResult OEMCrypto_OpenSession(OEMCrypto_SESSION* session) {
|
|
|
|
|
return OEMCrypto_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_CloseSession(OEMCrypto_SESSION session) {
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_CloseSession(
|
|
|
|
|
OEMCrypto_SESSION session) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_CloseSession: OEMCrypto not initialized.");
|
|
|
|
|
return OEMCrypto_ERROR_UNKNOWN_FAILURE;
|
|
|
|
|
@@ -119,7 +127,7 @@ extern "C" OEMCryptoResult OEMCrypto_CloseSession(OEMCrypto_SESSION session) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_GenerateDerivedKeys(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_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) {
|
|
|
|
|
@@ -161,7 +169,7 @@ static uint64_t TimeStamp(void) {
|
|
|
|
|
return tv.tv_sec * one_second + tv.tv_usec;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_GenerateNonce(OEMCrypto_SESSION session,
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_GenerateNonce(OEMCrypto_SESSION session,
|
|
|
|
|
uint32_t* nonce) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_GenerateNonce: OEMCrypto not initialized.");
|
|
|
|
|
@@ -204,7 +212,7 @@ extern "C" OEMCryptoResult OEMCrypto_GenerateNonce(OEMCrypto_SESSION session,
|
|
|
|
|
return OEMCrypto_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_GenerateSignature(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_GenerateSignature(
|
|
|
|
|
OEMCrypto_SESSION session, const uint8_t* message, size_t message_length,
|
|
|
|
|
uint8_t* signature, size_t* signature_length) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
@@ -252,7 +260,7 @@ bool RangeCheck(uint32_t message_length, const OEMCrypto_Substring& substring,
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_LoadKeys(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_LoadKeys(
|
|
|
|
|
OEMCrypto_SESSION session, const uint8_t* message, size_t message_length,
|
|
|
|
|
const uint8_t* signature, size_t signature_length,
|
|
|
|
|
OEMCrypto_Substring enc_mac_keys_iv, OEMCrypto_Substring enc_mac_keys,
|
|
|
|
|
@@ -308,7 +316,7 @@ extern "C" OEMCryptoResult OEMCrypto_LoadKeys(
|
|
|
|
|
license_type);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_LoadEntitledContentKeys(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_LoadEntitledContentKeys(
|
|
|
|
|
OEMCrypto_SESSION session, const uint8_t* message, size_t message_length,
|
|
|
|
|
size_t num_keys, const OEMCrypto_EntitledContentKeyObject* key_array) {
|
|
|
|
|
if (num_keys == 0) {
|
|
|
|
|
@@ -346,7 +354,7 @@ extern "C" OEMCryptoResult OEMCrypto_LoadEntitledContentKeys(
|
|
|
|
|
key_array);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_RefreshKeys(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_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) {
|
|
|
|
|
@@ -435,7 +443,7 @@ extern "C" OEMCryptoResult OEMCrypto_RefreshKeys(
|
|
|
|
|
return OEMCrypto_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_QueryKeyControl(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_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) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
@@ -470,7 +478,7 @@ extern "C" OEMCryptoResult OEMCrypto_QueryKeyControl(
|
|
|
|
|
return OEMCrypto_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_SelectKey(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_SelectKey(
|
|
|
|
|
const OEMCrypto_SESSION session, const uint8_t* key_id,
|
|
|
|
|
size_t key_id_length, OEMCryptoCipherMode cipher_mode) {
|
|
|
|
|
#ifndef NDEBUG
|
|
|
|
|
@@ -491,7 +499,7 @@ extern "C" OEMCryptoResult OEMCrypto_SelectKey(
|
|
|
|
|
return session_ctx->SelectContentKey(key_id_str, cipher_mode);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_DecryptCENC(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_DecryptCENC(
|
|
|
|
|
OEMCrypto_SESSION session, const uint8_t* data_addr, size_t data_length,
|
|
|
|
|
bool is_encrypted, const uint8_t* iv, size_t block_offset,
|
|
|
|
|
OEMCrypto_DestBufferDesc* out_buffer,
|
|
|
|
|
@@ -538,7 +546,7 @@ extern "C" OEMCryptoResult OEMCrypto_DecryptCENC(
|
|
|
|
|
return crypto_engine->PushDestination(out_buffer, subsample_flags);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_CopyBuffer(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_CopyBuffer(
|
|
|
|
|
OEMCrypto_SESSION session, const uint8_t* data_addr, size_t data_length,
|
|
|
|
|
OEMCrypto_DestBufferDesc* out_buffer, uint8_t subsample_flags) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
@@ -565,7 +573,7 @@ extern "C" OEMCryptoResult OEMCrypto_CopyBuffer(
|
|
|
|
|
return crypto_engine->PushDestination(out_buffer, subsample_flags);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_WrapKeyboxOrOEMCert(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_WrapKeyboxOrOEMCert(
|
|
|
|
|
const uint8_t* keybox, size_t keyBoxLength, uint8_t* wrappedKeybox,
|
|
|
|
|
size_t* wrappedKeyBoxLength, const uint8_t* transportKey,
|
|
|
|
|
size_t transportKeyLength) {
|
|
|
|
|
@@ -582,7 +590,7 @@ extern "C" OEMCryptoResult OEMCrypto_WrapKeyboxOrOEMCert(
|
|
|
|
|
return OEMCrypto_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_InstallKeyboxOrOEMCert(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_InstallKeyboxOrOEMCert(
|
|
|
|
|
const uint8_t* keybox, size_t keyBoxLength) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_InstallKeyboxOrOEMCert: OEMCrypto Not Initialized.");
|
|
|
|
|
@@ -597,7 +605,7 @@ extern "C" OEMCryptoResult OEMCrypto_InstallKeyboxOrOEMCert(
|
|
|
|
|
return OEMCrypto_ERROR_WRITE_KEYBOX;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_LoadTestKeybox(const uint8_t* buffer,
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_LoadTestKeybox(const uint8_t* buffer,
|
|
|
|
|
size_t length) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_LoadTestKeybox: OEMCrypto Not Initialized.");
|
|
|
|
|
@@ -610,7 +618,7 @@ extern "C" OEMCryptoResult OEMCrypto_LoadTestKeybox(const uint8_t* buffer,
|
|
|
|
|
return OEMCrypto_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_IsKeyboxOrOEMCertValid(void) {
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_IsKeyboxOrOEMCertValid(void) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_IsKeyboxOrOEMCertValid: OEMCrypto Not Initialized.");
|
|
|
|
|
return OEMCrypto_ERROR_UNKNOWN_FAILURE;
|
|
|
|
|
@@ -642,7 +650,7 @@ extern "C" OEMCryptoResult OEMCrypto_IsKeyboxOrOEMCertValid(void) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCrypto_ProvisioningMethod OEMCrypto_GetProvisioningMethod() {
|
|
|
|
|
OEMCRYPTO_API OEMCrypto_ProvisioningMethod OEMCrypto_GetProvisioningMethod() {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_GetProvisioningMethod: OEMCrypto Not Initialized.");
|
|
|
|
|
return OEMCrypto_ProvisioningError;
|
|
|
|
|
@@ -650,7 +658,7 @@ extern "C" OEMCrypto_ProvisioningMethod OEMCrypto_GetProvisioningMethod() {
|
|
|
|
|
return crypto_engine->config_provisioning_method();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_GetOEMPublicCertificate(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_GetOEMPublicCertificate(
|
|
|
|
|
OEMCrypto_SESSION session, uint8_t* public_cert,
|
|
|
|
|
size_t* public_cert_length) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
@@ -671,7 +679,7 @@ extern "C" OEMCryptoResult OEMCrypto_GetOEMPublicCertificate(
|
|
|
|
|
public_cert_length);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_GetDeviceID(uint8_t* deviceID,
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_GetDeviceID(uint8_t* deviceID,
|
|
|
|
|
size_t* idLength) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_GetDeviceID: OEMCrypto Not Initialized.");
|
|
|
|
|
@@ -700,7 +708,7 @@ extern "C" OEMCryptoResult OEMCrypto_GetDeviceID(uint8_t* deviceID,
|
|
|
|
|
return OEMCrypto_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_GetKeyData(uint8_t* keyData,
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_GetKeyData(uint8_t* keyData,
|
|
|
|
|
size_t* keyDataLength) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_GetKeyData: OEMCrypto Not Initialized.");
|
|
|
|
|
@@ -729,7 +737,7 @@ extern "C" OEMCryptoResult OEMCrypto_GetKeyData(uint8_t* keyData,
|
|
|
|
|
return OEMCrypto_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_GetRandom(uint8_t* randomData,
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_GetRandom(uint8_t* randomData,
|
|
|
|
|
size_t dataLength) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_GetRandom: OEMCrypto Not Initialized.");
|
|
|
|
|
@@ -744,7 +752,7 @@ extern "C" OEMCryptoResult OEMCrypto_GetRandom(uint8_t* randomData,
|
|
|
|
|
return OEMCrypto_ERROR_UNKNOWN_FAILURE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_RewrapDeviceRSAKey30(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_RewrapDeviceRSAKey30(
|
|
|
|
|
OEMCrypto_SESSION session, const uint32_t* unaligned_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,
|
|
|
|
|
@@ -861,7 +869,7 @@ extern "C" OEMCryptoResult OEMCrypto_RewrapDeviceRSAKey30(
|
|
|
|
|
return OEMCrypto_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_RewrapDeviceRSAKey(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_RewrapDeviceRSAKey(
|
|
|
|
|
OEMCrypto_SESSION session, const uint8_t* message, size_t message_length,
|
|
|
|
|
const uint8_t* signature, size_t signature_length,
|
|
|
|
|
const uint32_t* unaligned_nonce, const uint8_t* enc_rsa_key,
|
|
|
|
|
@@ -981,7 +989,7 @@ extern "C" OEMCryptoResult OEMCrypto_RewrapDeviceRSAKey(
|
|
|
|
|
return OEMCrypto_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_LoadDeviceRSAKey(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_LoadDeviceRSAKey(
|
|
|
|
|
OEMCrypto_SESSION session, const uint8_t* wrapped_rsa_key,
|
|
|
|
|
size_t wrapped_rsa_key_length) {
|
|
|
|
|
if (wrapped_rsa_key == NULL) {
|
|
|
|
|
@@ -1050,7 +1058,7 @@ extern "C" OEMCryptoResult OEMCrypto_LoadDeviceRSAKey(
|
|
|
|
|
return OEMCrypto_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_LoadTestRSAKey() {
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_LoadTestRSAKey() {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_LoadTestRSAKey: OEMCrypto Not Initialized.");
|
|
|
|
|
return OEMCrypto_ERROR_UNKNOWN_FAILURE;
|
|
|
|
|
@@ -1059,7 +1067,7 @@ extern "C" OEMCryptoResult OEMCrypto_LoadTestRSAKey() {
|
|
|
|
|
return OEMCrypto_ERROR_UNKNOWN_FAILURE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_GenerateRSASignature(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_GenerateRSASignature(
|
|
|
|
|
OEMCrypto_SESSION session, const uint8_t* message, size_t message_length,
|
|
|
|
|
uint8_t* signature, size_t* signature_length,
|
|
|
|
|
RSA_Padding_Scheme padding_scheme) {
|
|
|
|
|
@@ -1096,7 +1104,7 @@ extern "C" OEMCryptoResult OEMCrypto_GenerateRSASignature(
|
|
|
|
|
return sts;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_DeriveKeysFromSessionKey(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_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,
|
|
|
|
|
@@ -1135,19 +1143,19 @@ extern "C" OEMCryptoResult OEMCrypto_DeriveKeysFromSessionKey(
|
|
|
|
|
return OEMCrypto_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" uint32_t OEMCrypto_APIVersion() { return 15; }
|
|
|
|
|
OEMCRYPTO_API uint32_t OEMCrypto_APIVersion() { return 15; }
|
|
|
|
|
|
|
|
|
|
extern "C" uint8_t OEMCrypto_Security_Patch_Level() {
|
|
|
|
|
OEMCRYPTO_API uint8_t OEMCrypto_Security_Patch_Level() {
|
|
|
|
|
uint8_t security_patch_level = crypto_engine->config_security_patch_level();
|
|
|
|
|
return security_patch_level;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" const char* OEMCrypto_SecurityLevel() {
|
|
|
|
|
OEMCRYPTO_API const char* OEMCrypto_SecurityLevel() {
|
|
|
|
|
const char* security_level = crypto_engine->config_security_level();
|
|
|
|
|
return security_level;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_GetHDCPCapability(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_GetHDCPCapability(
|
|
|
|
|
OEMCrypto_HDCP_Capability* current, OEMCrypto_HDCP_Capability* maximum) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_GetHDCPCapability: OEMCrypto Not Initialized.");
|
|
|
|
|
@@ -1160,7 +1168,7 @@ extern "C" OEMCryptoResult OEMCrypto_GetHDCPCapability(
|
|
|
|
|
return OEMCrypto_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" uint32_t OEMCrypto_GetAnalogOutputFlags() {
|
|
|
|
|
OEMCRYPTO_API uint32_t OEMCrypto_GetAnalogOutputFlags() {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_GetAnalogOutputFlags: OEMCrypto Not Initialized.");
|
|
|
|
|
return 0;
|
|
|
|
|
@@ -1168,11 +1176,11 @@ extern "C" uint32_t OEMCrypto_GetAnalogOutputFlags() {
|
|
|
|
|
return crypto_engine->analog_output_flags();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" const char* OEMCrypto_BuildInformation() {
|
|
|
|
|
OEMCRYPTO_API const char* OEMCrypto_BuildInformation() {
|
|
|
|
|
return "OEMCrypto Ref Code " __DATE__ " " __TIME__;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" uint32_t OEMCrypto_ResourceRatingTier(){
|
|
|
|
|
OEMCRYPTO_API uint32_t OEMCrypto_ResourceRatingTier() {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_ResourceRatingTier: OEMCrypto Not Initialized.");
|
|
|
|
|
return 0;
|
|
|
|
|
@@ -1180,7 +1188,7 @@ extern "C" uint32_t OEMCrypto_ResourceRatingTier(){
|
|
|
|
|
return crypto_engine->resource_rating();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" bool OEMCrypto_SupportsUsageTable() {
|
|
|
|
|
OEMCRYPTO_API bool OEMCrypto_SupportsUsageTable() {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_SupportsUsageTable: OEMCrypto Not Initialized.");
|
|
|
|
|
return 0;
|
|
|
|
|
@@ -1189,7 +1197,7 @@ extern "C" bool OEMCrypto_SupportsUsageTable() {
|
|
|
|
|
return supports_usage;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_GetNumberOfOpenSessions(size_t* count) {
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_GetNumberOfOpenSessions(size_t* count) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_GetNumberOfOpenSessions: OEMCrypto Not Initialized.");
|
|
|
|
|
return OEMCrypto_ERROR_UNKNOWN_FAILURE;
|
|
|
|
|
@@ -1199,7 +1207,8 @@ extern "C" OEMCryptoResult OEMCrypto_GetNumberOfOpenSessions(size_t* count) {
|
|
|
|
|
return OEMCrypto_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_GetMaxNumberOfSessions(size_t* maximum) {
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_GetMaxNumberOfSessions(
|
|
|
|
|
size_t* maximum) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_GetMaxNumberOfSessions: OEMCrypto Not Initialized.");
|
|
|
|
|
return OEMCrypto_ERROR_UNKNOWN_FAILURE;
|
|
|
|
|
@@ -1209,14 +1218,14 @@ extern "C" OEMCryptoResult OEMCrypto_GetMaxNumberOfSessions(size_t* maximum) {
|
|
|
|
|
return OEMCrypto_SUCCESS;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" bool OEMCrypto_IsAntiRollbackHwPresent() {
|
|
|
|
|
OEMCRYPTO_API bool OEMCrypto_IsAntiRollbackHwPresent() {
|
|
|
|
|
bool anti_rollback_hw_present =
|
|
|
|
|
crypto_engine->config_is_anti_rollback_hw_present();
|
|
|
|
|
|
|
|
|
|
return anti_rollback_hw_present;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" uint32_t OEMCrypto_SupportedCertificates() {
|
|
|
|
|
OEMCRYPTO_API uint32_t OEMCrypto_SupportedCertificates() {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_GetProvisioningMethod: OEMCrypto Not Initialized.");
|
|
|
|
|
return 0;
|
|
|
|
|
@@ -1228,7 +1237,7 @@ extern "C" uint32_t OEMCrypto_SupportedCertificates() {
|
|
|
|
|
OEMCrypto_Supports_RSA_CAST;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_Generic_Encrypt(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_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) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
@@ -1254,7 +1263,7 @@ extern "C" OEMCryptoResult OEMCrypto_Generic_Encrypt(
|
|
|
|
|
return sts;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_Generic_Decrypt(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_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) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
@@ -1280,11 +1289,9 @@ extern "C" OEMCryptoResult OEMCrypto_Generic_Decrypt(
|
|
|
|
|
return sts;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_Generic_Sign(OEMCrypto_SESSION session,
|
|
|
|
|
const uint8_t* in_buffer,
|
|
|
|
|
size_t buffer_length,
|
|
|
|
|
OEMCrypto_Algorithm algorithm,
|
|
|
|
|
uint8_t* signature,
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_Generic_Sign(
|
|
|
|
|
OEMCrypto_SESSION session, const uint8_t* in_buffer, size_t buffer_length,
|
|
|
|
|
OEMCrypto_Algorithm algorithm, uint8_t* signature,
|
|
|
|
|
size_t* signature_length) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_Generic_Sign: OEMCrypto Not Initialized.");
|
|
|
|
|
@@ -1312,7 +1319,7 @@ extern "C" OEMCryptoResult OEMCrypto_Generic_Sign(OEMCrypto_SESSION session,
|
|
|
|
|
return sts;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_Generic_Verify(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_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) {
|
|
|
|
|
@@ -1341,11 +1348,11 @@ extern "C" OEMCryptoResult OEMCrypto_Generic_Verify(
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// TODO(fredgc): remove this.
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_UpdateUsageTable() {
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_UpdateUsageTable() {
|
|
|
|
|
return OEMCrypto_ERROR_NOT_IMPLEMENTED;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_DeactivateUsageEntry(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_DeactivateUsageEntry(
|
|
|
|
|
OEMCrypto_SESSION session, const uint8_t* pst, size_t pst_length) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_DeactivateUsageEntry: OEMCrypto Not Initialized.");
|
|
|
|
|
@@ -1363,7 +1370,7 @@ extern "C" OEMCryptoResult OEMCrypto_DeactivateUsageEntry(
|
|
|
|
|
return session_ctx->DeactivateUsageEntry(pstv);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_ReportUsage(OEMCrypto_SESSION session,
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_ReportUsage(OEMCrypto_SESSION session,
|
|
|
|
|
const uint8_t* pst,
|
|
|
|
|
size_t pst_length,
|
|
|
|
|
uint8_t* buffer,
|
|
|
|
|
@@ -1388,21 +1395,20 @@ extern "C" OEMCryptoResult OEMCrypto_ReportUsage(OEMCrypto_SESSION session,
|
|
|
|
|
return sts;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_DeleteUsageEntry(OEMCrypto_SESSION,
|
|
|
|
|
const uint8_t*, size_t,
|
|
|
|
|
const uint8_t*, size_t,
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_DeleteUsageEntry(
|
|
|
|
|
OEMCrypto_SESSION, const uint8_t*, size_t, const uint8_t*, size_t,
|
|
|
|
|
const uint8_t*, size_t) {
|
|
|
|
|
// TODO(fredgc): delete this.
|
|
|
|
|
return OEMCrypto_ERROR_NOT_IMPLEMENTED;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_ForceDeleteUsageEntry(const uint8_t*,
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_ForceDeleteUsageEntry(const uint8_t*,
|
|
|
|
|
size_t) {
|
|
|
|
|
// TODO(fredgc): delete this.
|
|
|
|
|
return OEMCrypto_ERROR_NOT_IMPLEMENTED;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_DeleteOldUsageTable() {
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_DeleteOldUsageTable() {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_DeleteOldUsageTable: OEMCrypto Not Initialized.");
|
|
|
|
|
return OEMCrypto_ERROR_UNKNOWN_FAILURE;
|
|
|
|
|
@@ -1413,7 +1419,7 @@ extern "C" OEMCryptoResult OEMCrypto_DeleteOldUsageTable() {
|
|
|
|
|
return crypto_engine->usage_table().DeleteOldUsageTable();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" bool OEMCrypto_IsSRMUpdateSupported() {
|
|
|
|
|
OEMCRYPTO_API bool OEMCrypto_IsSRMUpdateSupported() {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_IsSRMUpdateSupported: OEMCrypto Not Initialized.");
|
|
|
|
|
return false;
|
|
|
|
|
@@ -1422,7 +1428,8 @@ extern "C" bool OEMCrypto_IsSRMUpdateSupported() {
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_GetCurrentSRMVersion(uint16_t* version) {
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_GetCurrentSRMVersion(
|
|
|
|
|
uint16_t* version) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_GetCurrentSRMVersion: OEMCrypto Not Initialized.");
|
|
|
|
|
return OEMCrypto_ERROR_UNKNOWN_FAILURE;
|
|
|
|
|
@@ -1434,7 +1441,7 @@ extern "C" OEMCryptoResult OEMCrypto_GetCurrentSRMVersion(uint16_t* version) {
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_LoadSRM(const uint8_t* buffer,
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_LoadSRM(const uint8_t* buffer,
|
|
|
|
|
size_t buffer_length) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_LoadSRM: OEMCrypto Not Initialized.");
|
|
|
|
|
@@ -1443,7 +1450,7 @@ extern "C" OEMCryptoResult OEMCrypto_LoadSRM(const uint8_t* buffer,
|
|
|
|
|
return crypto_engine->load_srm(buffer, buffer_length);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_RemoveSRM() {
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_RemoveSRM() {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_RemoveSRM: OEMCrypto Not Initialized.");
|
|
|
|
|
return OEMCrypto_ERROR_UNKNOWN_FAILURE;
|
|
|
|
|
@@ -1451,7 +1458,7 @@ extern "C" OEMCryptoResult OEMCrypto_RemoveSRM() {
|
|
|
|
|
return crypto_engine->remove_srm();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_CreateUsageTableHeader(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_CreateUsageTableHeader(
|
|
|
|
|
uint8_t* header_buffer, size_t* header_buffer_length) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_CreateUsageTableHeader: OEMCrypto Not Initialized.");
|
|
|
|
|
@@ -1465,7 +1472,7 @@ extern "C" OEMCryptoResult OEMCrypto_CreateUsageTableHeader(
|
|
|
|
|
header_buffer, header_buffer_length);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_LoadUsageTableHeader(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_LoadUsageTableHeader(
|
|
|
|
|
const uint8_t* buffer, size_t buffer_length) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_LoadUsageTableHeader: OEMCrypto Not Initialized.");
|
|
|
|
|
@@ -1482,7 +1489,7 @@ extern "C" OEMCryptoResult OEMCrypto_LoadUsageTableHeader(
|
|
|
|
|
return crypto_engine->usage_table().LoadUsageTableHeader(bufferv);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_CreateNewUsageEntry(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_CreateNewUsageEntry(
|
|
|
|
|
OEMCrypto_SESSION session, uint32_t* usage_entry_number) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_CreateNewUsageEntry: OEMCrypto Not Initialized.");
|
|
|
|
|
@@ -1503,9 +1510,8 @@ extern "C" OEMCryptoResult OEMCrypto_CreateNewUsageEntry(
|
|
|
|
|
return sts;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_LoadUsageEntry(OEMCrypto_SESSION session,
|
|
|
|
|
uint32_t index,
|
|
|
|
|
const uint8_t* buffer,
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_LoadUsageEntry(
|
|
|
|
|
OEMCrypto_SESSION session, uint32_t index, const uint8_t* buffer,
|
|
|
|
|
size_t buffer_size) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_LoadUsageEntry: OEMCrypto Not Initialized.");
|
|
|
|
|
@@ -1527,7 +1533,7 @@ extern "C" OEMCryptoResult OEMCrypto_LoadUsageEntry(OEMCrypto_SESSION session,
|
|
|
|
|
return session_ctx->LoadUsageEntry(index, bufferv);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_UpdateUsageEntry(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_UpdateUsageEntry(
|
|
|
|
|
OEMCrypto_SESSION session, uint8_t* header_buffer,
|
|
|
|
|
size_t* header_buffer_length, uint8_t* entry_buffer,
|
|
|
|
|
size_t* entry_buffer_length) {
|
|
|
|
|
@@ -1550,7 +1556,7 @@ extern "C" OEMCryptoResult OEMCrypto_UpdateUsageEntry(
|
|
|
|
|
entry_buffer, entry_buffer_length);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_ShrinkUsageTableHeader(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_ShrinkUsageTableHeader(
|
|
|
|
|
uint32_t new_table_size, uint8_t* header_buffer,
|
|
|
|
|
size_t* header_buffer_length) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
@@ -1564,7 +1570,7 @@ extern "C" OEMCryptoResult OEMCrypto_ShrinkUsageTableHeader(
|
|
|
|
|
new_table_size, header_buffer, header_buffer_length);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_MoveEntry(OEMCrypto_SESSION session,
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_MoveEntry(OEMCrypto_SESSION session,
|
|
|
|
|
uint32_t new_index) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_MoveEntry: OEMCrypto Not Initialized.");
|
|
|
|
|
@@ -1581,7 +1587,7 @@ extern "C" OEMCryptoResult OEMCrypto_MoveEntry(OEMCrypto_SESSION session,
|
|
|
|
|
return session_ctx->MoveEntry(new_index);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_CopyOldUsageEntry(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_CopyOldUsageEntry(
|
|
|
|
|
OEMCrypto_SESSION session, const uint8_t* pst, size_t pst_length) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_CopyOldUsageEntry: OEMCrypto Not Initialized.");
|
|
|
|
|
@@ -1599,7 +1605,7 @@ extern "C" OEMCryptoResult OEMCrypto_CopyOldUsageEntry(
|
|
|
|
|
return session_ctx->CopyOldUsageEntry(pstv);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_CreateOldUsageEntry(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_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,
|
|
|
|
|
@@ -1617,11 +1623,11 @@ extern "C" OEMCryptoResult OEMCrypto_CreateOldUsageEntry(
|
|
|
|
|
pst_length);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" uint32_t OEMCrypto_SupportsDecryptHash() {
|
|
|
|
|
OEMCRYPTO_API uint32_t OEMCrypto_SupportsDecryptHash() {
|
|
|
|
|
return OEMCrypto_CRC_Clear_Buffer;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_InitializeDecryptHash(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_InitializeDecryptHash(
|
|
|
|
|
OEMCrypto_SESSION session) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_InitializeDecryptHash: OEMCrypto Not Initialized.");
|
|
|
|
|
@@ -1635,9 +1641,8 @@ extern "C" OEMCryptoResult OEMCrypto_InitializeDecryptHash(
|
|
|
|
|
return session_ctx->InitializeDecryptHash();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_SetDecryptHash(OEMCrypto_SESSION session,
|
|
|
|
|
uint32_t frame_number,
|
|
|
|
|
const uint8_t* hash,
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_SetDecryptHash(
|
|
|
|
|
OEMCrypto_SESSION session, uint32_t frame_number, const uint8_t* hash,
|
|
|
|
|
size_t hash_length) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_SetDecryptHash: OEMCrypto Not Initialized.");
|
|
|
|
|
@@ -1651,7 +1656,7 @@ extern "C" OEMCryptoResult OEMCrypto_SetDecryptHash(OEMCrypto_SESSION session,
|
|
|
|
|
return session_ctx->SetDecryptHash(frame_number, hash, hash_length);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
extern "C" OEMCryptoResult OEMCrypto_GetHashErrorCode(
|
|
|
|
|
OEMCRYPTO_API OEMCryptoResult OEMCrypto_GetHashErrorCode(
|
|
|
|
|
OEMCrypto_SESSION session, uint32_t* failed_frame_number) {
|
|
|
|
|
if (!crypto_engine) {
|
|
|
|
|
LOGE("OEMCrypto_GetHashErrorCode: OEMCrypto Not Initialized.");
|
|
|
|
|
|