LOG("KM_DecryptKey or KM_OpenKey has failed with=%x. with_secret_pwd=%d", ret, with_secret_pwd);
goto clean;
}
- size_t out_size_t;
+ size_t out_size_t = output.data_size;
ret = TEE_GetObjectBufferAttribute(key_handle, TEE_ATTR_SECRET_VALUE,
output.data, &out_size_t);
if (ret != TEE_SUCCESS) {
}
// Update Cipher
- size_t out_size_t;
+ size_t out_size_t = output.data_size;
ret = TEE_AEUpdate(op, data.data, data.data_size, output.data, &out_size_t);
if( ret != TEE_SUCCESS) {
LOG("Failed in TEE_AEUpdate(). ret=%x", ret);
uint32_t tag_len_bytes;
listNode *ctx = NULL;
KM_BinaryData output = {0, NULL};
- KM_BinaryData dummy_output = {0, NULL};
+ void* dummy_output = NULL;
+ size_t dummy_output_size_t = 0;
void *in_buffer = param[1].memref.buffer;
void *out_buffer = param[2].memref.buffer;
ret = TEE_ERROR_BAD_PARAMETERS;
goto clean;
}
- size_t out_size_t;
ret = TEE_AEDecryptFinal(op, NULL, 0,
- dummy_output.data, &out_size_t,
+ dummy_output, &dummy_output_size_t,
data.data, data.data_size);
- if (ret == TEE_SUCCESS && out_size_t != 0) {
- LOG("The output size of TEE_AEDecryptFinal() should be zero, but not. output_size=%d",
- dummy_output.data_size);
+ if (ret == TEE_SUCCESS && dummy_output_size_t != 0) {
+ LOG("The output size of TEE_AEDecryptFinal() should be zero, but not. dummy_output_size_t=%zu",
+ dummy_output_size_t);
ret = TEE_ERROR_GENERIC;
goto clean;
}
ret = TEE_ERROR_OUT_OF_MEMORY;
goto clean;
}
- size_t out_size_t;
- size_t tag_size_t;
+ size_t tag_size_t = output.data_size;
ret = TEE_AEEncryptFinal(op, NULL, 0,
- dummy_output.data, &out_size_t,
+ dummy_output, &dummy_output_size_t,
output.data, &tag_size_t);
- if (out_size_t > UINT32_MAX) {
- LOG("TEE_AEEncryptFinal returned too big output=%zu.", out_size_t);
- ret = TEE_ERROR_GENERIC;
- goto clean;
- }
if (tag_size_t > UINT32_MAX) {
LOG("TEE_AEEncryptFinal returned too big tag=%zu.", tag_size_t);
ret = TEE_ERROR_GENERIC;
clean:
// Remove Stored Operation. Operation & Key will be freed too.
ctxl_delete_node_id(op_id);
- if (dummy_output.data != NULL)
- TEE_Free(dummy_output.data);
+ if (dummy_output != NULL)
+ TEE_Free(dummy_output);
if (output.data != NULL)
TEE_Free(output.data);
return ret;
{
TEE_Result ret = TEE_SUCCESS;
- size_t out_size_t;
+ size_t out_size_t = *output_size;
ret = TEE_AsymmetricEncrypt(hndl, NULL, 0, input, input_size, output, &out_size_t);
if (TEE_SUCCESS != ret) {
LOG("TEE_AsymmetricEncrypt has failed with=%x.", ret);
{
TEE_Result ret = TEE_SUCCESS;
- size_t out_size_t;
+ size_t out_size_t = *output_size;
ret = TEE_AsymmetricDecrypt(hndl, NULL, 0, input, input_size, output, &out_size_t);
if (TEE_SUCCESS != ret) {
LOG("TEE_AsymmetricDecrypt has failed with=%x.", ret);
void *out;
uint32_t out_len;
- size_t sig_size_t;
+ size_t sig_size_t = *sig_size;
ret = TEE_AsymmetricSignDigest(hndl, NULL, 0, digest, digest_size, signature, &sig_size_t);
if (TEE_SUCCESS != ret) {
LOG("TEE_AsymmetricSignDigest has failed with=%x.", ret);
TEE_AEUpdateAAD(hndl, aad, aad_size);
}
- size_t out_size_t;
- size_t tag_size_t;
+ size_t out_size_t = *out_size;
+ size_t tag_size_t = *tag_size;
ret = TEE_AEEncryptFinal(hndl, data, data_size, out, &out_size_t, tag, &tag_size_t);
if (TEE_SUCCESS != ret) {
LOG("TEE_AEEncryptFinal failed with error=%x.", ret);
TEE_AEUpdateAAD(hndl, aad, aad_size);
}
- size_t out_size_t;
+ size_t out_size_t = *out_size;
ret = TEE_AEDecryptFinal(hndl, data, data_size, out, &out_size_t, tag, tag_size);
if (TEE_SUCCESS != ret) {
LOG("TEE_AEDecryptFinal failed with error=%x.", ret);
TEE_Result ret = TEE_SUCCESS;
TEE_MACInit(op, NULL, 0);
- size_t out_size_t;
+ size_t out_size_t = *out_size;
ret = TEE_MACComputeFinal(op, in, in_size, out, &out_size_t);
if (ret != TEE_SUCCESS) {
LOG("Failed to compute MAC: %x", ret);
TEE_Result ret = TEE_SUCCESS;
LOG("Digest");
- size_t out_size_t;
+ size_t out_size_t = *output_size;
ret = TEE_DigestDoFinal(hndl, input, input_size, output, &out_size_t);
if (ret != TEE_SUCCESS) {
LOG("TEE_DigestDoFinal has failed with=%x.", ret);
TEE_CipherInit(hndl, iv, iv_size);
LOGD("Cipher do final");
- size_t out_size_t;
+ size_t out_size_t = *output_size;
ret = TEE_CipherDoFinal(hndl, input, input_size, output, &out_size_t);
if (TEE_SUCCESS != ret) {
LOG("TEE_CipherDoFinal has failed with=%x.", ret);