diff --git a/src/ssl.c b/src/ssl.c index b094b5c36..d7ca32b17 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -44301,6 +44301,21 @@ err: #endif /* WOLFSSL_PEM_TO_DER || WOLFSSL_DER_TO_PEM */ } + WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_INFO)* wolfSSL_PEM_X509_INFO_read( + XFILE fp, WOLF_STACK_OF(WOLFSSL_X509_INFO)* sk, + pem_password_cb* cb, void* u) + { + WOLFSSL_BIO* file_bio = wolfSSL_BIO_new_fp(fp, BIO_NOCLOSE); + WOLF_STACK_OF(WOLFSSL_X509_INFO)* ret = NULL; + + WOLFSSL_ENTER("wolfSSL_PEM_X509_INFO_read"); + if (file_bio != NULL) { + ret = wolfSSL_PEM_X509_INFO_read_bio(file_bio, sk, cb, u); + wolfSSL_BIO_free(file_bio); + } + return ret; + } + /* * bio WOLFSSL_BIO to read certificates from * sk possible stack to push more X509_INFO structs to. Can be NULL diff --git a/wolfcrypt/src/evp.c b/wolfcrypt/src/evp.c index beb4088a8..24a64628e 100644 --- a/wolfcrypt/src/evp.c +++ b/wolfcrypt/src/evp.c @@ -658,6 +658,11 @@ int wolfSSL_EVP_CipherUpdate(WOLFSSL_EVP_CIPHER_CTX *ctx, int fill; WOLFSSL_ENTER("wolfSSL_EVP_CipherUpdate"); + if (inl == 0 && in == NULL ) { + /* Nothing to do in this case. Just return. */ + return WOLFSSL_SUCCESS; + } + if ((ctx == NULL) || (inl < 0) || (outl == NULL)|| (in == NULL)) { WOLFSSL_MSG("Bad argument"); return WOLFSSL_FAILURE; @@ -7245,6 +7250,11 @@ int wolfSSL_EVP_MD_block_size(const WOLFSSL_EVP_MD* type) if (XSTRNCMP(type, "SHA256", 6) == 0) { return WC_SHA256_BLOCK_SIZE; } +#ifndef NO_MD4 + else if (XSTRNCMP(type, "MD4", 3) == 0) { + return MD4_BLOCK_SIZE; + } +#endif #ifndef NO_MD5 else if (XSTRNCMP(type, "MD5", 3) == 0) { return WC_MD5_BLOCK_SIZE; @@ -7309,6 +7319,11 @@ int wolfSSL_EVP_MD_size(const WOLFSSL_EVP_MD* type) if (XSTRNCMP(type, "SHA256", 6) == 0) { return WC_SHA256_DIGEST_SIZE; } +#ifndef NO_MD4 + else if (XSTRNCMP(type, "MD4", 3) == 0) { + return MD4_DIGEST_SIZE; + } +#endif #ifndef NO_MD5 else if (XSTRNCMP(type, "MD5", 3) == 0) { return WC_MD5_DIGEST_SIZE; diff --git a/wolfssl/openssl/asn1.h b/wolfssl/openssl/asn1.h index 62dfd6ab0..19c60fb34 100644 --- a/wolfssl/openssl/asn1.h +++ b/wolfssl/openssl/asn1.h @@ -30,6 +30,7 @@ #define ASN1_STRING_type_new wolfSSL_ASN1_STRING_type_new #define ASN1_STRING_type wolfSSL_ASN1_STRING_type #define ASN1_STRING_set wolfSSL_ASN1_STRING_set +#define ASN1_OCTET_STRING_set wolfSSL_ASN1_STRING_set #define ASN1_STRING_free wolfSSL_ASN1_STRING_free #define ASN1_get_object wolfSSL_ASN1_get_object diff --git a/wolfssl/openssl/ssl.h b/wolfssl/openssl/ssl.h index 07b60f43d..5760200fb 100644 --- a/wolfssl/openssl/ssl.h +++ b/wolfssl/openssl/ssl.h @@ -420,6 +420,7 @@ typedef STACK_OF(ACCESS_DESCRIPTION) AUTHORITY_INFO_ACCESS; #define PEM_write_bio_X509 wolfSSL_PEM_write_bio_X509 #define PEM_write_bio_X509_AUX wolfSSL_PEM_write_bio_X509_AUX #define PEM_X509_INFO_read_bio wolfSSL_PEM_X509_INFO_read_bio +#define PEM_X509_INFO_read wolfSSL_PEM_X509_INFO_read #define i2d_PrivateKey wolfSSL_i2d_PrivateKey #define i2d_PublicKey wolfSSL_i2d_PublicKey @@ -821,8 +822,10 @@ wolfSSL_X509_STORE_set_verify_cb((WOLFSSL_X509_STORE *)(s), (WOLFSSL_X509_STORE_ #define i2d_ASN1_OBJECT wolfSSL_i2d_ASN1_OBJECT #define ASN1_STRING_new wolfSSL_ASN1_STRING_new +#define ASN1_OCTET_STRING_new wolfSSL_ASN1_STRING_new #define ASN1_STRING_free wolfSSL_ASN1_STRING_free #define ASN1_STRING_cmp wolfSSL_ASN1_STRING_cmp +#define ASN1_OCTET_STRING_cmp wolfSSL_ASN1_STRING_cmp #define ASN1_STRING_data wolfSSL_ASN1_STRING_data #define ASN1_STRING_get0_data wolfSSL_ASN1_STRING_get0_data #define ASN1_STRING_length wolfSSL_ASN1_STRING_length diff --git a/wolfssl/ssl.h b/wolfssl/ssl.h index 7aa05b977..6e53af58d 100644 --- a/wolfssl/ssl.h +++ b/wolfssl/ssl.h @@ -4047,6 +4047,9 @@ WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_PEM_read_bio_X509_CRL(WOLFSSL_BIO *bp, WOLFSSL_X509_CRL **x, wc_pem_password_cb *cb, void *u); WOLFSSL_API WOLFSSL_X509 *wolfSSL_PEM_read_bio_X509_AUX (WOLFSSL_BIO *bp, WOLFSSL_X509 **x, wc_pem_password_cb *cb, void *u); +WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_INFO)* wolfSSL_PEM_X509_INFO_read( + XFILE fp, WOLF_STACK_OF(WOLFSSL_X509_INFO)* sk, + pem_password_cb* cb, void* u); WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_INFO)* wolfSSL_PEM_X509_INFO_read_bio( WOLFSSL_BIO* bio, WOLF_STACK_OF(WOLFSSL_X509_INFO)* sk, wc_pem_password_cb* cb, void* u);