Merge with openSSL-Compat-CRL-STORE on kojo1/wolfssl

This commit is contained in:
Go Hosohara
2018-05-23 16:33:11 +09:00
parent 0fb446ad36
commit 3f6b7c8833
3 changed files with 35 additions and 56 deletions

View File

@@ -14364,19 +14364,6 @@ WOLFSSL_X509* wolfSSL_X509_d2i(WOLFSSL_X509** x509, const byte* in, int len)
return newX509; return newX509;
} }
#ifndef NO_WOLFSSL_STUB
#ifndef NO_FILESYSTEM
WOLFSSL_X509* wolfSSL_d2i_X509_fp(FILE *fp, WOLFSSL_X509 **x509)
{
WOLFSSL_STUB("wolfSSL_d2i_X509_fp");
(void)fp;
(void)x509;
return 0;
}
#endif /* !NO_FILESYSTEM */
#endif /* !NO_WOLFSSL_STUB */
#endif /* KEEP_PEER_CERT || SESSION_CERTS || OPENSSL_EXTRA || #endif /* KEEP_PEER_CERT || SESSION_CERTS || OPENSSL_EXTRA ||
OPENSSL_EXTRA_X509_SMALL */ OPENSSL_EXTRA_X509_SMALL */
@@ -18082,7 +18069,7 @@ int wolfSSL_X509_verify_cert(WOLFSSL_X509_STORE_CTX* ctx)
} }
#endif /* NO_CERTS */ #endif /* NO_CERTS */
#ifndef NO_FILESYSTEM #if !defined(NO_FILESYSTEM)
static void *wolfSSL_d2i_X509_fp_ex(XFILE file, void **x509, int type) static void *wolfSSL_d2i_X509_fp_ex(XFILE file, void **x509, int type)
{ {
void *newx509 = NULL; void *newx509 = NULL;
@@ -18168,15 +18155,18 @@ WOLFSSL_X509 *wolfSSL_d2i_X509_fp(XFILE fp, WOLFSSL_X509 **x509)
WOLFSSL_ENTER("wolfSSL_d2i_X509_fp"); WOLFSSL_ENTER("wolfSSL_d2i_X509_fp");
return (WOLFSSL_X509 *)wolfSSL_d2i_X509_fp_ex(fp, (void **)x509, CERT_TYPE); return (WOLFSSL_X509 *)wolfSSL_d2i_X509_fp_ex(fp, (void **)x509, CERT_TYPE);
} }
#endif /* NO_FILESYSTEM */ #endif /* !NO_FILESYSTEM */
#ifdef HAVE_CRL #ifdef HAVE_CRL
#ifndef NO_FILESYSTEM
WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL_fp(XFILE fp, WOLFSSL_X509_CRL **crl) WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL_fp(XFILE fp, WOLFSSL_X509_CRL **crl)
{ {
WOLFSSL_ENTER("wolfSSL_d2i_X509_CRL_fp"); WOLFSSL_ENTER("wolfSSL_d2i_X509_CRL_fp");
return (WOLFSSL_X509_CRL *)wolfSSL_d2i_X509_fp_ex(fp, (void **)crl, CRL_TYPE); return (WOLFSSL_X509_CRL *)wolfSSL_d2i_X509_fp_ex(fp, (void **)crl, CRL_TYPE);
} }
#endif /* !NO_FILESYSTEM */
WOLFSSL_X509_CRL* wolfSSL_d2i_X509_CRL(WOLFSSL_X509_CRL** crl, const unsigned char* in, int len) WOLFSSL_X509_CRL* wolfSSL_d2i_X509_CRL(WOLFSSL_X509_CRL** crl, const unsigned char* in, int len)
{ {
@@ -18224,7 +18214,7 @@ void wolfSSL_X509_CRL_free(WOLFSSL_X509_CRL *crl)
FreeCRL(crl, 1); FreeCRL(crl, 1);
return; return;
} }
#endif #endif /* HAVE_CRL */
#ifndef NO_WOLFSSL_STUB #ifndef NO_WOLFSSL_STUB
WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_lastUpdate(WOLFSSL_X509_CRL* crl) WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_lastUpdate(WOLFSSL_X509_CRL* crl)
@@ -32634,7 +32624,6 @@ int wolfSSL_CTX_set_alpn_protos(WOLFSSL_CTX *ctx, const unsigned char *p,
#endif /* WOLFCRYPT_ONLY */ #endif /* WOLFCRYPT_ONLY */
#if defined(OPENSSL_EXTRA) #if defined(OPENSSL_EXTRA)
#ifndef NO_WOLFSSL_STUB
int wolfSSL_X509_check_ca(WOLFSSL_X509 *x509) int wolfSSL_X509_check_ca(WOLFSSL_X509 *x509)
{ {
WOLFSSL_ENTER("X509_check_ca"); WOLFSSL_ENTER("X509_check_ca");
@@ -32646,19 +32635,9 @@ int wolfSSL_X509_check_ca(WOLFSSL_X509 *x509)
} }
int wolfSSL_d2i_PKCS12_fp(FILE *fp, WC_PKCS12 *pkcs12)
{
WOLFSSL_STUB("d2i_PKCS12_fp");
(void)fp;
(void)pkcs12;
return 0;
}
#endif /* NO_WOLFSSL_STUB */
const char *wolfSSL_ASN1_tag2str(int tag) const char *wolfSSL_ASN1_tag2str(int tag)
{ {
static const char *const tag_label[] = { static const char *const tag_label[31] = {
"EOC", "BOOLEAN", "INTEGER", "BIT STRING", "OCTET STRING", "NULL", "EOC", "BOOLEAN", "INTEGER", "BIT STRING", "OCTET STRING", "NULL",
"OBJECT", "OBJECT DESCRIPTOR", "EXTERNAL", "REAL", "ENUMERATED", "OBJECT", "OBJECT DESCRIPTOR", "EXTERNAL", "REAL", "ENUMERATED",
"<ASN1 11>", "UTF8STRING", "<ASN1 13>", "<ASN1 14>", "<ASN1 15>", "<ASN1 11>", "UTF8STRING", "<ASN1 13>", "<ASN1 14>", "<ASN1 15>",
@@ -32730,9 +32709,7 @@ int wolfSSL_ASN1_STRING_print_ex(WOLFSSL_BIO *out, WOLFSSL_ASN1_STRING *str,
str_len += type_len; str_len += type_len;
} }
if (wolfSSL_BIO_write(out, hash, 1) != 1){ if (wolfSSL_BIO_write(out, hash, 1) != 1){
if (type_len > 0) goto err_exit;
XFREE(typebuf, NULL, DYNAMIC_TYPE_TMP_BUFFER);
return WOLFSSL_FAILURE;
} }
str_len++; str_len++;
if (flags & ASN1_STRFLGS_DUMP_DER){ if (flags & ASN1_STRFLGS_DUMP_DER){
@@ -32741,9 +32718,7 @@ int wolfSSL_ASN1_STRING_print_ex(WOLFSSL_BIO *out, WOLFSSL_ASN1_STRING *str,
hex_tmp[2] = hex_char[str->length >> 4]; hex_tmp[2] = hex_char[str->length >> 4];
hex_tmp[3] = hex_char[str->length & 0xf]; hex_tmp[3] = hex_char[str->length & 0xf];
if (wolfSSL_BIO_write(out, hex_tmp, 4) != 4){ if (wolfSSL_BIO_write(out, hex_tmp, 4) != 4){
if (type_len > 0) goto err_exit;
XFREE(typebuf, NULL, DYNAMIC_TYPE_TMP_BUFFER);
return WOLFSSL_FAILURE;
} }
str_len += 4; str_len += 4;
XMEMSET(hex_tmp, 0, 4); XMEMSET(hex_tmp, 0, 4);
@@ -32755,13 +32730,14 @@ int wolfSSL_ASN1_STRING_print_ex(WOLFSSL_BIO *out, WOLFSSL_ASN1_STRING *str,
hex_tmp[0] = hex_char[*str_ptr >> 4]; hex_tmp[0] = hex_char[*str_ptr >> 4];
hex_tmp[1] = hex_char[*str_ptr & 0xf]; hex_tmp[1] = hex_char[*str_ptr & 0xf];
if (wolfSSL_BIO_write(out, hex_tmp, 2) != 2){ if (wolfSSL_BIO_write(out, hex_tmp, 2) != 2){
if (type_len > 0) goto err_exit;
XFREE(typebuf, NULL, DYNAMIC_TYPE_TMP_BUFFER);
return WOLFSSL_FAILURE;
} }
str_ptr++; str_ptr++;
str_len += 2; str_len += 2;
} }
if (type_len > 0)
XFREE(typebuf, NULL, DYNAMIC_TYPE_TMP_BUFFER);
return (int)str_len; return (int)str_len;
} }
@@ -32795,13 +32771,12 @@ int wolfSSL_ASN1_STRING_print_ex(WOLFSSL_BIO *out, WOLFSSL_ASN1_STRING *str,
} }
if (wolfSSL_BIO_write(out, str->data, str->length) != str->length){ if (wolfSSL_BIO_write(out, str->data, str->length) != str->length){
if (type_len > 0) goto err_exit;
XFREE(typebuf, NULL, DYNAMIC_TYPE_TMP_BUFFER);
return WOLFSSL_FAILURE;
} }
str_len += str->length; str_len += str->length;
if (type_len > 0)
XFREE(typebuf, NULL, DYNAMIC_TYPE_TMP_BUFFER);
XFREE(typebuf, NULL, DYNAMIC_TYPE_TMP_BUFFER);
return (int)str_len; return (int)str_len;
err_exit: err_exit:

View File

@@ -18451,7 +18451,7 @@ static void test_wolfSSL_OPENSSL_add_all_algorithms(void){
} }
static void test_wolfSSL_ASN1_STRING_print_ex(void){ static void test_wolfSSL_ASN1_STRING_print_ex(void){
#if defined(OPENSSL_EXTRA) #if defined(OPENSSL_EXTRA) && !defined(NO_ASN)
ASN1_STRING* asn_str = NULL; ASN1_STRING* asn_str = NULL;
const char data[] = "Hello wolfSSL!"; const char data[] = "Hello wolfSSL!";
ASN1_STRING* esc_str = NULL; ASN1_STRING* esc_str = NULL;
@@ -18459,21 +18459,30 @@ static void test_wolfSSL_ASN1_STRING_print_ex(void){
BIO *bio; BIO *bio;
unsigned long flags; unsigned long flags;
int p_len; int p_len;
unsigned char rbuf[256]; unsigned char rbuf[255];
printf(testingFmt, "wolfSSL_ASN1_STRING_print_ex()"); printf(testingFmt, "wolfSSL_ASN1_STRING_print_ex()");
/* setup */ /* setup */
XMEMSET(rbuf, 0, 256); XMEMSET(rbuf, 0, 255);
bio = BIO_new(BIO_s_mem()); bio = BIO_new(BIO_s_mem());
BIO_set_write_buf_size(bio,256); BIO_set_write_buf_size(bio,255);
asn_str = ASN1_STRING_type_new(V_ASN1_OCTET_STRING); asn_str = ASN1_STRING_type_new(V_ASN1_OCTET_STRING);
ASN1_STRING_set(asn_str, (const void*)data, sizeof(data)); ASN1_STRING_set(asn_str, (const void*)data, sizeof(data));
esc_str = ASN1_STRING_type_new(V_ASN1_OCTET_STRING); esc_str = ASN1_STRING_type_new(V_ASN1_OCTET_STRING);
ASN1_STRING_set(esc_str, (const void*)esc_data, sizeof(esc_data)); ASN1_STRING_set(esc_str, (const void*)esc_data, sizeof(esc_data));
/* no flags */
XMEMSET(rbuf, 0, 255);
flags = 0;
p_len = wolfSSL_ASN1_STRING_print_ex(bio, asn_str, flags);
AssertIntEQ(p_len, 15);
BIO_read(bio, (void*)rbuf, 15);
AssertStrEQ((char*)rbuf, "Hello wolfSSL!");
/* RFC2253 Escape */ /* RFC2253 Escape */
XMEMSET(rbuf, 0, 255);
flags = ASN1_STRFLGS_ESC_2253; flags = ASN1_STRFLGS_ESC_2253;
p_len = wolfSSL_ASN1_STRING_print_ex(bio, esc_str, flags); p_len = wolfSSL_ASN1_STRING_print_ex(bio, esc_str, flags);
AssertIntEQ(p_len, 9); AssertIntEQ(p_len, 9);
@@ -18481,7 +18490,7 @@ static void test_wolfSSL_ASN1_STRING_print_ex(void){
AssertStrEQ((char*)rbuf, "a\\+\\;\\<\\>"); AssertStrEQ((char*)rbuf, "a\\+\\;\\<\\>");
/* Show type */ /* Show type */
XMEMSET(rbuf, 0, 256); XMEMSET(rbuf, 0, 255);
flags = ASN1_STRFLGS_SHOW_TYPE; flags = ASN1_STRFLGS_SHOW_TYPE;
p_len = wolfSSL_ASN1_STRING_print_ex(bio, asn_str, flags); p_len = wolfSSL_ASN1_STRING_print_ex(bio, asn_str, flags);
AssertIntEQ(p_len, 28); AssertIntEQ(p_len, 28);
@@ -18489,7 +18498,7 @@ static void test_wolfSSL_ASN1_STRING_print_ex(void){
AssertStrEQ((char*)rbuf, "OCTET STRING:Hello wolfSSL!"); AssertStrEQ((char*)rbuf, "OCTET STRING:Hello wolfSSL!");
/* Dump All */ /* Dump All */
XMEMSET(rbuf, 0, 256); XMEMSET(rbuf, 0, 255);
flags = ASN1_STRFLGS_DUMP_ALL; flags = ASN1_STRFLGS_DUMP_ALL;
p_len = wolfSSL_ASN1_STRING_print_ex(bio, asn_str, flags); p_len = wolfSSL_ASN1_STRING_print_ex(bio, asn_str, flags);
AssertIntEQ(p_len, 31); AssertIntEQ(p_len, 31);
@@ -18497,7 +18506,7 @@ static void test_wolfSSL_ASN1_STRING_print_ex(void){
AssertStrEQ((char*)rbuf, "#48656C6C6F20776F6C6653534C2100"); AssertStrEQ((char*)rbuf, "#48656C6C6F20776F6C6653534C2100");
/* Dump Der */ /* Dump Der */
XMEMSET(rbuf, 0, 256); XMEMSET(rbuf, 0, 255);
flags = ASN1_STRFLGS_DUMP_ALL | ASN1_STRFLGS_DUMP_DER; flags = ASN1_STRFLGS_DUMP_ALL | ASN1_STRFLGS_DUMP_DER;
p_len = wolfSSL_ASN1_STRING_print_ex(bio, asn_str, flags); p_len = wolfSSL_ASN1_STRING_print_ex(bio, asn_str, flags);
AssertIntEQ(p_len, 35); AssertIntEQ(p_len, 35);
@@ -18505,7 +18514,7 @@ static void test_wolfSSL_ASN1_STRING_print_ex(void){
AssertStrEQ((char*)rbuf, "#040F48656C6C6F20776F6C6653534C2100"); AssertStrEQ((char*)rbuf, "#040F48656C6C6F20776F6C6653534C2100");
/* Dump All + Show type */ /* Dump All + Show type */
XMEMSET(rbuf, 0, 256); XMEMSET(rbuf, 0, 255);
flags = ASN1_STRFLGS_DUMP_ALL | ASN1_STRFLGS_SHOW_TYPE; flags = ASN1_STRFLGS_DUMP_ALL | ASN1_STRFLGS_SHOW_TYPE;
p_len = wolfSSL_ASN1_STRING_print_ex(bio, asn_str, flags); p_len = wolfSSL_ASN1_STRING_print_ex(bio, asn_str, flags);
AssertIntEQ(p_len, 44); AssertIntEQ(p_len, 44);
@@ -18520,7 +18529,6 @@ static void test_wolfSSL_ASN1_STRING_print_ex(void){
#endif #endif
} }
static void test_wolfSSL_ASN1_TIME_to_generalizedtime(void){ static void test_wolfSSL_ASN1_TIME_to_generalizedtime(void){
#if defined(OPENSSL_EXTRA) && !defined(NO_ASN1_TIME) #if defined(OPENSSL_EXTRA) && !defined(NO_ASN1_TIME)
WOLFSSL_ASN1_TIME *t; WOLFSSL_ASN1_TIME *t;
@@ -18567,12 +18575,12 @@ static void test_wolfSSL_ASN1_TIME_to_generalizedtime(void){
AssertIntEQ(gtime->data[1], ASN_GENERALIZED_TIME_SIZE); AssertIntEQ(gtime->data[1], ASN_GENERALIZED_TIME_SIZE);
AssertStrEQ((char*)gtime->data + 2, "20050727123456Z"); AssertStrEQ((char*)gtime->data + 2, "20050727123456Z");
XFREE(gtime, NULL, DYNAMIC_TYPE_TMP_BUFFER);
XFREE(t, NULL, DYNAMIC_TYPE_TMP_BUFFER); XFREE(t, NULL, DYNAMIC_TYPE_TMP_BUFFER);
printf(resultFmt, passed); printf(resultFmt, passed);
#endif #endif
} }
static void test_no_op_functions(void) static void test_no_op_functions(void)
{ {
#if defined(OPENSSL_EXTRA) #if defined(OPENSSL_EXTRA)
@@ -19555,7 +19563,6 @@ static void test_wolfSSL_i2c_ASN1_INTEGER()
printf(resultFmt, passed); printf(resultFmt, passed);
#endif /* OPENSSL_EXTRA */ #endif /* OPENSSL_EXTRA */
} }
/*----------------------------------------------------------------------------* /*----------------------------------------------------------------------------*
| Main | Main
*----------------------------------------------------------------------------*/ *----------------------------------------------------------------------------*/

View File

@@ -1533,8 +1533,7 @@ WOLFSSL_API int wolfSSL_i2d_X509(WOLFSSL_X509* x509, unsigned char** out);
WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL(WOLFSSL_X509_CRL **crl, WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL(WOLFSSL_X509_CRL **crl,
const unsigned char *in, int len); const unsigned char *in, int len);
#ifndef NO_FILESYSTEM #ifndef NO_FILESYSTEM
WOLFSSL_API WOLFSSL_X509* wolfSSL_d2i_X509_fp(FILE *fp, WOLFSSL_X509 **x509); WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL_fp(XFILE file, WOLFSSL_X509_CRL **crl);
WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL_fp(WOLFSSL_X509_CRL **crl, XFILE file);
#endif #endif
WOLFSSL_API void wolfSSL_X509_CRL_free(WOLFSSL_X509_CRL *crl); WOLFSSL_API void wolfSSL_X509_CRL_free(WOLFSSL_X509_CRL *crl);
@@ -2917,13 +2916,11 @@ WOLFSSL_API WOLFSSL_CIPHER* wolfSSL_sk_SSL_CIPHER_value(void *ciphers, int idx);
WOLFSSL_API void ERR_load_SSL_strings(void); WOLFSSL_API void ERR_load_SSL_strings(void);
WOLFSSL_API void wolfSSL_EC_POINT_dump(const char *msg, const WOLFSSL_EC_POINT *p); WOLFSSL_API void wolfSSL_EC_POINT_dump(const char *msg, const WOLFSSL_EC_POINT *p);
WOLFSSL_API int wolfSSL_d2i_PKCS12_fp(FILE *fp, WC_PKCS12 *pkcs12);
WOLFSSL_API const char *wolfSSL_ASN1_tag2str(int tag); WOLFSSL_API const char *wolfSSL_ASN1_tag2str(int tag);
WOLFSSL_API int wolfSSL_ASN1_STRING_print_ex(WOLFSSL_BIO *out, WOLFSSL_ASN1_STRING *str, unsigned long flags); WOLFSSL_API int wolfSSL_ASN1_STRING_print_ex(WOLFSSL_BIO *out, WOLFSSL_ASN1_STRING *str, unsigned long flags);
WOLFSSL_API WOLFSSL_ASN1_TIME *wolfSSL_ASN1_TIME_to_generalizedtime(WOLFSSL_ASN1_TIME *t, WOLFSSL_API WOLFSSL_ASN1_TIME *wolfSSL_ASN1_TIME_to_generalizedtime(WOLFSSL_ASN1_TIME *t,
WOLFSSL_ASN1_TIME **out); WOLFSSL_ASN1_TIME **out);
WOLFSSL_API int wolfSSL_i2c_ASN1_INTEGER(WOLFSSL_ASN1_INTEGER *a, unsigned char **pp); WOLFSSL_API int wolfSSL_i2c_ASN1_INTEGER(WOLFSSL_ASN1_INTEGER *a, unsigned char **pp);
WOLFSSL_API int wolfSSL_X509_STORE_add_crl(WOLFSSL_X509_STORE *ctx, WOLFSSL_X509_CRL *x);
#endif /* OPENSSL_EXTRA */ #endif /* OPENSSL_EXTRA */
#ifdef HAVE_PK_CALLBACKS #ifdef HAVE_PK_CALLBACKS