From 84966c1bda07dd01e38786b2caa9b7453a5adb95 Mon Sep 17 00:00:00 2001 From: Ben Taylor Date: Tue, 2 Jun 2026 15:47:08 +0100 Subject: [PATCH] Add further testing Signed-off-by: Ben Taylor --- tests/suites/test_suite_pkcs7.data | 8 ++++++ tests/suites/test_suite_pkcs7.function | 35 ++++++++++++++++++++++++-- 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/tests/suites/test_suite_pkcs7.data b/tests/suites/test_suite_pkcs7.data index 7e220fc2e6..88dc5f27ef 100644 --- a/tests/suites/test_suite_pkcs7.data +++ b/tests/suites/test_suite_pkcs7.data @@ -18,6 +18,14 @@ PKCS7 Signed Data Parse reused object after multiple signers depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY pkcs7_parse_reuse:"../framework/data_files/pkcs7_data_multiple_signed.der":"../framework/data_files/pkcs7_data_no_signers.der":MBEDTLS_PKCS7_SIGNED_DATA +PKCS7 Signed Data Parse reused object from multiple signers to one signer +depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY +pkcs7_parse_reuse:"../framework/data_files/pkcs7_data_multiple_signed.der":"../framework/data_files/pkcs7_data_cert_signed_sha256.der":MBEDTLS_PKCS7_SIGNED_DATA + +PKCS7 Signed Data Parse free resets context after multiple signers +depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY +pkcs7_parse_free_resets_context:"../framework/data_files/pkcs7_data_multiple_signed.der":MBEDTLS_PKCS7_SIGNED_DATA + PKCS7 Signed Data Parse Fail with multiple certs #4 depends_on:PSA_WANT_ALG_SHA_256:PSA_WANT_KEY_TYPE_RSA_PUBLIC_KEY pkcs7_parse:"../framework/data_files/pkcs7_data_multiple_certs_signed.der":MBEDTLS_ERR_PKCS7_FEATURE_UNAVAILABLE diff --git a/tests/suites/test_suite_pkcs7.function b/tests/suites/test_suite_pkcs7.function index 3fccbaceaf..f6068879f8 100644 --- a/tests/suites/test_suite_pkcs7.function +++ b/tests/suites/test_suite_pkcs7.function @@ -83,13 +83,13 @@ void pkcs7_parse_reuse(char *first_pkcs7_file, char *second_pkcs7_file, size_t first_buflen; size_t second_buflen; + mbedtls_pkcs7_init(&pkcs7); + /* PKCS7 uses X509 which itself relies on PK under the hood and the latter * can use PSA to store keys and perform operations so psa_crypto_init() * must be called before. */ USE_PSA_INIT(); - mbedtls_pkcs7_init(&pkcs7); - TEST_EQUAL(mbedtls_pk_load_file(first_pkcs7_file, &first_pkcs7_buf, &first_buflen), 0); @@ -113,6 +113,37 @@ exit: } /* END_CASE */ +/* BEGIN_CASE depends_on:MBEDTLS_FS_IO */ +void pkcs7_parse_free_resets_context(char *pkcs7_file, int res_expect) +{ + unsigned char *pkcs7_buf = NULL; + mbedtls_pkcs7 pkcs7; + size_t buflen; + + mbedtls_pkcs7_init(&pkcs7); + + /* PKCS7 uses X509 which itself relies on PK under the hood and the latter + * can use PSA to store keys and perform operations so psa_crypto_init() + * must be called before. */ + USE_PSA_INIT(); + + TEST_EQUAL(mbedtls_pk_load_file(pkcs7_file, &pkcs7_buf, &buflen), 0); + + TEST_EQUAL(mbedtls_pkcs7_parse_der(&pkcs7, pkcs7_buf, buflen), + res_expect); + + mbedtls_pkcs7_free(&pkcs7); + + TEST_ASSERT(pkcs7.raw.p == NULL); + TEST_ASSERT(pkcs7.signed_data.signers.next == NULL); + +exit: + mbedtls_pkcs7_free(&pkcs7); + mbedtls_free(pkcs7_buf); + USE_PSA_DONE(); +} +/* END_CASE */ + /* BEGIN_CASE depends_on:MBEDTLS_FS_IO:MBEDTLS_X509_CRT_PARSE_C:PSA_HAVE_ALG_SOME_RSA_VERIFY */ void pkcs7_verify(char *pkcs7_file, char *crt_files,