From 90b28b5cef16baeff731505bc306af9254e607dc Mon Sep 17 00:00:00 2001 From: JacobBarthelmeh Date: Fri, 1 Mar 2024 23:43:46 +0700 Subject: [PATCH] add test case for verify of stream signed PKCS7 bundle --- certs/renewcerts.sh | 4 ++ certs/test-stream-sign.p7b | Bin 0 -> 6228 bytes tests/api.c | 76 ++++++++++++++++++++++++++++++++++++- 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 certs/test-stream-sign.p7b diff --git a/certs/renewcerts.sh b/certs/renewcerts.sh index 5485656b6..d2482f510 100755 --- a/certs/renewcerts.sh +++ b/certs/renewcerts.sh @@ -854,6 +854,10 @@ run_renewcerts(){ echo "" openssl crl2pkcs7 -nocrl -certfile ./client-cert.pem -out test-degenerate.p7b -outform DER check_result $? "" + + openssl smime -sign -in ./ca-cert.pem -out test-stream-sign.p7b -signer ./ca-cert.pem -nodetach -nocerts -binary -outform DER -stream -inkey ./ca-key.pem + check_result $? "" + echo "End of section" echo "---------------------------------------------------------------------" diff --git a/certs/test-stream-sign.p7b b/certs/test-stream-sign.p7b new file mode 100644 index 0000000000000000000000000000000000000000..05f6643c1b4679b77375ab3db0facb0d69e3a3c9 GIT binary patch literal 6228 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 signedBundleSz)? signedBundleSz - i : + chunkSz; + rc = wc_PKCS7_VerifySignedData(pkcs7, buf + i, sz); + if (rc < 0 ) { + if (rc == WC_PKCS7_WANT_READ_E) { + i += sz; + continue; + } + break; + } + else { + break; + } + } + ExpectIntEQ(rc, PKCS7_SIGNEEDS_CHECK); + wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; + + + /* now try with malformed bundle */ + ExpectNotNull(pkcs7 = wc_PKCS7_New(HEAP_HINT, testDevId)); + ExpectIntEQ(wc_PKCS7_InitWithCert(pkcs7, NULL, 0), 0); + buf[signedBundleSz - 2] = buf[signedBundleSz - 2] + 1; + for (i = 0; i < signedBundleSz;) { + int sz = (i + chunkSz > signedBundleSz)? signedBundleSz - i : + chunkSz; + rc = wc_PKCS7_VerifySignedData(pkcs7, buf + i, sz); + if (rc < 0 ) { + if (rc == WC_PKCS7_WANT_READ_E) { + i += sz; + continue; + } + break; + } + else { + break; + } + } + ExpectIntEQ(rc, ASN_PARSE_E); + wc_PKCS7_Free(pkcs7); + pkcs7 = NULL; + if (buf != NULL) + XFREE(buf, HEAP_HINT, DYNAMIC_TYPE_FILE); + } +#endif /* BER and stream */ #endif return EXPECT_RESULT(); } /* END test_wc_PKCS7_VerifySignedData()_RSA */