mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-07-30 10:47:28 +02:00
Merge pull request #8400 from ColtonWilley/add_trusted_cert_pem_parsing
Add support for parsing trusted PEM certs
This commit is contained in:
@ -120,6 +120,31 @@ generate_test_cert() {
|
|||||||
check_result $?
|
check_result $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
generate_test_trusted_cert() {
|
||||||
|
rm "$1".der
|
||||||
|
rm "$1".pem
|
||||||
|
|
||||||
|
echo "step 1 create configuration"
|
||||||
|
build_test_cert_conf "$1" "$2" "$3"
|
||||||
|
check_result $?
|
||||||
|
|
||||||
|
echo "step 2 create csr"
|
||||||
|
openssl req -new -sha256 -out "$1".csr -key ../server-key.pem -config "$1".conf
|
||||||
|
check_result $?
|
||||||
|
|
||||||
|
echo "step 3 check csr"
|
||||||
|
openssl req -text -noout -in "$1".csr -config "$1".conf
|
||||||
|
check_result $?
|
||||||
|
|
||||||
|
echo "step 4 create cert"
|
||||||
|
openssl x509 -req -days 1000 -sha256 \
|
||||||
|
-in "$1".csr -signkey ../server-key.pem \
|
||||||
|
-out "$1".pem -extensions req_ext -addtrust serverAuth -trustout -extfile "$1".conf
|
||||||
|
check_result $?
|
||||||
|
rm "$1".conf
|
||||||
|
rm "$1".csr
|
||||||
|
}
|
||||||
|
|
||||||
generate_expired_certs() {
|
generate_expired_certs() {
|
||||||
rm "$1".der
|
rm "$1".der
|
||||||
rm "$1".pem
|
rm "$1".pem
|
||||||
@ -200,3 +225,6 @@ generate_test_cert server-garbage localhost garbage
|
|||||||
# Generate Expired Certificates
|
# Generate Expired Certificates
|
||||||
generate_expired_certs expired/expired-ca ../ca-key.pem 1
|
generate_expired_certs expired/expired-ca ../ca-key.pem 1
|
||||||
generate_expired_certs expired/expired-cert ../server-key.pem
|
generate_expired_certs expired/expired-cert ../server-key.pem
|
||||||
|
|
||||||
|
|
||||||
|
generate_test_trusted_cert ossl-trusted-cert localhost "" 1
|
||||||
|
@ -67,6 +67,7 @@ EXTRA_DIST += \
|
|||||||
certs/test/server-badaltname.pem \
|
certs/test/server-badaltname.pem \
|
||||||
certs/test/server-localhost.der \
|
certs/test/server-localhost.der \
|
||||||
certs/test/server-localhost.pem \
|
certs/test/server-localhost.pem \
|
||||||
|
certs/test/ossl-trusted-cert.pem \
|
||||||
certs/test/ktri-keyid-cms.msg \
|
certs/test/ktri-keyid-cms.msg \
|
||||||
certs/test/smime-test.p7s \
|
certs/test/smime-test.p7s \
|
||||||
certs/test/smime-test-canon.p7s \
|
certs/test/smime-test-canon.p7s \
|
||||||
|
29
certs/test/ossl-trusted-cert.pem
Normal file
29
certs/test/ossl-trusted-cert.pem
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
-----BEGIN TRUSTED CERTIFICATE-----
|
||||||
|
MIIE6DCCA9CgAwIBAgIBATANBgkqhkiG9w0BAQsFADCBlDELMAkGA1UEBhMCVVMx
|
||||||
|
EDAOBgNVBAgMB01vbnRhbmExEDAOBgNVBAcMB0JvemVtYW4xETAPBgNVBAoMCFNh
|
||||||
|
d3Rvb3RoMRMwEQYDVQQLDApDb25zdWx0aW5nMRgwFgYDVQQDDA93d3cud29sZnNz
|
||||||
|
bC5jb20xHzAdBgkqhkiG9w0BCQEWEGluZm9Ad29sZnNzbC5jb20wHhcNMjUwMTMw
|
||||||
|
MjE0NTQ2WhcNMjcxMDI3MjE0NTQ2WjCBkDELMAkGA1UEBhMCVVMxEDAOBgNVBAgM
|
||||||
|
B01vbnRhbmExEDAOBgNVBAcMB0JvemVtYW4xEDAOBgNVBAoMB3dvbGZTU0wxEDAO
|
||||||
|
BgNVBAsMB1N1cHBvcnQxGDAWBgNVBAMMD3d3dy53b2xmc3NsLmNvbTEfMB0GCSqG
|
||||||
|
SIb3DQEJARYQaW5mb0B3b2xmc3NsLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEP
|
||||||
|
ADCCAQoCggEBAMCVCOFXQfJxbbfSRUEnAWXGRa7yvCQwuJXOL07W9hyIvHyf+6hn
|
||||||
|
f/5cnFF194rKB+c1L4/hvXvAL3yrZKgX/Mpde7rgIeVyLm8uhtiVc9qsG1O5Xz/X
|
||||||
|
GQ0lT+FjY1GLC2Q/rUO4pRxcNLOuAKBjxfZ/C1loeHOmjBipAm2vwxkBLrgQ48bM
|
||||||
|
QLRpo0YzaYduxLsXpvPo3a1zvHsvIbX9ZlEMvVSz4W1fHLwjc9EJA4kU0hC5ZMMq
|
||||||
|
0KGWSrzh1Bpbx6DAwWN4D0Q3MDKWgDIjlaF3uhPSl3PiXSXJag3DOWCktLBpQkIJ
|
||||||
|
6dgIvDMgs1gip6rrxOHmYYPF0pbf2dBPrdcCAwEAAaOCAUUwggFBMB0GA1UdDgQW
|
||||||
|
BBSzETLJkpiE4sn40DtuA0LKHw6OPDCB1AYDVR0jBIHMMIHJgBQnjmcRdMMmHT/t
|
||||||
|
M2OzpNgdMOXo1aGBmqSBlzCBlDELMAkGA1UEBhMCVVMxEDAOBgNVBAgMB01vbnRh
|
||||||
|
bmExEDAOBgNVBAcMB0JvemVtYW4xETAPBgNVBAoMCFNhd3Rvb3RoMRMwEQYDVQQL
|
||||||
|
DApDb25zdWx0aW5nMRgwFgYDVQQDDA93d3cud29sZnNzbC5jb20xHzAdBgkqhkiG
|
||||||
|
9w0BCQEWEGluZm9Ad29sZnNzbC5jb22CFACr6s+Ce0259tiQB3+gnZ7kb6T9MAwG
|
||||||
|
A1UdEwQFMAMBAf8wHAYDVR0RBBUwE4ILZXhhbXBsZS5jb22HBH8AAAEwHQYDVR0l
|
||||||
|
BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMA0GCSqGSIb3DQEBCwUAA4IBAQBqX+1+
|
||||||
|
o2hLg3bT22ktzzG7y1Xu+7ZymPHCf7c2inTuFQq8epdbQ4RHwlk9/y8T52CM063y
|
||||||
|
DJPPzXBYiGFwLo7Eff3pOCxsGRCGZZm5Yj/oCgN2dEywDPoOf6J+PBz589obsYU6
|
||||||
|
d2QqcnhghWK6pM+9OdR5idtv4tOpnPEpehMJE14Oxg36nNDobn2rqKgSrvd1xbEh
|
||||||
|
SnNwN6ZYwlLHCj+uGEEIFiLfZFisaEqmQlXA1THIUJMMypiwJ9snSXzZN6g+Ssw7
|
||||||
|
AG+1kSbrbpnuECTBO4GBoJ7qcnhqPe1fbP/atwb7hh4RiHKXEVVQv96fu6BZ3cHH
|
||||||
|
rb8OQ3qAW+juUlxaMAwwCgYIKwYBBQUHAwE=
|
||||||
|
-----END TRUSTED CERTIFICATE-----
|
13
tests/api.c
13
tests/api.c
@ -56313,6 +56313,7 @@ static int test_wc_PemToDer(void)
|
|||||||
int ret;
|
int ret;
|
||||||
DerBuffer* pDer = NULL;
|
DerBuffer* pDer = NULL;
|
||||||
const char* ca_cert = "./certs/server-cert.pem";
|
const char* ca_cert = "./certs/server-cert.pem";
|
||||||
|
const char* trusted_cert = "./certs/test/ossl-trusted-cert.pem";
|
||||||
byte* cert_buf = NULL;
|
byte* cert_buf = NULL;
|
||||||
size_t cert_sz = 0;
|
size_t cert_sz = 0;
|
||||||
int eccKey = 0;
|
int eccKey = 0;
|
||||||
@ -56331,6 +56332,18 @@ static int test_wc_PemToDer(void)
|
|||||||
cert_buf = NULL;
|
cert_buf = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Test that -----BEGIN TRUSTED CERTIFICATE----- banner parses OK */
|
||||||
|
ExpectIntEQ(ret = load_file(trusted_cert, &cert_buf, &cert_sz), 0);
|
||||||
|
ExpectIntEQ(ret = wc_PemToDer(cert_buf, (long int)cert_sz, TRUSTED_CERT_TYPE, &pDer, NULL,
|
||||||
|
&info, &eccKey), 0);
|
||||||
|
wc_FreeDer(&pDer);
|
||||||
|
pDer = NULL;
|
||||||
|
|
||||||
|
if (cert_buf != NULL) {
|
||||||
|
free(cert_buf);
|
||||||
|
cert_buf = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef HAVE_ECC
|
#ifdef HAVE_ECC
|
||||||
{
|
{
|
||||||
const char* ecc_private_key = "./certs/ecc-privOnlyKey.pem";
|
const char* ecc_private_key = "./certs/ecc-privOnlyKey.pem";
|
||||||
|
@ -24777,6 +24777,8 @@ wcchar END_CERT = "-----END CERTIFICATE-----";
|
|||||||
#endif
|
#endif
|
||||||
wcchar BEGIN_X509_CRL = "-----BEGIN X509 CRL-----";
|
wcchar BEGIN_X509_CRL = "-----BEGIN X509 CRL-----";
|
||||||
wcchar END_X509_CRL = "-----END X509 CRL-----";
|
wcchar END_X509_CRL = "-----END X509 CRL-----";
|
||||||
|
wcchar BEGIN_TRUSTED_CERT = "-----BEGIN TRUSTED CERTIFICATE-----";
|
||||||
|
wcchar END_TRUSTED_CERT = "-----END TRUSTED CERTIFICATE-----";
|
||||||
wcchar BEGIN_RSA_PRIV = "-----BEGIN RSA PRIVATE KEY-----";
|
wcchar BEGIN_RSA_PRIV = "-----BEGIN RSA PRIVATE KEY-----";
|
||||||
wcchar END_RSA_PRIV = "-----END RSA PRIVATE KEY-----";
|
wcchar END_RSA_PRIV = "-----END RSA PRIVATE KEY-----";
|
||||||
wcchar BEGIN_RSA_PUB = "-----BEGIN RSA PUBLIC KEY-----";
|
wcchar BEGIN_RSA_PUB = "-----BEGIN RSA PUBLIC KEY-----";
|
||||||
@ -25073,6 +25075,11 @@ int wc_PemGetHeaderFooter(int type, const char** header, const char** footer)
|
|||||||
if (footer) *footer = END_ENC_PRIV_KEY;
|
if (footer) *footer = END_ENC_PRIV_KEY;
|
||||||
ret = 0;
|
ret = 0;
|
||||||
break;
|
break;
|
||||||
|
case TRUSTED_CERT_TYPE:
|
||||||
|
if (header) *header = BEGIN_TRUSTED_CERT;
|
||||||
|
if (footer) *footer = END_TRUSTED_CERT;
|
||||||
|
ret = 0;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
ret = BAD_FUNC_ARG;
|
ret = BAD_FUNC_ARG;
|
||||||
break;
|
break;
|
||||||
|
@ -182,7 +182,8 @@ enum CertType {
|
|||||||
SPHINCS_SMALL_LEVEL5_TYPE,
|
SPHINCS_SMALL_LEVEL5_TYPE,
|
||||||
ECC_PARAM_TYPE,
|
ECC_PARAM_TYPE,
|
||||||
CHAIN_CERT_TYPE,
|
CHAIN_CERT_TYPE,
|
||||||
PKCS7_TYPE
|
PKCS7_TYPE,
|
||||||
|
TRUSTED_CERT_TYPE
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user