mirror of
https://github.com/wolfSSL/wolfssl.git
synced 2025-08-02 20:24:39 +02:00
PEM_read_X509_CRL
This commit is contained in:
72
src/ssl.c
72
src/ssl.c
@@ -20257,19 +20257,6 @@ WOLFSSL_API int wolfSSL_sk_SSL_CIPHER_num(const void * p)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(NO_FILESYSTEM)
|
#if !defined(NO_FILESYSTEM)
|
||||||
#ifndef NO_WOLFSSL_STUB
|
|
||||||
/*** TBD ***/
|
|
||||||
WOLFSSL_API WOLFSSL_X509 *wolfSSL_PEM_read_X509(FILE *fp, WOLFSSL_X509 **x, pem_password_cb *cb, void *u)
|
|
||||||
{
|
|
||||||
(void)fp;
|
|
||||||
(void)x;
|
|
||||||
(void)cb;
|
|
||||||
(void)u;
|
|
||||||
WOLFSSL_STUB("PEM_read_X509");
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef NO_WOLFSSL_STUB
|
#ifndef NO_WOLFSSL_STUB
|
||||||
/*** TBD ***/
|
/*** TBD ***/
|
||||||
WOLFSSL_API WOLFSSL_EVP_PKEY *wolfSSL_PEM_read_PrivateKey(FILE *fp, WOLFSSL_EVP_PKEY **x, pem_password_cb *cb, void *u)
|
WOLFSSL_API WOLFSSL_EVP_PKEY *wolfSSL_PEM_read_PrivateKey(FILE *fp, WOLFSSL_EVP_PKEY **x, pem_password_cb *cb, void *u)
|
||||||
@@ -29536,23 +29523,21 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl)
|
|||||||
|
|
||||||
return x509;
|
return x509;
|
||||||
}
|
}
|
||||||
|
#include "stdio.h"
|
||||||
|
|
||||||
#if defined(HAVE_CRL) && !defined(NO_FILESYSTEM)
|
#if defined(HAVE_CRL) && !defined(NO_FILESYSTEM)
|
||||||
WOLFSSL_API WOLFSSL_X509_CRL* wolfSSL_PEM_read_X509_CRL(XFILE fp, WOLFSSL_X509_CRL **crl,
|
static void* wolfSSL_PEM_read_X509_ex(XFILE fp, void **x,
|
||||||
pem_password_cb *cb, void *u)
|
pem_password_cb *cb, void *u, int type)
|
||||||
{
|
{
|
||||||
#if defined(WOLFSSL_PEM_TO_DER) || defined(WOLFSSL_DER_TO_PEM)
|
|
||||||
unsigned char* pem = NULL;
|
unsigned char* pem = NULL;
|
||||||
DerBuffer* der = NULL;
|
|
||||||
int pemSz;
|
int pemSz;
|
||||||
int derSz;
|
|
||||||
long i = 0, l;
|
long i = 0, l;
|
||||||
WOLFSSL_X509_CRL* newcrl;
|
void *newx509;
|
||||||
|
|
||||||
WOLFSSL_ENTER("wolfSSL_PEM_read_X509_CRL");
|
WOLFSSL_ENTER("wolfSSL_PEM_read_X509");
|
||||||
|
|
||||||
if (fp == NULL) {
|
if (fp == NULL) {
|
||||||
WOLFSSL_LEAVE("wolfSSL_PEM_read_X509_CRL", BAD_FUNC_ARG);
|
WOLFSSL_LEAVE("wolfSSL_PEM_read_X509", BAD_FUNC_ARG);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
/* Read in CRL from file */
|
/* Read in CRL from file */
|
||||||
@@ -29583,25 +29568,60 @@ void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl)
|
|||||||
XFREE(pem, 0, DYNAMIC_TYPE_PEM);
|
XFREE(pem, 0, DYNAMIC_TYPE_PEM);
|
||||||
pem = NULL;
|
pem = NULL;
|
||||||
|
|
||||||
|
switch(type){
|
||||||
|
case CERT_TYPE:
|
||||||
|
newx509 = (void *)wolfSSL_X509_load_certificate_buffer(pem, pemSz,
|
||||||
|
WOLFSSL_FILETYPE_PEM);
|
||||||
|
break;
|
||||||
|
#ifdef HAVE_CRL
|
||||||
|
case CRL_TYPE:
|
||||||
|
{
|
||||||
|
int derSz;
|
||||||
|
DerBuffer* der = NULL;
|
||||||
|
if((PemToDer(pem, pemSz, CRL_TYPE, &der, NULL, NULL, NULL)) < 0)
|
||||||
|
goto err_exit;
|
||||||
derSz = der->length;
|
derSz = der->length;
|
||||||
if((newcrl = wolfSSL_d2i_X509_CRL(crl, (const unsigned char *)der->buffer, derSz)) == NULL)
|
if((newx509 = (void *)wolfSSL_d2i_X509_CRL(
|
||||||
|
(WOLFSSL_X509_CRL **)x, (const unsigned char *)der->buffer, derSz)) == NULL)
|
||||||
goto err_exit;
|
goto err_exit;
|
||||||
FreeDer(&der);
|
FreeDer(&der);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
return newcrl;
|
default:
|
||||||
|
goto err_exit;
|
||||||
|
}
|
||||||
|
if (x != NULL) {
|
||||||
|
*x = newx509;
|
||||||
|
}
|
||||||
|
XFREE(pem, 0, DYNAMIC_TYPE_PEM);
|
||||||
|
return newx509;
|
||||||
|
|
||||||
err_exit:
|
err_exit:
|
||||||
if(pem != NULL)
|
if(pem != NULL)
|
||||||
XFREE(pem, 0, DYNAMIC_TYPE_PEM);
|
XFREE(pem, 0, DYNAMIC_TYPE_PEM);
|
||||||
if(der != NULL)
|
|
||||||
FreeDer(&der);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
(void)cb;
|
(void)cb;
|
||||||
(void)u;
|
(void)u;
|
||||||
#endif
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
WOLFSSL_API WOLFSSL_X509* wolfSSL_PEM_read_X509(XFILE fp, WOLFSSL_X509 **x,
|
||||||
|
pem_password_cb *cb, void *u)
|
||||||
|
{
|
||||||
|
return (WOLFSSL_X509* )wolfSSL_PEM_read_X509_ex(fp, (void **)x, cb, u, CERT_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(HAVE_CRL)
|
||||||
|
WOLFSSL_API WOLFSSL_X509_CRL* wolfSSL_PEM_read_X509_CRL(XFILE fp, WOLFSSL_X509_CRL **crl,
|
||||||
|
pem_password_cb *cb, void *u)
|
||||||
|
{
|
||||||
|
return (WOLFSSL_X509_CRL* )wolfSSL_PEM_read_X509_ex(fp, (void **)crl, cb, u, CRL_TYPE);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@@ -17511,6 +17511,7 @@ static void test_wolfSSL_X509_STORE(void)
|
|||||||
wolfSSL_X509_load_certificate_file(svrCert, SSL_FILETYPE_PEM)));
|
wolfSSL_X509_load_certificate_file(svrCert, SSL_FILETYPE_PEM)));
|
||||||
AssertIntEQ(X509_STORE_add_cert(store, x509), SSL_SUCCESS);
|
AssertIntEQ(X509_STORE_add_cert(store, x509), SSL_SUCCESS);
|
||||||
X509_free(x509);
|
X509_free(x509);
|
||||||
|
|
||||||
AssertNotNull(fp = XFOPEN(crl_pem, "rb"));
|
AssertNotNull(fp = XFOPEN(crl_pem, "rb"));
|
||||||
AssertNotNull(crl = (X509_CRL *)PEM_read_X509_CRL(fp, (X509_CRL **)NULL, NULL, NULL));
|
AssertNotNull(crl = (X509_CRL *)PEM_read_X509_CRL(fp, (X509_CRL **)NULL, NULL, NULL));
|
||||||
XFCLOSE(fp);
|
XFCLOSE(fp);
|
||||||
@@ -19771,6 +19772,7 @@ static void test_wolfSSL_X509_CA_num(void){
|
|||||||
printf(resultFmt, passed);
|
printf(resultFmt, passed);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void test_wolfSSL_X509_check_ca(void){
|
static void test_wolfSSL_X509_check_ca(void){
|
||||||
#if defined(OPENSSL_EXTRA) && !defined(NO_RSA)
|
#if defined(OPENSSL_EXTRA) && !defined(NO_RSA)
|
||||||
WOLFSSL_X509 *x509;
|
WOLFSSL_X509 *x509;
|
||||||
|
Reference in New Issue
Block a user