diff --git a/library/psa_crypto_cipher.c b/library/psa_crypto_cipher.c index 66e0426e3..c309cfb18 100644 --- a/library/psa_crypto_cipher.c +++ b/library/psa_crypto_cipher.c @@ -485,16 +485,17 @@ static psa_status_t cipher_encrypt( const psa_key_attributes_t *attributes, output + operation.iv_length, output_size - operation.iv_length, &olength ); - accumulated_length += olength; if( status != PSA_SUCCESS ) goto exit; + accumulated_length += olength; + status = cipher_finish( &operation, output + accumulated_length, output_size - accumulated_length, &olength ); - accumulated_length += olength; if( status != PSA_SUCCESS ) goto exit; + accumulated_length += olength; *output_length = accumulated_length; exit: @@ -534,17 +535,17 @@ static psa_status_t cipher_decrypt( const psa_key_attributes_t *attributes, status = cipher_update( &operation, input + operation.iv_length, input_length - operation.iv_length, output, output_size, &olength ); - accumulated_length = olength; if( status != PSA_SUCCESS ) goto exit; + accumulated_length = olength; status = cipher_finish( &operation, output + accumulated_length, output_size - accumulated_length, &olength ); - accumulated_length += olength; if( status != PSA_SUCCESS ) goto exit; + accumulated_length += olength; *output_length = accumulated_length; exit: