Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 31 additions & 25 deletions src/sec_adapter_soc_provisioning.c
Original file line number Diff line number Diff line change
Expand Up @@ -553,42 +553,42 @@ Sec_Result SecSocProv_Ta_Provision(Sec_ProcessorHandle* processorHandle, sa_key_
switch (key_type) {
case WIDEVINE_OEM_SOC_PROVISIONING:
#if ENABLE_SOC_PROVISION_WIDEVINE
SEC_LOG_ERROR("Handling Widevine provisioning");
SEC_LOG("Handling Widevine provisioning");
status = provisioning_ta(processorHandle, WIDEVINE_OBJ, WIDEVINE_OEM_SOC_PROVISIONING, sizeof(WidevineOemProvisioning));
#endif
break;

case PLAYREADY_MODEL_3K_SOC_PROVISIONING:
#if ENABLE_SOC_PROVISION_PLAYREADY_3K
SEC_LOG_ERROR("Handling PlayReady 3K provisioning");
SEC_LOG("Handling PlayReady 3K provisioning");
status = provisioning_ta(processorHandle, PLAY_READY_OBJ, PLAYREADY_MODEL_3K_SOC_PROVISIONING, sizeof(PlayReadyProvisioning));
#endif
break;

case PLAYREADY_MODEL_2K_SOC_PROVISIONING:
#if ENABLE_SOC_PROVISION_PLAYREADY_2K
SEC_LOG_ERROR("Handling PlayReady 2K provisioning");
SEC_LOG("Handling PlayReady 2K provisioning");
status = provisioning_ta(processorHandle, PLAY_READY_OBJ, PLAYREADY_MODEL_2K_SOC_PROVISIONING, sizeof(PlayReadyProvisioning));
#endif
break;

case APPLE_MFI_SOC_PROVISIONING:
#if ENABLE_SOC_PROVISION_APPLE_MFI
SEC_LOG_ERROR("Handling Apple MFI provisioning");
SEC_LOG("Handling Apple MFi provisioning");
status = provisioning_ta(processorHandle, APPLE_MFI_OBJ, APPLE_MFI_SOC_PROVISIONING, sizeof(AppleMfiProvisioning));
#endif
break;

case APPLE_FAIRPLAY_SOC_PROVISIONING:
#if ENABLE_SOC_PROVISION_APPLE_FAIRPLAY
SEC_LOG_ERROR("Handling Apple FairPlay provisioning");
SEC_LOG("Handling Apple FairPlay provisioning");
status = provisioning_ta(processorHandle, APPLE_FAIR_PLAY_OBJ, APPLE_FAIRPLAY_SOC_PROVISIONING, sizeof(AppleFairPlayProvisioning));
#endif
break;

case NETFLIX_SOC_PROVISIONING:
#if ENABLE_SOC_PROVISION_NETFLIX
SEC_LOG_ERROR("Handling Netflix provisioning");
SEC_LOG("Handling Netflix provisioning");
status = provisioning_ta(processorHandle, NETFLIX_OBJ, NETFLIX_SOC_PROVISIONING, sizeof(NetflixProvisioning));
#endif
break;
Expand All @@ -601,12 +601,13 @@ Sec_Result SecSocProv_Ta_Provision(Sec_ProcessorHandle* processorHandle, sa_key_
}


bool provisioning_ta(Sec_ProcessorHandle* processorHandle, size_t numPaths, sa_key_type_soc_ta provisioningType, size_t dataSize) {
Sec_Result provisioning_ta(Sec_ProcessorHandle* processorHandle, size_t numPaths, sa_key_type_soc_ta provisioningType,
size_t dataSize) {
sa_status status;
sa_import_parameters_soc* parameters = (sa_import_parameters_soc*)malloc(sizeof(sa_import_parameters_soc));
if (!parameters) {
SEC_LOG_ERROR("Failed to allocate memory");
return false;
return SEC_RESULT_FAILURE;
}
parameters->length[0] = (sizeof(sa_import_parameters_soc) >> 8) & 0xff;

Expand All @@ -619,88 +620,93 @@ bool provisioning_ta(Sec_ProcessorHandle* processorHandle, size_t numPaths, sa_k
case WIDEVINE_OEM_SOC_PROVISIONING:
WidevineOemProvisioning* provisioningData = NULL;
if (readWidevineData(processorHandle, &provisioningData) == false) {
SEC_LOG_ERROR("Failed to read widevine provisioning data");
SEC_LOG_ERROR("Failed to read Widevine provisioning data");
SEC_FREE(parameters);
return SEC_RESULT_FAILURE;
}
status = sa_key_provision_ta(WIDEVINE_OEM_PROVISIONING, provisioningData, dataSize, parameters);
SEC_FREE(provisioningData);
SEC_FREE(parameters);
if (status != SA_STATUS_OK) {
SEC_LOG_ERROR("Falied sa_key_provision_ta call in widevine");
SEC_LOG_ERROR("Failed sa_key_provision_ta call in Widevine");
return SEC_RESULT_FAILURE;
}
SEC_LOG_ERROR("Widevine provisioning completed successfully");
SEC_LOG("Widevine provisioning completed successfully");
break;

case PLAYREADY_MODEL_2K_SOC_PROVISIONING:
PlayReadyProvisioning* playReadyprovisioning2kData = NULL;
if (readPlayReadyData(processorHandle, &playReadyprovisioning2kData, PLAYREADY_MODEL_2K) == false) {
SEC_LOG_ERROR("Failed to read PlayReady 2k provisioning data");
SEC_LOG_ERROR("Failed to read PlayReady 2K provisioning data");
SEC_FREE(parameters);
return SEC_RESULT_FAILURE;
}
status = sa_key_provision_ta(PLAYREADY_MODEL_PROVISIONING, playReadyprovisioning2kData, dataSize, parameters);
SEC_FREE(playReadyprovisioning2kData);
SEC_FREE(parameters);
if (status != SA_STATUS_OK) {
SEC_LOG_ERROR("Falied sa_key_provision_ta call in playready 2k");
SEC_LOG_ERROR("Failed sa_key_provision_ta call in PlayReady 2K");
return SEC_RESULT_FAILURE;
}
SEC_LOG_ERROR("PlayReady Model 2K provisioning completed successfully");
SEC_LOG("PlayReady Model 2K provisioning completed successfully");
break;

case PLAYREADY_MODEL_3K_SOC_PROVISIONING:
PlayReadyProvisioning* playReadyprovisioning3kData = NULL;
if (readPlayReadyData(processorHandle, &playReadyprovisioning3kData, PLAYREADY_MODEL_3K) == false) {
SEC_LOG_ERROR("Failed to read PlayReady 3k provisioning data");
SEC_LOG_ERROR("Failed to read PlayReady 3K provisioning data");
SEC_FREE(parameters);
return SEC_RESULT_FAILURE;
}
status = sa_key_provision_ta(PLAYREADY_MODEL_PROVISIONING, playReadyprovisioning3kData, dataSize, parameters);
SEC_FREE(playReadyprovisioning3kData);
SEC_FREE(parameters);
if (status != SA_STATUS_OK) {
SEC_LOG_ERROR("Falied sa_key_provision_ta call in playready 3k");
SEC_LOG_ERROR("Failed sa_key_provision_ta call in PlayReady 3K");
return SEC_RESULT_FAILURE;
}
SEC_LOG_ERROR("PlayReady Model 3K provisioning completed successfully");
SEC_LOG("PlayReady Model 3K provisioning completed successfully");
break;

case APPLE_MFI_SOC_PROVISIONING:
AppleMfiProvisioning* appleMfiprovisioningData = NULL;
if (readAppleMfiData(processorHandle, &appleMfiprovisioningData) == false) {
SEC_LOG_ERROR("Failed to read ApplaMFI provisioning data");
SEC_LOG_ERROR("Failed to read Apple MFi provisioning data");
SEC_FREE(parameters);
return SEC_RESULT_FAILURE;
}
status = sa_key_provision_ta(APPLE_MFI_PROVISIONING, appleMfiprovisioningData, dataSize, parameters);
SEC_FREE(appleMfiprovisioningData);
SEC_FREE(parameters);
if (status != SA_STATUS_OK) {
SEC_LOG_ERROR("Failed to call sa_key_provision_ta in Apple_Mfi");
SEC_LOG_ERROR("Failed to call sa_key_provision_ta in Apple MFi");
return SEC_RESULT_FAILURE;
}
SEC_LOG_ERROR("Apple_Mfi provisioning completed successfully");
SEC_LOG("Apple MFi provisioning completed successfully");
break;

case APPLE_FAIRPLAY_SOC_PROVISIONING:
AppleFairPlayProvisioning* appleFairplayProvisioningData = NULL;
if (readAppleFairPlayData(processorHandle, &appleFairplayProvisioningData) == false) {
SEC_LOG_ERROR("Failed to read ApplyFairplay provisioning data");
SEC_LOG_ERROR("Failed to read Apple FairPlay provisioning data");
SEC_FREE(parameters);
return SEC_RESULT_FAILURE;
}
status = sa_key_provision_ta(APPLE_FAIRPLAY_PROVISIONING, appleFairplayProvisioningData, dataSize, parameters);
SEC_FREE(appleFairplayProvisioningData);
SEC_FREE(parameters);
if (status != SA_STATUS_OK) {
SEC_LOG_ERROR("Failed to call sa_key_provision_ta in AppleFairplay");
SEC_LOG_ERROR("Failed to call sa_key_provision_ta in Apple FairPlay");
return SEC_RESULT_FAILURE;
}
SEC_LOG_ERROR("AppeFairplay provisioning completed successfully");
SEC_LOG("Apple FairPlay provisioning completed successfully");
break;

case NETFLIX_SOC_PROVISIONING:
SEC_LOG_ERROR("Handling Netflix provisioning");
NetflixProvisioning* netflixProvisioningData = NULL;
if (readNetflixData(processorHandle, &netflixProvisioningData) == false) {
SEC_LOG_ERROR("Failed to read Netflix provisioning data");
SEC_FREE(parameters);
return SEC_RESULT_FAILURE;
}
status = sa_key_provision_ta(NETFLIX_PROVISIONING, netflixProvisioningData, dataSize, parameters);
Expand All @@ -710,7 +716,7 @@ bool provisioning_ta(Sec_ProcessorHandle* processorHandle, size_t numPaths, sa_k
SEC_LOG_ERROR("Failed to call sa_key_provision_ta in Netflix");
return SEC_RESULT_FAILURE;
}
SEC_LOG_ERROR("Netflix provisioning completed successfully");
SEC_LOG("Netflix provisioning completed successfully");
break;

default:
Expand Down
5 changes: 3 additions & 2 deletions src/sec_adapter_soc_provisioning.h
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,10 @@ Sec_Result store_raw_data(Sec_ProcessorHandle* processorHandle, Sec_StorageLoc l
* @param numPaths The number of paths for provisioning.
* @param provisioningType The type of provisioning to be used.
* @param dataSize The size of the data associated with the provisioning.
* @return true if successful, false otherwise.
* @return Result of the operation.
*/
bool provisioning_ta(Sec_ProcessorHandle* processorHandle, size_t numPaths,sa_key_type_soc_ta provisioningType, size_t dataSize);
Sec_Result provisioning_ta(Sec_ProcessorHandle* processorHandle, size_t numPaths, sa_key_type_soc_ta provisioningType,
size_t dataSize);

/**
* @brief Initiates provisioning using a trusted application key type.
Expand Down
4 changes: 2 additions & 2 deletions src/sec_adapter_utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -314,7 +314,7 @@ Sec_Result SecUtils_MkDir(const char* path) {
if (*p == '/') {
*p = 0;
if (mkdir(tmp, S_IRWXU) != 0 && errno != EEXIST) {
SEC_LOG_ERROR("Warning Mkdir %s failed", tmp);
SEC_LOG("Warning: Mkdir %s failed: %s", tmp, strerror(errno));
//return SEC_RESULT_FAILURE;
Comment thread
riwoh marked this conversation as resolved.
}

Expand All @@ -323,7 +323,7 @@ Sec_Result SecUtils_MkDir(const char* path) {
}

if (mkdir(tmp, S_IRWXU) != 0 && errno != EEXIST) {
SEC_LOG_ERROR("Warning Mkdir %s failed", tmp);
SEC_LOG("Warning: Mkdir %s failed: %s", tmp, strerror(errno));
//return SEC_RESULT_FAILURE;
}

Expand Down
Loading