OEMCrypto_PrepAndSignReleaseRequest() and OEMCrypto_LoadRelease() declarations are needed for L3 static adapter to build. Test: run_level3_static_tests Bug: 323957284 Change-Id: I9ccb4e51fd404b6a49e865545e9a5b4f22169cf7
199 lines
12 KiB
C++
199 lines
12 KiB
C++
#ifndef _LEVEL3_HAYSTACK_H_
|
|
#define _LEVEL3_HAYSTACK_H_
|
|
|
|
#include "OEMCryptoCENC.h"
|
|
#include "level3.h"
|
|
|
|
namespace haystack {
|
|
|
|
bool Haystack_IsInApp();
|
|
OEMCryptoResult Haystack_Initialize();
|
|
OEMCryptoResult Haystack_Terminate();
|
|
OEMCryptoResult Haystack_OpenSession(OEMCrypto_SESSION* session);
|
|
OEMCryptoResult Haystack_CloseSession(OEMCrypto_SESSION session);
|
|
OEMCryptoResult Haystack_GenerateDerivedKeys(OEMCrypto_SESSION session,
|
|
const uint8_t* mac_key_context,
|
|
size_t mac_key_context_length,
|
|
const uint8_t* enc_key_context,
|
|
size_t enc_key_context_length);
|
|
OEMCryptoResult Haystack_GenerateNonce(OEMCrypto_SESSION session,
|
|
uint32_t* nonce);
|
|
OEMCryptoResult Haystack_PrepAndSignProvisioningRequest(
|
|
OEMCrypto_SESSION session, uint8_t* message, size_t message_length,
|
|
size_t* core_message_length, uint8_t* signature, size_t* signature_length);
|
|
OEMCryptoResult Haystack_PrepAndSignLicenseRequest(
|
|
OEMCrypto_SESSION session, uint8_t* message, size_t message_length,
|
|
size_t* core_message_length, uint8_t* signature, size_t* signature_length);
|
|
OEMCryptoResult Haystack_PrepAndSignRenewalRequest(
|
|
OEMCrypto_SESSION session, uint8_t* message, size_t message_length,
|
|
size_t* core_message_length, uint8_t* signature, size_t* signature_length);
|
|
OEMCryptoResult Haystack_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);
|
|
OEMCryptoResult Haystack_DecryptCENC_V17(
|
|
OEMCrypto_SESSION session, const OEMCrypto_SampleDescription* samples,
|
|
size_t samples_length, const OEMCrypto_CENCEncryptPatternDesc* pattern);
|
|
OEMCryptoResult Haystack_IsKeyboxOrOEMCertValid();
|
|
OEMCryptoResult Haystack_GetOEMPublicCertificate(uint8_t* public_cert,
|
|
size_t* public_cert_length);
|
|
OEMCryptoResult Haystack_GetDeviceID(uint8_t* deviceID, size_t* idLength);
|
|
OEMCryptoResult Haystack_LoadOEMPrivateKey(OEMCrypto_SESSION session);
|
|
OEMCryptoResult Haystack_LoadProvisioning_V18(
|
|
OEMCrypto_SESSION session, const uint8_t* message, size_t message_length,
|
|
size_t core_message_length, const uint8_t* signature,
|
|
size_t signature_length, uint8_t* wrapped_private_key,
|
|
size_t* wrapped_private_key_length);
|
|
OEMCryptoResult Haystack_LoadDRMPrivateKey(OEMCrypto_SESSION session,
|
|
OEMCrypto_PrivateKeyType key_type,
|
|
const uint8_t* wrapped_rsa_key,
|
|
size_t wrapped_rsa_key_length);
|
|
OEMCryptoResult Haystack_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);
|
|
OEMCryptoResult Haystack_GetNumberOfOpenSessions(size_t* count);
|
|
OEMCryptoResult Haystack_GetMaxNumberOfSessions(size_t* csebepqt);
|
|
OEMCryptoResult Haystack_Generic_Encrypt_V17(
|
|
OEMCrypto_SESSION session, const uint8_t* in_buffer, size_t buffer_length,
|
|
const uint8_t* iv, OEMCrypto_Algorithm algorithm, uint8_t* out_buffer);
|
|
OEMCryptoResult Haystack_Generic_Decrypt_V17(
|
|
OEMCrypto_SESSION session, const uint8_t* in_buffer, size_t buffer_length,
|
|
const uint8_t* iv, OEMCrypto_Algorithm algorithm, uint8_t* out_buffer);
|
|
OEMCryptoResult Haystack_Generic_Sign_V17(OEMCrypto_SESSION session,
|
|
const uint8_t* in_buffer,
|
|
size_t buffer_length,
|
|
OEMCrypto_Algorithm algorithm,
|
|
uint8_t* signature,
|
|
size_t* signature_length);
|
|
OEMCryptoResult Haystack_Generic_Verify_V17(OEMCrypto_SESSION session,
|
|
const uint8_t* in_buffer,
|
|
size_t buffer_length,
|
|
OEMCrypto_Algorithm algorithm,
|
|
const uint8_t* signature,
|
|
size_t signature_length);
|
|
OEMCryptoResult Haystack_DeactivateUsageEntry(OEMCrypto_SESSION session,
|
|
const uint8_t* pst,
|
|
size_t pst_length);
|
|
OEMCryptoResult Haystack_ReportUsage(OEMCrypto_SESSION session,
|
|
const uint8_t* pst, size_t pst_length,
|
|
uint8_t* buffer, size_t* buffer_length);
|
|
OEMCryptoResult Haystack_CreateUsageTableHeader(uint8_t* header_buffer,
|
|
size_t* header_buffer_length);
|
|
OEMCryptoResult Haystack_LoadUsageTableHeader(const uint8_t* buffer,
|
|
size_t buffer_length);
|
|
OEMCryptoResult Haystack_CreateNewUsageEntry(OEMCrypto_SESSION session,
|
|
uint32_t* usage_entry_number);
|
|
OEMCryptoResult Haystack_ReuseUsageEntry(OEMCrypto_SESSION session,
|
|
uint32_t usage_entry_number);
|
|
OEMCryptoResult Haystack_LoadUsageEntry(OEMCrypto_SESSION session,
|
|
uint32_t index, const uint8_t* buffer,
|
|
size_t buffer_size);
|
|
OEMCryptoResult Haystack_UpdateUsageEntry(OEMCrypto_SESSION session,
|
|
uint8_t* header_buffer,
|
|
size_t* header_buffer_length,
|
|
uint8_t* entry_buffer,
|
|
size_t* entry_buffer_length);
|
|
OEMCryptoResult Haystack_ShrinkUsageTableHeader(uint32_t new_table_size,
|
|
uint8_t* header_buffer,
|
|
size_t* header_buffer_length);
|
|
OEMCryptoResult Haystack_MoveEntry(OEMCrypto_SESSION session,
|
|
uint32_t new_index);
|
|
OEMCryptoResult Haystack_SelectKey(const OEMCrypto_SESSION session,
|
|
const uint8_t* key_id, size_t key_id_length,
|
|
OEMCryptoCipherMode cipher_mode);
|
|
OEMCryptoResult Haystack_LoadLicense_V18(OEMCrypto_SESSION session,
|
|
const uint8_t* message,
|
|
size_t message_length,
|
|
size_t core_message_length,
|
|
const uint8_t* signature,
|
|
size_t signature_length);
|
|
OEMCryptoResult Haystack_SetDecryptHash(OEMCrypto_SESSION session,
|
|
uint32_t frame_number, uint32_t crc32);
|
|
OEMCryptoResult Haystack_GetHashErrorCode(OEMCrypto_SESSION session,
|
|
uint32_t* failed_frame_number);
|
|
OEMCryptoResult Haystack_BuildInformation(char* buffer, size_t* buffer_length);
|
|
OEMCryptoResult Haystack_LoadRenewal(OEMCrypto_SESSION session,
|
|
const uint8_t* message,
|
|
size_t message_length,
|
|
size_t core_message_length,
|
|
const uint8_t* signature,
|
|
size_t signature_length);
|
|
OEMCryptoResult Haystack_LoadEntitledContentKeys(
|
|
OEMCrypto_SESSION session, const uint8_t* message, size_t message_length,
|
|
size_t num_keys, const OEMCrypto_EntitledContentKeyObject* key_array);
|
|
Level3InitializationState Haystack_GetInitializationState();
|
|
void Haystack_OutputErrorLogs();
|
|
OEMCryptoResult Haystack_CreateEntitledKeySession(
|
|
OEMCrypto_SESSION oec_session, OEMCrypto_SESSION* key_session);
|
|
OEMCryptoResult Haystack_RemoveEntitledKeySession(
|
|
OEMCrypto_SESSION key_session);
|
|
OEMCryptoResult Haystack_ReassociateEntitledKeySession(
|
|
OEMCrypto_SESSION key_session, OEMCrypto_SESSION oec_session);
|
|
OEMCryptoResult Haystack_GetKeyHandle(OEMCrypto_SESSION session,
|
|
const uint8_t* content_key_id,
|
|
size_t content_key_id_length,
|
|
OEMCryptoCipherMode cipher_mode,
|
|
uint8_t* key_handle,
|
|
size_t* key_handle_length);
|
|
OEMCryptoResult Haystack_DecryptCENC(
|
|
const uint8_t* key_handle, size_t key_handle_length,
|
|
const OEMCrypto_SampleDescription* samples, size_t samples_length,
|
|
const OEMCrypto_CENCEncryptPatternDesc* pattern);
|
|
OEMCryptoResult Haystack_Generic_Encrypt(
|
|
const uint8_t* key_handle, size_t key_handle_length,
|
|
const OEMCrypto_SharedMemory* in_buffer, size_t in_buffer_length,
|
|
const uint8_t* iv, OEMCrypto_Algorithm algorithm,
|
|
OEMCrypto_SharedMemory* out_buffer);
|
|
OEMCryptoResult Haystack_Generic_Decrypt(
|
|
const uint8_t* key_handle, size_t key_handle_length,
|
|
const OEMCrypto_SharedMemory* in_buffer, size_t in_buffer_length,
|
|
const uint8_t* iv, OEMCrypto_Algorithm algorithm,
|
|
OEMCrypto_SharedMemory* out_buffer);
|
|
OEMCryptoResult Haystack_Generic_Sign(const uint8_t* key_handle,
|
|
size_t key_handle_length,
|
|
const OEMCrypto_SharedMemory* buffer,
|
|
size_t buffer_length,
|
|
OEMCrypto_Algorithm algorithm,
|
|
OEMCrypto_SharedMemory* signature,
|
|
size_t* signature_length);
|
|
OEMCryptoResult Haystack_Generic_Verify(const uint8_t* key_handle,
|
|
size_t key_handle_length,
|
|
const OEMCrypto_SharedMemory* buffer,
|
|
size_t buffer_length,
|
|
OEMCrypto_Algorithm algorithm,
|
|
const OEMCrypto_SharedMemory* signature,
|
|
size_t signature_length);
|
|
OEMCryptoResult Haystack_LoadLicense(
|
|
OEMCrypto_SESSION session, const uint8_t* context, size_t context_length,
|
|
const uint8_t* derivation_key, size_t derivation_key_length,
|
|
const uint8_t* message, size_t message_length, size_t core_message_length,
|
|
const uint8_t* signature, size_t signature_length);
|
|
OEMCryptoResult Haystack_LoadProvisioning(
|
|
OEMCrypto_SESSION session, const uint8_t* provision_request,
|
|
size_t provision_request_length, const uint8_t* message,
|
|
size_t message_length, size_t core_message_length, const uint8_t* signature,
|
|
size_t signature_length, uint8_t* wrapped_private_key,
|
|
size_t* wrapped_private_key_length);
|
|
OEMCryptoResult Haystack_LoadProvisioningCast(
|
|
OEMCrypto_SESSION session, const uint8_t* derivation_key,
|
|
size_t derivation_key_length, const uint8_t* provision_request,
|
|
size_t provision_request_length, const uint8_t* message,
|
|
size_t message_length, size_t core_message_length, const uint8_t* signature,
|
|
size_t signature_length, uint8_t* wrapped_private_key,
|
|
size_t* wrapped_private_key_length);
|
|
OEMCryptoResult Haystack_PrepAndSignReleaseRequest(
|
|
OEMCrypto_SESSION session, uint8_t* message, size_t message_length,
|
|
size_t* core_message_size, uint8_t* signature, size_t* signature_length);
|
|
OEMCryptoResult Haystack_LoadRelease(OEMCrypto_SESSION session,
|
|
const uint8_t* message,
|
|
size_t message_length,
|
|
size_t core_message_length,
|
|
const uint8_t* signature,
|
|
size_t signature_length);
|
|
} // namespace haystack
|
|
|
|
#endif
|