OEMCrypto implementation of OEMCrypto_PrepAndSignReleaseRequest

Bug: 295956275
Change-Id: I1f3e7f83c644c16419cc99862c9147d321cfdb5f
This commit is contained in:
Vicky Min
2023-11-29 03:21:56 +00:00
committed by Robert Shih
parent 49debffe63
commit 9e26c42882
2 changed files with 31 additions and 8 deletions

View File

@@ -71,12 +71,12 @@ typedef OEMCryptoResult (*L1_GenerateSignature_t)(OEMCrypto_SESSION session,
typedef OEMCryptoResult (*L1_PrepAndSignLicenseRequest_t)(
OEMCrypto_SESSION session, uint8_t* message, size_t message_length,
size_t* core_message_length, uint8_t* signature, size_t* signature_length);
typedef OEMCryptoResult (*L1_PrepAndSignLicenseRelease_t)(
OEMCrypto_SESSION session, uint8_t* message, size_t message_length,
size_t* core_message_length, uint8_t* signature, size_t* signature_length);
typedef OEMCryptoResult (*L1_PrepAndSignRenewalRequest_t)(
OEMCrypto_SESSION session, uint8_t* message, size_t message_length,
size_t* core_message_length, uint8_t* signature, size_t* signature_length);
typedef OEMCryptoResult (*L1_PrepAndSignReleaseRequest_t)(
OEMCrypto_SESSION session, uint8_t* message, size_t message_length,
size_t* core_message_size, uint8_t* signature, size_t* signature_length);
typedef OEMCryptoResult (*L1_PrepAndSignProvisioningRequest_t)(
OEMCrypto_SESSION session, uint8_t* message, size_t message_length,
size_t* core_message_length, uint8_t* signature, size_t* signature_length);
@@ -357,7 +357,7 @@ struct FunctionPointers {
L1_GenerateNonce_t GenerateNonce;
L1_GenerateSignature_t GenerateSignature;
L1_PrepAndSignLicenseRequest_t PrepAndSignLicenseRequest;
L1_PrepAndSignLicenseRelease_t PrepAndSignLicenseRelease;
L1_PrepAndSignLicenseRelease_t PrepAndSignReleaseRequest;
L1_PrepAndSignRenewalRequest_t PrepAndSignRenewalRequest;
L1_PrepAndSignProvisioningRequest_t PrepAndSignProvisioningRequest;
L1_LoadLicense_t LoadLicense;
@@ -987,7 +987,7 @@ class Adapter {
LOOKUP_ALL( 9, GenerateRSASignature, OEMCrypto_GenerateRSASignature);
LOOKUP( 8, 15, GenerateSignature, OEMCrypto_GenerateSignature);
LOOKUP_ALL(16, PrepAndSignLicenseRequest, OEMCrypto_PrepAndSignLicenseRequest);
LOOKUP_ALL(16, PrepAndSignLicenseRelease, OEMCrypto_PrepAndSignLicenseRelease);
LOOKUP_ALL(16, PrepAndSignReleaseRequest, OEMCrypto_PrepAndSignReleaseRequest);
LOOKUP_ALL(16, PrepAndSignRenewalRequest, OEMCrypto_PrepAndSignRenewalRequest);
LOOKUP_ALL(16, PrepAndSignProvisioningRequest, OEMCrypto_PrepAndSignProvisioningRequest);
LOOKUP_ALL( 8, Generic_Decrypt_V17, OEMCrypto_Generic_Decrypt_V17);
@@ -2088,9 +2088,24 @@ extern "C" OEMCryptoResult OEMCrypto_PrepAndSignLicenseRequest(
return OEMCrypto_ERROR_NOT_IMPLEMENTED;
}
extern "C" OEMCryptoResult OEMCrypto_PrepAndSignLicenseRelease(
extern "C" OEMCryptoResult OEMCrypto_PrepAndSignReleaseRequest(
OEMCrypto_SESSION session, uint8_t* message, size_t message_length,
size_t* core_message_length, uint8_t* signature, size_t* signature_length) {
if (!gAdapter.get()) return OEMCrypto_ERROR_UNKNOWN_FAILURE;
LevelSession pair = gAdapter->GetSession(session);
if (!pair.fcn) return OEMCrypto_ERROR_INVALID_SESSION;
if (pair.fcn->PrepAndSignReleaseRequest != nullptr) {
return pair.fcn->PrepAndSignReleaseRequest(
pair.session, message, message_length, core_message_length, signature,
signature_length);
}
if (pair.fcn->version < 19) {
if (pair.fcn->PrepAndSignRenewalRequest != nullptr) {
return pair.fcn->PrepAndSignRenewalRequest(
pair.session, message, message_length, core_message_length, signature,
signature_length);
}
}
return OEMCrypto_ERROR_NOT_IMPLEMENTED;
}
@@ -2770,6 +2785,14 @@ extern "C" OEMCryptoResult OEMCrypto_GetUsageEntryInfo(
OEMCrypto_SESSION session, OEMCrypto_Usage_Entry_Status* status,
int64_t* seconds_since_license_received,
int64_t* seconds_since_first_decrypt) {
if (!gAdapter) return OEMCrypto_ERROR_UNKNOWN_FAILURE;
LevelSession pair = gAdapter->GetSession(session);
if (!pair.fcn) return OEMCrypto_ERROR_INVALID_SESSION;
if (pair.fcn->GetUsageEntryInfo != nullptr) {
return fcn->GetUsageEntryInfo(pair.session, status,
seconds_since_license_received,
seconds_since_first_decrypt);
}
return OEMCrypto_ERROR_NOT_IMPLEMENTED;
}

View File

@@ -729,7 +729,7 @@ typedef enum OEMCrypto_SignatureHashAlgorithm {
#define OEMCrypto_LoadLicense _oecc144
#define OEMCrypto_LoadProvisioning _oecc145
#define OEMCrypto_LoadProvisioningCast _oecc146
#define OEMCrypto_PrepAndSignLicenseRelease _oecc147
#define OEMCrypto_PrepAndSignReleaseRequest _oecc147
#define OEMCrypto_GetUsageEntryInfo _oecc148
#define OEMCrypto_GetBCCType _oecc149
// clang-format on
@@ -1159,7 +1159,7 @@ OEMCryptoResult OEMCrypto_PrepAndSignLicenseRequest(
* @version
* This method is new in API version 19.
*/
OEMCryptoResult OEMCrypto_PrepAndSignLicenseRelease(
OEMCryptoResult OEMCrypto_PrepAndSignReleaseRequest(
OEMCrypto_SESSION session, uint8_t* message, size_t message_length,
size_t* core_message_size, uint8_t* signature, size_t* signature_length);