diff --git a/reference/src/clientimpl/src/sa_crypto_cipher_process.c b/reference/src/clientimpl/src/sa_crypto_cipher_process.c index a9a62c48..471e6006 100644 --- a/reference/src/clientimpl/src/sa_crypto_cipher_process.c +++ b/reference/src/clientimpl/src/sa_crypto_cipher_process.c @@ -159,7 +159,6 @@ sa_status sa_crypto_cipher_process( #endif // ENABLE_SVP *bytes_to_process = cipher_process->bytes_to_process; - ERROR("bytes_to_process = %d\n", cipher_process->bytes_to_process); } while (false); RELEASE_COMMAND(cipher_process); diff --git a/reference/src/clientimpl/src/sa_process_common_encryption.c b/reference/src/clientimpl/src/sa_process_common_encryption.c index 811c884c..308185df 100644 --- a/reference/src/clientimpl/src/sa_process_common_encryption.c +++ b/reference/src/clientimpl/src/sa_process_common_encryption.c @@ -117,7 +117,8 @@ sa_status sa_process_common_encryption( subsample_length_s[j].bytes_of_protected_data = samples[i].subsample_lengths[j].bytes_of_protected_data; } - CREATE_PARAM(param1, samples[i].subsample_lengths, param1_size); + // Fix for 32-bit: use the converted sa_subsample_length_s array, not the original + CREATE_PARAM(param1, subsample_length_s, param1_size); uint32_t param1_type = TA_PARAM_IN; size_t param2_size; uint32_t param2_type; diff --git a/reference/src/taimpl/src/internal/ta.c b/reference/src/taimpl/src/internal/ta.c index 5ff94f54..49f984d4 100644 --- a/reference/src/taimpl/src/internal/ta.c +++ b/reference/src/taimpl/src/internal/ta.c @@ -482,6 +482,7 @@ static sa_status ta_invoke_key_unwrap( sa_unwrap_parameters_aes_gcm_s parameters_aes_gcm_s; sa_unwrap_parameters_chacha20_s parameters_chacha_20_s; sa_unwrap_parameters_chacha20_poly1305_s parameters_chacha_20_poly_1305_s; + sa_unwrap_parameters_ec_elgamal_s parameters_ec_elgamal_s; sa_unwrap_parameters_rsa_oaep_s parameters_rsa_oaep_s; sa_unwrap_parameters_aes_cbc parameters_aes_cbc; sa_unwrap_parameters_aes_ctr parameters_aes_ctr; @@ -608,8 +609,11 @@ static sa_status ta_invoke_key_unwrap( return SA_STATUS_INVALID_PARAMETER; } - memcpy(¶meters_ec_elgamal, params[2].mem_ref, params[2].mem_ref_size); - algorithm_parameters = params[2].mem_ref; + // Fix for 32-bit platforms: convert uint64_t fields to size_t + memcpy(¶meters_ec_elgamal_s, params[2].mem_ref, params[2].mem_ref_size); + parameters_ec_elgamal.offset = (size_t)parameters_ec_elgamal_s.offset; + parameters_ec_elgamal.key_length = (size_t)parameters_ec_elgamal_s.key_length; + algorithm_parameters = ¶meters_ec_elgamal; break; case SA_CIPHER_ALGORITHM_RSA_OAEP: @@ -1826,7 +1830,8 @@ static sa_status ta_invoke_process_common_encryption( sa_sample sample; do { sample.subsample_count = process_common_encryption->subsample_count; - if (params[1].mem_ref_size != sizeof(sa_subsample_length) * sample.subsample_count) { + // Fix for 32-bit: client sends sa_subsample_length_s (uint64_t fields) + if (params[1].mem_ref_size != sizeof(sa_subsample_length_s) * sample.subsample_count) { ERROR("params[1].mem_ref_size is invalid"); return SA_STATUS_INVALID_PARAMETER; }