Skip to content

Commit

Permalink
Init PSA in fuzz programs
Browse files Browse the repository at this point in the history
Signed-off-by: Przemek Stekiel <[email protected]>
  • Loading branch information
mprse committed Apr 25, 2023
1 parent 9dd2167 commit 8fa17b6
Show file tree
Hide file tree
Showing 9 changed files with 84 additions and 1 deletion.
8 changes: 8 additions & 0 deletions programs/fuzz/fuzz_client.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,13 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
mbedtls_ctr_drbg_init(&ctr_drbg);
mbedtls_entropy_init(&entropy);

#if defined(MBEDTLS_USE_PSA_CRYPTO)
psa_status_t status = psa_crypto_init();
if (status != PSA_SUCCESS) {
goto exit;
}
#endif /* MBEDTLS_USE_PSA_CRYPTO */

if (mbedtls_ctr_drbg_seed(&ctr_drbg, dummy_entropy, &entropy,
(const unsigned char *) pers, strlen(pers)) != 0) {
goto exit;
Expand Down Expand Up @@ -184,6 +191,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
mbedtls_ctr_drbg_free(&ctr_drbg);
mbedtls_ssl_config_free(&conf);
mbedtls_ssl_free(&ssl);
mbedtls_psa_crypto_free();

#else
(void) Data;
Expand Down
8 changes: 8 additions & 0 deletions programs/fuzz/fuzz_dtlsclient.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,13 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
mbedtls_ctr_drbg_init(&ctr_drbg);
mbedtls_entropy_init(&entropy);

#if defined(MBEDTLS_USE_PSA_CRYPTO)
psa_status_t status = psa_crypto_init();
if (status != PSA_SUCCESS) {
goto exit;
}
#endif /* MBEDTLS_USE_PSA_CRYPTO */

srand(1);
if (mbedtls_ctr_drbg_seed(&ctr_drbg, dummy_entropy, &entropy,
(const unsigned char *) pers, strlen(pers)) != 0) {
Expand Down Expand Up @@ -119,6 +126,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
mbedtls_ctr_drbg_free(&ctr_drbg);
mbedtls_ssl_config_free(&conf);
mbedtls_ssl_free(&ssl);
mbedtls_psa_crypto_free();

#else
(void) Data;
Expand Down
12 changes: 12 additions & 0 deletions programs/fuzz/fuzz_dtlsserver.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,13 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
mbedtls_entropy_init(&entropy);
mbedtls_ssl_cookie_init(&cookie_ctx);

#if defined(MBEDTLS_USE_PSA_CRYPTO)
psa_status_t status = psa_crypto_init();
if (status != PSA_SUCCESS) {
goto exit;
}
#endif /* MBEDTLS_USE_PSA_CRYPTO */

if (mbedtls_ctr_drbg_seed(&ctr_drbg, dummy_entropy, &entropy,
(const unsigned char *) pers, strlen(pers)) != 0) {
goto exit;
Expand Down Expand Up @@ -152,9 +159,14 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
exit:
mbedtls_ssl_cookie_free(&cookie_ctx);
mbedtls_entropy_free(&entropy);
#if defined(MBEDTLS_X509_CRT_PARSE_C) && defined(MBEDTLS_PEM_PARSE_C)
mbedtls_pk_free(&pkey);
mbedtls_x509_crt_free(&srvcert);
#endif
mbedtls_ctr_drbg_free(&ctr_drbg);
mbedtls_ssl_config_free(&conf);
mbedtls_ssl_free(&ssl);
mbedtls_psa_crypto_free();

#else
(void) Data;
Expand Down
10 changes: 10 additions & 0 deletions programs/fuzz/fuzz_privkey.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,14 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
}

mbedtls_pk_init(&pk);

#if defined(MBEDTLS_USE_PSA_CRYPTO)
psa_status_t status = psa_crypto_init();
if (status != PSA_SUCCESS) {
goto exit;
}
#endif /* MBEDTLS_USE_PSA_CRYPTO */

ret = mbedtls_pk_parse_key(&pk, Data, Size, NULL, 0);
if (ret == 0) {
#if defined(MBEDTLS_RSA_C)
Expand Down Expand Up @@ -63,7 +71,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
abort();
}
}
exit:
mbedtls_pk_free(&pk);
mbedtls_psa_crypto_free();
#else
(void) Data;
(void) Size;
Expand Down
8 changes: 8 additions & 0 deletions programs/fuzz/fuzz_pubkey.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,12 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
mbedtls_pk_context pk;

mbedtls_pk_init(&pk);
#if defined(MBEDTLS_USE_PSA_CRYPTO)
psa_status_t status = psa_crypto_init();
if (status != PSA_SUCCESS) {
goto exit;
}
#endif /* MBEDTLS_USE_PSA_CRYPTO */
ret = mbedtls_pk_parse_public_key(&pk, Data, Size);
if (ret == 0) {
#if defined(MBEDTLS_RSA_C)
Expand Down Expand Up @@ -64,7 +70,9 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
abort();
}
}
exit:
mbedtls_pk_free(&pk);
mbedtls_psa_crypto_free();
#else
(void) Data;
(void) Size;
Expand Down
15 changes: 14 additions & 1 deletion programs/fuzz/fuzz_server.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,13 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
mbedtls_ssl_ticket_init(&ticket_ctx);
#endif

#if defined(MBEDTLS_USE_PSA_CRYPTO)
psa_status_t status = psa_crypto_init();
if (status != PSA_SUCCESS) {
goto exit;
}
#endif /* MBEDTLS_USE_PSA_CRYPTO */

if (mbedtls_ctr_drbg_seed(&ctr_drbg, dummy_entropy, &entropy,
(const unsigned char *) pers, strlen(pers)) != 0) {
goto exit;
Expand Down Expand Up @@ -195,8 +202,14 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
mbedtls_entropy_free(&entropy);
mbedtls_ctr_drbg_free(&ctr_drbg);
mbedtls_ssl_config_free(&conf);
#if defined(MBEDTLS_X509_CRT_PARSE_C) && defined(MBEDTLS_PEM_PARSE_C)
mbedtls_x509_crt_free(&srvcert);
mbedtls_pk_free(&pkey);
#endif
mbedtls_ssl_free(&ssl);

#if defined(MBEDTLS_USE_PSA_CRYPTO)
mbedtls_psa_crypto_free();
#endif
#else
(void) Data;
(void) Size;
Expand Down
8 changes: 8 additions & 0 deletions programs/fuzz/fuzz_x509crl.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,19 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
unsigned char buf[4096];

mbedtls_x509_crl_init(&crl);
#if defined(MBEDTLS_USE_PSA_CRYPTO)
psa_status_t status = psa_crypto_init();
if (status != PSA_SUCCESS) {
goto exit;
}
#endif /* MBEDTLS_USE_PSA_CRYPTO */
ret = mbedtls_x509_crl_parse(&crl, Data, Size);
if (ret == 0) {
ret = mbedtls_x509_crl_info((char *) buf, sizeof(buf) - 1, " ", &crl);
}
exit:
mbedtls_x509_crl_free(&crl);
mbedtls_psa_crypto_free();
#else
(void) Data;
(void) Size;
Expand Down
8 changes: 8 additions & 0 deletions programs/fuzz/fuzz_x509crt.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,19 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
unsigned char buf[4096];

mbedtls_x509_crt_init(&crt);
#if defined(MBEDTLS_USE_PSA_CRYPTO)
psa_status_t status = psa_crypto_init();
if (status != PSA_SUCCESS) {
goto exit;
}
#endif /* MBEDTLS_USE_PSA_CRYPTO */
ret = mbedtls_x509_crt_parse(&crt, Data, Size);
if (ret == 0) {
ret = mbedtls_x509_crt_info((char *) buf, sizeof(buf) - 1, " ", &crt);
}
exit:
mbedtls_x509_crt_free(&crt);
mbedtls_psa_crypto_free();
#else
(void) Data;
(void) Size;
Expand Down
8 changes: 8 additions & 0 deletions programs/fuzz/fuzz_x509csr.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,19 @@ int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
unsigned char buf[4096];

mbedtls_x509_csr_init(&csr);
#if defined(MBEDTLS_USE_PSA_CRYPTO)
psa_status_t status = psa_crypto_init();
if (status != PSA_SUCCESS) {
goto exit;
}
#endif /* MBEDTLS_USE_PSA_CRYPTO */
ret = mbedtls_x509_csr_parse(&csr, Data, Size);
if (ret == 0) {
ret = mbedtls_x509_csr_info((char *) buf, sizeof(buf) - 1, " ", &csr);
}
exit:
mbedtls_x509_csr_free(&csr);
mbedtls_psa_crypto_free();
#else
(void) Data;
(void) Size;
Expand Down

0 comments on commit 8fa17b6

Please sign in to comment.