Improve program from first round review comments
Following an initial review:
- Swap printf for mbedtls_printf
- Remove MBEDTLS_xxx dependencies
- Demonstrate correct buffer sizing
Signed-off-by: Thomas Daubney <thomas.daubney@arm.com>
diff --git a/programs/psa/psa_hash.c b/programs/psa/psa_hash.c
index 4be9c38..07d0b4f 100644
--- a/programs/psa/psa_hash.c
+++ b/programs/psa/psa_hash.c
@@ -31,6 +31,7 @@
#include <stdlib.h>
#include "mbedtls/build_info.h"
+#include "mbedtls/platform.h"
#define TEST_SHA256_HASH { \
0x5a, 0x09, 0xe8, 0xfa, 0x9c, 0x77, 0x80, 0x7b, 0x24, 0xe9, 0x9c, 0x9c, \
@@ -43,10 +44,10 @@
const size_t mbedtls_test_sha256_hash_len =
sizeof(mbedtls_test_sha256_hash);
-#if !defined(MBEDTLS_PSA_CRYPTO_C) || !defined(MBEDTLS_SHA256_C)
+#if !defined(MBEDTLS_PSA_CRYPTO_C) || !defined(PSA_WANT_ALG_SHA_256)
int main(void)
{
- printf("MBEDTLS_PSA_CRYPTO_C and MBEDTLS_SHA256_C"
+ mbedtls_printf("MBEDTLS_PSA_CRYPTO_C and MBEDTLS_SHA256_C"
"not defined.\r\n");
return EXIT_SUCCESS;
}
@@ -56,16 +57,16 @@
{
uint8_t buf[] = "Hello World!";
psa_status_t status;
- uint8_t hash[PSA_HASH_MAX_SIZE];
+ uint8_t hash[PSA_HASH_LENGTH(PSA_ALG_SHA_256)];
size_t hash_size;
psa_hash_operation_t sha256_psa = PSA_HASH_OPERATION_INIT;
psa_hash_operation_t cloned_sha256 = PSA_HASH_OPERATION_INIT;
- printf("PSA Crypto API: SHA-256 example\n\n");
+ mbedtls_printf("PSA Crypto API: SHA-256 example\n\n");
status = psa_crypto_init();
if (status != PSA_SUCCESS) {
- printf("psa_crypto_init failed\n");
+ mbedtls_printf("psa_crypto_init failed\n");
return EXIT_FAILURE;
}
@@ -74,35 +75,35 @@
status = psa_hash_setup(&sha256_psa, PSA_ALG_SHA_256);
if (status != PSA_SUCCESS) {
- printf("psa_hash_setup failed\n");
+ mbedtls_printf("psa_hash_setup failed\n");
return EXIT_FAILURE;
}
status = psa_hash_update(&sha256_psa, buf, sizeof(buf));
if (status != PSA_SUCCESS) {
- printf("psa_hash_update failed\n");
+ mbedtls_printf("psa_hash_update failed\n");
return EXIT_FAILURE;
}
status = psa_hash_clone(&sha256_psa, &cloned_sha256);
if (status != PSA_SUCCESS) {
- printf("PSA hash clone failed");
+ mbedtls_printf("PSA hash clone failed");
return EXIT_FAILURE;
}
status = psa_hash_finish(&sha256_psa, hash, sizeof(hash), &hash_size);
if (status != PSA_SUCCESS) {
- printf("psa_hash_finish failed\n");
+ mbedtls_printf("psa_hash_finish failed\n");
return EXIT_FAILURE;
}
status =
psa_hash_verify(&cloned_sha256, mbedtls_test_sha256_hash, mbedtls_test_sha256_hash_len);
if (status != PSA_SUCCESS) {
- printf("psa_hash_verify failed\n");
+ mbedtls_printf("psa_hash_verify failed\n");
return EXIT_FAILURE;
} else {
- printf("Multi-part hash operation successful!\n");
+ mbedtls_printf("Multi-part hash operation successful!\n");
}
/* Compute hash using one-shot function call */
@@ -114,29 +115,29 @@
hash, sizeof(hash),
&hash_size);
if (status != PSA_SUCCESS) {
- printf("psa_hash_compute failed\n");
+ mbedtls_printf("psa_hash_compute failed\n");
return EXIT_FAILURE;
}
for (size_t j = 0; j < mbedtls_test_sha256_hash_len; j++) {
if (hash[j] != mbedtls_test_sha256_hash[j]) {
- printf("One-shot hash operation failed!\n\n");
+ mbedtls_printf("One-shot hash operation failed!\n\n");
return EXIT_FAILURE;
}
}
- printf("One-shot hash operation successful!\n\n");
+ mbedtls_printf("One-shot hash operation successful!\n\n");
- printf("The SHA-256( '%s' ) is:\n", buf);
+ mbedtls_printf("The SHA-256( '%s' ) is:\n", buf);
for (size_t j = 0; j < mbedtls_test_sha256_hash_len; j++) {
if (j % 8 == 0) {
- printf("\n ");
+ mbedtls_printf("\n ");
}
- printf("%02x ", hash[j]);
+ mbedtls_printf("%02x ", hash[j]);
}
- printf("\n");
+ mbedtls_printf("\n");
mbedtls_psa_crypto_free();
return EXIT_SUCCESS;