mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 10:47:28 +02:00
ocsp: add OCSP CERT ID encode/decode test
This commit is contained in:
@ -95500,6 +95500,7 @@ TEST_CASE testCases[] = {
|
|||||||
TEST_DECL(test_ocsp_status_callback),
|
TEST_DECL(test_ocsp_status_callback),
|
||||||
TEST_DECL(test_ocsp_basic_verify),
|
TEST_DECL(test_ocsp_basic_verify),
|
||||||
TEST_DECL(test_ocsp_response_parsing),
|
TEST_DECL(test_ocsp_response_parsing),
|
||||||
|
TEST_DECL(test_ocsp_certid_enc_dec),
|
||||||
/* This test needs to stay at the end to clean up any caches allocated. */
|
/* This test needs to stay at the end to clean up any caches allocated. */
|
||||||
TEST_DECL(test_wolfSSL_Cleanup)
|
TEST_DECL(test_wolfSSL_Cleanup)
|
||||||
};
|
};
|
||||||
|
@ -592,3 +592,69 @@ int test_ocsp_status_callback(void)
|
|||||||
&& defined(HAVE_CERTIFICATE_STATUS_REQUEST) && \
|
&& defined(HAVE_CERTIFICATE_STATUS_REQUEST) && \
|
||||||
!defined(WOLFSSL_NO_TLS12) \
|
!defined(WOLFSSL_NO_TLS12) \
|
||||||
&& defined(OPENSSL_ALL) */
|
&& defined(OPENSSL_ALL) */
|
||||||
|
|
||||||
|
#if !defined (NO_SHA) && defined(OPENSSL_ALL) && defined(HAVE_OCSP)
|
||||||
|
int test_ocsp_certid_enc_dec(void)
|
||||||
|
{
|
||||||
|
EXPECT_DECLS;
|
||||||
|
WOLFSSL_OCSP_CERTID* certIdDec = NULL;
|
||||||
|
WOLFSSL_OCSP_CERTID* certId = NULL;
|
||||||
|
WOLFSSL_X509* subject = NULL;
|
||||||
|
WOLFSSL_X509* issuer = NULL;
|
||||||
|
unsigned char* temp = NULL;
|
||||||
|
unsigned char* der2 = NULL;
|
||||||
|
unsigned char* der = NULL;
|
||||||
|
int derSz = 0, derSz1 = 0;
|
||||||
|
|
||||||
|
/* Load test certificates */
|
||||||
|
ExpectNotNull(
|
||||||
|
subject = wolfSSL_X509_load_certificate_file(
|
||||||
|
"./certs/ocsp/intermediate1-ca-cert.pem", WOLFSSL_FILETYPE_PEM));
|
||||||
|
ExpectNotNull(issuer = wolfSSL_X509_load_certificate_file(
|
||||||
|
"./certs/ocsp/root-ca-cert.pem", WOLFSSL_FILETYPE_PEM));
|
||||||
|
|
||||||
|
/* Create CERTID from certificates */
|
||||||
|
ExpectNotNull(certId = wolfSSL_OCSP_cert_to_id(NULL, subject, issuer));
|
||||||
|
|
||||||
|
/* get len */
|
||||||
|
ExpectIntGT(derSz = wolfSSL_i2d_OCSP_CERTID(certId, NULL), 0);
|
||||||
|
|
||||||
|
/* encode it */
|
||||||
|
ExpectIntGT(derSz1 = wolfSSL_i2d_OCSP_CERTID(certId, &der), 0);
|
||||||
|
ExpectIntEQ(derSz, derSz1);
|
||||||
|
|
||||||
|
temp = der2 = XMALLOC(derSz, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||||
|
ExpectNotNull(der2);
|
||||||
|
/* encode without allocation */
|
||||||
|
ExpectIntGT(derSz1 = wolfSSL_i2d_OCSP_CERTID(certId, &der2), 0);
|
||||||
|
ExpectIntEQ(derSz, derSz1);
|
||||||
|
ExpectPtrEq(der2, temp + derSz);
|
||||||
|
ExpectBufEQ(der, temp, derSz);
|
||||||
|
XFREE(temp, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||||
|
|
||||||
|
/* save original */
|
||||||
|
temp = der;
|
||||||
|
/* decode it */
|
||||||
|
ExpectNotNull(certIdDec = wolfSSL_d2i_OCSP_CERTID(NULL,
|
||||||
|
(const unsigned char**)&der, derSz));
|
||||||
|
/* check ptr is advanced */
|
||||||
|
ExpectPtrEq(der, temp + derSz);
|
||||||
|
der = der2;
|
||||||
|
XFREE(temp, NULL, DYNAMIC_TYPE_OPENSSL);
|
||||||
|
|
||||||
|
/* compare */
|
||||||
|
ExpectIntEQ(wolfSSL_OCSP_id_cmp(certId, certIdDec), 0);
|
||||||
|
|
||||||
|
wolfSSL_OCSP_CERTID_free(certId);
|
||||||
|
wolfSSL_OCSP_CERTID_free(certIdDec);
|
||||||
|
wolfSSL_X509_free(subject);
|
||||||
|
wolfSSL_X509_free(issuer);
|
||||||
|
|
||||||
|
return EXPECT_SUCCESS();
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
int test_ocsp_certid_enc_dec(void)
|
||||||
|
{
|
||||||
|
return TEST_SKIPPED;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#ifndef WOLFSSL_TEST_OCSP_H
|
#ifndef WOLFSSL_TEST_OCSP_H
|
||||||
#define WOLFSSL_TEST_OCSP_H
|
#define WOLFSSL_TEST_OCSP_H
|
||||||
|
|
||||||
|
int test_ocsp_certid_enc_dec(void);
|
||||||
int test_ocsp_status_callback(void);
|
int test_ocsp_status_callback(void);
|
||||||
int test_ocsp_basic_verify(void);
|
int test_ocsp_basic_verify(void);
|
||||||
int test_ocsp_response_parsing(void);
|
int test_ocsp_response_parsing(void);
|
||||||
|
Reference in New Issue
Block a user