Merge pull request #4924 from dgarske/coexist_fixes

This commit is contained in:
Hayden Roche
2022-03-07 13:00:22 -08:00
committed by GitHub
24 changed files with 332 additions and 215 deletions

View File

@ -26,8 +26,10 @@
#include <cyassl/ctaocrypt/settings.h> #include <cyassl/ctaocrypt/settings.h>
/* let's use cyassl layer AND cyassl openssl layer */ /* let's use cyassl layer AND cyassl openssl layer */
#undef TEST_OPENSSL_COEXIST /* can't use this option with this example */
#include <cyassl/ssl.h> #include <cyassl/ssl.h>
#include <cyassl/openssl/ssl.h>
/* Force enable the compatibility macros for this example */
#ifdef CYASSL_DTLS #ifdef CYASSL_DTLS
#include <cyassl/error-ssl.h> #include <cyassl/error-ssl.h>
#endif #endif
@ -43,6 +45,11 @@
#include <cyassl/test.h> #include <cyassl/test.h>
#ifndef OPENSSL_EXTRA_X509_SMALL
#define OPENSSL_EXTRA_X509_SMALL
#endif
#include <cyassl/openssl/ssl.h>
#include <examples/echoclient/echoclient.h> #include <examples/echoclient/echoclient.h>
#ifndef NO_WOLFSSL_CLIENT #ifndef NO_WOLFSSL_CLIENT

View File

@ -32,6 +32,7 @@
#endif #endif
#include <wolfssl/wolfcrypt/settings.h> #include <wolfssl/wolfcrypt/settings.h>
#undef TEST_OPENSSL_COEXIST /* can't use this option with this example */
#include <wolfssl/ssl.h> /* name change portability layer */ #include <wolfssl/ssl.h> /* name change portability layer */
#ifdef HAVE_ECC #ifdef HAVE_ECC
@ -61,10 +62,15 @@ static const char *wolfsentry_config_path = NULL;
#include <wolfssl/certs_test.h> #include <wolfssl/certs_test.h>
#endif #endif
#include <wolfssl/openssl/ssl.h>
#include <wolfssl/test.h> #include <wolfssl/test.h>
#include <wolfssl/error-ssl.h> #include <wolfssl/error-ssl.h>
/* Force enable the compatibility macros for this example */
#ifndef OPENSSL_EXTRA_X509_SMALL
#define OPENSSL_EXTRA_X509_SMALL
#endif
#include <wolfssl/openssl/ssl.h>
#include "examples/server/server.h" #include "examples/server/server.h"
#ifndef NO_WOLFSSL_SERVER #ifndef NO_WOLFSSL_SERVER

View File

@ -30650,7 +30650,7 @@ static int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
* "stateful" tickets for 1.3 so just use the regular * "stateful" tickets for 1.3 so just use the regular
* stateless ones. */ * stateless ones. */
(!IsAtLeastTLSv1_3(ssl->version) && (!IsAtLeastTLSv1_3(ssl->version) &&
(ssl->options.mask & SSL_OP_NO_TICKET) != 0) (ssl->options.mask & WOLFSSL_OP_NO_TICKET) != 0)
#endif #endif
) { ) {
ret = WOLFSSL_TICKET_RET_FATAL; ret = WOLFSSL_TICKET_RET_FATAL;
@ -30754,7 +30754,7 @@ static int DoSessionTicket(WOLFSSL* ssl, const byte* input, word32* inOutIdx,
* "stateful" tickets for 1.3 so just use the regular * "stateful" tickets for 1.3 so just use the regular
* stateless ones. */ * stateless ones. */
(!IsAtLeastTLSv1_3(ssl->version) && (!IsAtLeastTLSv1_3(ssl->version) &&
(ssl->options.mask & SSL_OP_NO_TICKET) != 0) (ssl->options.mask & WOLFSSL_OP_NO_TICKET) != 0)
#endif #endif
) { ) {
ret = WOLFSSL_TICKET_RET_FATAL; ret = WOLFSSL_TICKET_RET_FATAL;

View File

@ -29865,12 +29865,12 @@ int wolfSSL_PEM_def_callback(char* name, int num, int w, void* key)
static long wolf_set_options(long old_op, long op) static long wolf_set_options(long old_op, long op)
{ {
/* if SSL_OP_ALL then turn all bug workarounds on */ /* if SSL_OP_ALL then turn all bug workarounds on */
if ((op & SSL_OP_ALL) == SSL_OP_ALL) { if ((op & WOLFSSL_OP_ALL) == WOLFSSL_OP_ALL) {
WOLFSSL_MSG("\tSSL_OP_ALL"); WOLFSSL_MSG("\tSSL_OP_ALL");
} }
/* by default cookie exchange is on with DTLS */ /* by default cookie exchange is on with DTLS */
if ((op & SSL_OP_COOKIE_EXCHANGE) == SSL_OP_COOKIE_EXCHANGE) { if ((op & WOLFSSL_OP_COOKIE_EXCHANGE) == WOLFSSL_OP_COOKIE_EXCHANGE) {
WOLFSSL_MSG("\tSSL_OP_COOKIE_EXCHANGE : on by default"); WOLFSSL_MSG("\tSSL_OP_COOKIE_EXCHANGE : on by default");
} }
@ -29879,7 +29879,7 @@ static long wolf_set_options(long old_op, long op)
} }
#ifdef SSL_OP_NO_TLSv1_3 #ifdef SSL_OP_NO_TLSv1_3
if ((op & SSL_OP_NO_TLSv1_3) == SSL_OP_NO_TLSv1_3) { if ((op & WOLFSSL_OP_NO_TLSv1_3) == WOLFSSL_OP_NO_TLSv1_3) {
WOLFSSL_MSG("\tSSL_OP_NO_TLSv1_3"); WOLFSSL_MSG("\tSSL_OP_NO_TLSv1_3");
} }
#endif #endif
@ -41985,7 +41985,7 @@ WOLFSSL_EC_GROUP* wolfSSL_PEM_read_bio_ECPKParameters(WOLFSSL_BIO* bio,
#endif /* !NO_BIO */ #endif /* !NO_BIO */
#if !defined(NO_FILESYSTEM) #if !defined(NO_FILESYSTEM)
WOLFSSL_EVP_PKEY *wolfSSL_PEM_read_PUBKEY(XFILE fp, EVP_PKEY **x, WOLFSSL_EVP_PKEY *wolfSSL_PEM_read_PUBKEY(XFILE fp, WOLFSSL_EVP_PKEY **x,
wc_pem_password_cb *cb, void *u) wc_pem_password_cb *cb, void *u)
{ {
(void)fp; (void)fp;

View File

@ -34,6 +34,7 @@
#endif #endif
#include <wolfssl/wolfcrypt/settings.h> #include <wolfssl/wolfcrypt/settings.h>
#undef TEST_OPENSSL_COEXIST /* can't use this option with this example */
#ifndef FOURK_BUF #ifndef FOURK_BUF
#define FOURK_BUF 4096 #define FOURK_BUF 4096
@ -7462,8 +7463,8 @@ static void test_wolfSSL_UseTrustedCA(void)
#ifndef NO_WOLFSSL_SERVER #ifndef NO_WOLFSSL_SERVER
AssertNotNull((ctx = wolfSSL_CTX_new(wolfSSLv23_server_method()))); AssertNotNull((ctx = wolfSSL_CTX_new(wolfSSLv23_server_method())));
AssertTrue(wolfSSL_CTX_use_certificate_file(ctx, svrCertFile, SSL_FILETYPE_PEM)); AssertTrue(wolfSSL_CTX_use_certificate_file(ctx, svrCertFile, WOLFSSL_FILETYPE_PEM));
AssertTrue(wolfSSL_CTX_use_PrivateKey_file(ctx, svrKeyFile, SSL_FILETYPE_PEM)); AssertTrue(wolfSSL_CTX_use_PrivateKey_file(ctx, svrKeyFile, WOLFSSL_FILETYPE_PEM));
#else #else
AssertNotNull((ctx = wolfSSL_CTX_new(wolfSSLv23_client_method()))); AssertNotNull((ctx = wolfSSL_CTX_new(wolfSSLv23_client_method())));
#endif #endif

View File

@ -2015,7 +2015,7 @@ int wolfSSL_EVP_PKEY_paramgen(WOLFSSL_EVP_PKEY_CTX* ctx,
* The difference is nicely explained and illustrated in section * The difference is nicely explained and illustrated in section
* "ECDH and Named Curves" of * "ECDH and Named Curves" of
* https://wiki.openssl.org/index.php/Elliptic_Curve_Diffie_Hellman */ * https://wiki.openssl.org/index.php/Elliptic_Curve_Diffie_Hellman */
int EVP_PKEY_CTX_set_ec_param_enc(WOLFSSL_EVP_PKEY_CTX *ctx, int wolfSSL_EVP_PKEY_CTX_set_ec_param_enc(WOLFSSL_EVP_PKEY_CTX *ctx,
int flag) int flag)
{ {
(void)ctx; (void)ctx;
@ -2727,7 +2727,7 @@ int wolfSSL_EVP_add_cipher(const WOLFSSL_EVP_CIPHER *cipher)
} }
WOLFSSL_EVP_PKEY* wolfSSL_EVP_PKEY_new_mac_key(int type, ENGINE* e, WOLFSSL_EVP_PKEY* wolfSSL_EVP_PKEY_new_mac_key(int type, WOLFSSL_ENGINE* e,
const unsigned char* key, int keylen) const unsigned char* key, int keylen)
{ {
WOLFSSL_EVP_PKEY* pkey; WOLFSSL_EVP_PKEY* pkey;

View File

@ -85,7 +85,7 @@
*/ */
#define GET_U16(a) (*(word16*)(a)) #define GET_U16(a) (*(word16*)(a))
/** /**
* Encode 64-bit nuumber to a little-endian byte array. * Encode 64-bit number to a little-endian byte array.
* *
* @param [out] a Byte array to write into. * @param [out] a Byte array to write into.
* @param [in] n Number to encode. * @param [in] n Number to encode.
@ -125,7 +125,7 @@
#define GET_U16(a) (((word16)((a)[1]) << 8) | \ #define GET_U16(a) (((word16)((a)[1]) << 8) | \
((word16)((a)[0]) )) ((word16)((a)[0]) ))
/** /**
* Encode 64-bit nuumber to a little-endian byte array. * Encode 64-bit number to a little-endian byte array.
* *
* @param [out] a Byte array to write into. * @param [out] a Byte array to write into.
* @param [in] n Number to encode. * @param [in] n Number to encode.

View File

@ -30,6 +30,7 @@
extern "C" { extern "C" {
#endif #endif
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
#define BIO_FLAGS_BASE64_NO_NL WOLFSSL_BIO_FLAG_BASE64_NO_NL #define BIO_FLAGS_BASE64_NO_NL WOLFSSL_BIO_FLAG_BASE64_NO_NL
#define BIO_FLAGS_READ WOLFSSL_BIO_FLAG_READ #define BIO_FLAGS_READ WOLFSSL_BIO_FLAG_READ
@ -166,11 +167,11 @@
#define BIO_FP_WRITE 0x04 #define BIO_FP_WRITE 0x04
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#ifdef __cplusplus #ifdef __cplusplus
} /* extern "C" */ } /* extern "C" */
#endif #endif
#endif /* WOLFSSL_BIO_H_ */ #endif /* WOLFSSL_BIO_H_ */

View File

@ -47,10 +47,12 @@ typedef struct WOLFSSL_BIGNUM {
#endif #endif
} WOLFSSL_BIGNUM; } WOLFSSL_BIGNUM;
#define BN_ULONG WOLFSSL_BN_ULONG
#define WOLFSSL_BN_ULONG unsigned long #define WOLFSSL_BN_ULONG unsigned long
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
#define BN_ULONG WOLFSSL_BN_ULONG
#endif
typedef struct WOLFSSL_BN_CTX WOLFSSL_BN_CTX; typedef struct WOLFSSL_BN_CTX WOLFSSL_BN_CTX;
typedef struct WOLFSSL_BN_GENCB WOLFSSL_BN_GENCB; typedef struct WOLFSSL_BN_GENCB WOLFSSL_BN_GENCB;
WOLFSSL_API WOLFSSL_BN_CTX* wolfSSL_BN_CTX_new(void); WOLFSSL_API WOLFSSL_BN_CTX* wolfSSL_BN_CTX_new(void);
@ -156,8 +158,11 @@ WOLFSSL_API WOLFSSL_BIGNUM *wolfSSL_BN_mod_inverse(
const WOLFSSL_BIGNUM *n, const WOLFSSL_BIGNUM *n,
WOLFSSL_BN_CTX *ctx); WOLFSSL_BN_CTX *ctx);
typedef WOLFSSL_BIGNUM BIGNUM;
typedef WOLFSSL_BN_CTX BN_CTX; #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
typedef WOLFSSL_BIGNUM BIGNUM;
typedef WOLFSSL_BN_CTX BN_CTX;
typedef WOLFSSL_BN_GENCB BN_GENCB; typedef WOLFSSL_BN_GENCB BN_GENCB;
#define BN_CTX_new wolfSSL_BN_CTX_new #define BN_CTX_new wolfSSL_BN_CTX_new
@ -249,6 +254,9 @@ typedef WOLFSSL_BN_GENCB BN_GENCB;
#define BN_prime_checks 0 #define BN_prime_checks 0
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#ifdef __cplusplus #ifdef __cplusplus
} /* extern "C" */ } /* extern "C" */
#endif #endif

View File

@ -40,14 +40,17 @@ typedef struct WOLFSSL_HMAC_CTX {
#endif #endif
typedef char WOLFSSL_EVP_MD; typedef char WOLFSSL_EVP_MD;
typedef struct WOLFSSL_EVP_PKEY WOLFSSL_EVP_PKEY; typedef char WOLFSSL_EVP_CIPHER;
typedef struct WOLFSSL_EVP_MD_CTX WOLFSSL_EVP_MD_CTX; typedef int WOLFSSL_ENGINE;
typedef struct WOLFSSL_EVP_PKEY WOLFSSL_PKCS8_PRIV_KEY_INFO;
typedef char WOLFSSL_EVP_CIPHER;
typedef struct WOLFSSL_EVP_PKEY_CTX WOLFSSL_EVP_PKEY_CTX;
typedef struct WOLFSSL_EVP_CIPHER_CTX WOLFSSL_EVP_CIPHER_CTX;
typedef struct WOLFSSL_ASN1_PCTX WOLFSSL_ASN1_PCTX;
typedef struct WOLFSSL_EVP_PKEY WOLFSSL_EVP_PKEY;
typedef struct WOLFSSL_EVP_MD_CTX WOLFSSL_EVP_MD_CTX;
typedef struct WOLFSSL_EVP_PKEY WOLFSSL_PKCS8_PRIV_KEY_INFO;
typedef struct WOLFSSL_EVP_PKEY_CTX WOLFSSL_EVP_PKEY_CTX;
typedef struct WOLFSSL_EVP_CIPHER_CTX WOLFSSL_EVP_CIPHER_CTX;
typedef struct WOLFSSL_ASN1_PCTX WOLFSSL_ASN1_PCTX;
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
typedef WOLFSSL_EVP_MD EVP_MD; typedef WOLFSSL_EVP_MD EVP_MD;
typedef WOLFSSL_EVP_MD_CTX EVP_MD_CTX; typedef WOLFSSL_EVP_MD_CTX EVP_MD_CTX;
typedef WOLFSSL_EVP_CIPHER EVP_CIPHER; typedef WOLFSSL_EVP_CIPHER EVP_CIPHER;
@ -56,8 +59,8 @@ typedef WOLFSSL_ASN1_PCTX ASN1_PCTX;
typedef WOLFSSL_EVP_PKEY EVP_PKEY; typedef WOLFSSL_EVP_PKEY EVP_PKEY;
typedef WOLFSSL_EVP_PKEY PKCS8_PRIV_KEY_INFO; typedef WOLFSSL_EVP_PKEY PKCS8_PRIV_KEY_INFO;
typedef int WOLFSSL_ENGINE; typedef WOLFSSL_ENGINE ENGINE;
typedef WOLFSSL_ENGINE ENGINE; typedef WOLFSSL_EVP_PKEY_CTX EVP_PKEY_CTX;
typedef WOLFSSL_EVP_PKEY_CTX EVP_PKEY_CTX; #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#endif /* WOLFSSL_OPENSSL_COMPAT_TYPES_H_ */ #endif /* !WOLFSSL_OPENSSL_COMPAT_TYPES_H_ */

View File

@ -67,6 +67,25 @@ WOLFSSL_API unsigned char *wolfSSL_OPENSSL_hexstr2buf(const char *str, long *len
WOLFSSL_API int wolfSSL_OPENSSL_init_crypto(word64 opts, const OPENSSL_INIT_SETTINGS *settings); WOLFSSL_API int wolfSSL_OPENSSL_init_crypto(word64 opts, const OPENSSL_INIT_SETTINGS *settings);
#endif #endif
/* class index for wolfSSL_CRYPTO_get_ex_new_index */
#define CRYPTO_EX_INDEX_SSL 0
#define CRYPTO_EX_INDEX_SSL_CTX 1
#define CRYPTO_EX_INDEX_SSL_SESSION 2
#define CRYPTO_EX_INDEX_X509 3
#define CRYPTO_EX_INDEX_X509_STORE 4
#define CRYPTO_EX_INDEX_X509_STORE_CTX 5
#define CRYPTO_EX_INDEX_DH 6
#define CRYPTO_EX_INDEX_DSA 7
#define CRYPTO_EX_INDEX_EC_KEY 8
#define CRYPTO_EX_INDEX_RSA 9
#define CRYPTO_EX_INDEX_ENGINE 10
#define CRYPTO_EX_INDEX_UI 11
#define CRYPTO_EX_INDEX_BIO 12
#define CRYPTO_EX_INDEX_APP 13
#define CRYPTO_EX_INDEX_UI_METHOD 14
#define CRYPTO_EX_INDEX_DRBG 15
#define CRYPTO_EX_INDEX__COUNT 16
#define crypto_threadid_st WOLFSSL_CRYPTO_THREADID #define crypto_threadid_st WOLFSSL_CRYPTO_THREADID
#define CRYPTO_THREADID WOLFSSL_CRYPTO_THREADID #define CRYPTO_THREADID WOLFSSL_CRYPTO_THREADID

View File

@ -33,12 +33,10 @@
#endif #endif
#ifndef WOLFSSL_DH_TYPE_DEFINED /* guard on redeclaration */ #ifndef WOLFSSL_DH_TYPE_DEFINED /* guard on redeclaration */
typedef struct WOLFSSL_DH WOLFSSL_DH; typedef struct WOLFSSL_DH WOLFSSL_DH;
#define WOLFSSL_DH_TYPE_DEFINED #define WOLFSSL_DH_TYPE_DEFINED
#endif #endif
typedef WOLFSSL_DH DH;
struct WOLFSSL_DH { struct WOLFSSL_DH {
WOLFSSL_BIGNUM* p; WOLFSSL_BIGNUM* p;
WOLFSSL_BIGNUM* g; WOLFSSL_BIGNUM* g;
@ -74,6 +72,11 @@ WOLFSSL_API int wolfSSL_DH_set0_pqg(WOLFSSL_DH *dh, WOLFSSL_BIGNUM *p,
WOLFSSL_API WOLFSSL_DH* wolfSSL_DH_get_2048_256(void); WOLFSSL_API WOLFSSL_DH* wolfSSL_DH_get_2048_256(void);
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
typedef WOLFSSL_DH DH;
#define DH_new wolfSSL_DH_new #define DH_new wolfSSL_DH_new
#define DH_free wolfSSL_DH_free #define DH_free wolfSSL_DH_free
@ -113,13 +116,15 @@ WOLFSSL_API WOLFSSL_DH* wolfSSL_DH_get_2048_256(void);
#define DH_get_2048_256 wolfSSL_DH_get_2048_256 #define DH_get_2048_256 wolfSSL_DH_get_2048_256
#ifdef __cplusplus
} /* extern "C" */
#endif
#if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) #if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL)
#define DH_generate_parameters wolfSSL_DH_generate_parameters #define DH_generate_parameters wolfSSL_DH_generate_parameters
#define DH_generate_parameters_ex wolfSSL_DH_generate_parameters_ex #define DH_generate_parameters_ex wolfSSL_DH_generate_parameters_ex
#endif /* OPENSSL_ALL || HAVE_STUNNEL */ #endif /* OPENSSL_ALL || HAVE_STUNNEL */
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#ifdef __cplusplus
} /* extern "C" */
#endif
#endif /* WOLFSSL_DH_H_ */ #endif /* WOLFSSL_DH_H_ */

View File

@ -41,8 +41,6 @@ typedef struct WOLFSSL_DSA WOLFSSL_DSA;
#define WOLFSSL_DSA_TYPE_DEFINED #define WOLFSSL_DSA_TYPE_DEFINED
#endif #endif
typedef WOLFSSL_DSA DSA;
struct WOLFSSL_DSA { struct WOLFSSL_DSA {
WOLFSSL_BIGNUM* p; WOLFSSL_BIGNUM* p;
WOLFSSL_BIGNUM* q; WOLFSSL_BIGNUM* q;
@ -117,6 +115,10 @@ WOLFSSL_API int wolfSSL_i2d_DSAparams(
WOLFSSL_API WOLFSSL_DSA* wolfSSL_d2i_DSAparams( WOLFSSL_API WOLFSSL_DSA* wolfSSL_d2i_DSAparams(
WOLFSSL_DSA** dsa, const unsigned char** der, long derLen); WOLFSSL_DSA** dsa, const unsigned char** der, long derLen);
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
typedef WOLFSSL_DSA DSA;
#define WOLFSSL_DSA_LOAD_PRIVATE 1 #define WOLFSSL_DSA_LOAD_PRIVATE 1
#define WOLFSSL_DSA_LOAD_PUBLIC 2 #define WOLFSSL_DSA_LOAD_PUBLIC 2
@ -146,6 +148,8 @@ WOLFSSL_API WOLFSSL_DSA* wolfSSL_d2i_DSAparams(
#define DSA_SIG WOLFSSL_DSA_SIG #define DSA_SIG WOLFSSL_DSA_SIG
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#ifdef __cplusplus #ifdef __cplusplus
} /* extern "C" */ } /* extern "C" */
#endif #endif

View File

@ -32,6 +32,7 @@
extern "C" { extern "C" {
#endif #endif
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
/* Map OpenSSL NID value */ /* Map OpenSSL NID value */
enum { enum {
POINT_CONVERSION_COMPRESSED = 2, POINT_CONVERSION_COMPRESSED = 2,
@ -79,22 +80,18 @@ enum {
OPENSSL_EC_EXPLICIT_CURVE = 0x000, OPENSSL_EC_EXPLICIT_CURVE = 0x000,
OPENSSL_EC_NAMED_CURVE = 0x001, OPENSSL_EC_NAMED_CURVE = 0x001,
}; };
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#ifndef WOLFSSL_EC_TYPE_DEFINED /* guard on redeclaration */ #ifndef WOLFSSL_EC_TYPE_DEFINED /* guard on redeclaration */
typedef struct WOLFSSL_EC_KEY WOLFSSL_EC_KEY; typedef struct WOLFSSL_EC_KEY WOLFSSL_EC_KEY;
typedef struct WOLFSSL_EC_POINT WOLFSSL_EC_POINT; typedef struct WOLFSSL_EC_POINT WOLFSSL_EC_POINT;
typedef struct WOLFSSL_EC_GROUP WOLFSSL_EC_GROUP; typedef struct WOLFSSL_EC_GROUP WOLFSSL_EC_GROUP;
typedef struct WOLFSSL_EC_BUILTIN_CURVE WOLFSSL_EC_BUILTIN_CURVE; typedef struct WOLFSSL_EC_BUILTIN_CURVE WOLFSSL_EC_BUILTIN_CURVE;
/* WOLFSSL_EC_METHOD is just an alias of WOLFSSL_EC_GROUP for now */ /* WOLFSSL_EC_METHOD is just an alias of WOLFSSL_EC_GROUP for now */
typedef struct WOLFSSL_EC_GROUP WOLFSSL_EC_METHOD; typedef struct WOLFSSL_EC_GROUP WOLFSSL_EC_METHOD;
#define WOLFSSL_EC_TYPE_DEFINED
#endif
typedef WOLFSSL_EC_KEY EC_KEY; #define WOLFSSL_EC_TYPE_DEFINED
typedef WOLFSSL_EC_GROUP EC_GROUP; #endif
typedef WOLFSSL_EC_GROUP EC_METHOD;
typedef WOLFSSL_EC_POINT EC_POINT;
typedef WOLFSSL_EC_BUILTIN_CURVE EC_builtin_curve;
struct WOLFSSL_EC_POINT { struct WOLFSSL_EC_POINT {
WOLFSSL_BIGNUM *X; WOLFSSL_BIGNUM *X;
@ -295,6 +292,14 @@ char* wolfSSL_EC_POINT_point2hex(const WOLFSSL_EC_GROUP* group,
WOLFSSL_BN_CTX* ctx); WOLFSSL_BN_CTX* ctx);
#endif #endif
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
typedef WOLFSSL_EC_KEY EC_KEY;
typedef WOLFSSL_EC_GROUP EC_GROUP;
typedef WOLFSSL_EC_GROUP EC_METHOD;
typedef WOLFSSL_EC_POINT EC_POINT;
typedef WOLFSSL_EC_BUILTIN_CURVE EC_builtin_curve;
#ifndef HAVE_ECC #ifndef HAVE_ECC
#define OPENSSL_NO_EC #define OPENSSL_NO_EC
#endif #endif
@ -372,6 +377,8 @@ char* wolfSSL_EC_POINT_point2hex(const WOLFSSL_EC_GROUP* group,
#define EC_curve_nid2nist wolfSSL_EC_curve_nid2nist #define EC_curve_nid2nist wolfSSL_EC_curve_nid2nist
#define EC_curve_nist2nid wolfSSL_EC_curve_nist2nid #define EC_curve_nist2nid wolfSSL_EC_curve_nist2nid
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#ifdef __cplusplus #ifdef __cplusplus
} /* extern "C" */ } /* extern "C" */
#endif #endif

View File

@ -24,6 +24,7 @@
#include <wolfssl/wolfcrypt/logging.h> #include <wolfssl/wolfcrypt/logging.h>
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
/* err.h for openssl */ /* err.h for openssl */
#define ERR_load_ERR_strings wolfSSL_ERR_load_ERR_strings #define ERR_load_ERR_strings wolfSSL_ERR_load_ERR_strings
#define ERR_load_crypto_strings wolfSSL_ERR_load_crypto_strings #define ERR_load_crypto_strings wolfSSL_ERR_load_crypto_strings
@ -54,5 +55,7 @@
#define SSLerr(f,r) ERR_put_error(0,(f),(r),__FILE__,__LINE__) #define SSLerr(f,r) ERR_put_error(0,(f),(r),__FILE__,__LINE__)
#define ECerr(f,r) ERR_put_error(0,(f),(r),__FILE__,__LINE__) #define ECerr(f,r) ERR_put_error(0,(f),(r),__FILE__,__LINE__)
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#endif /* WOLFSSL_OPENSSL_ERR_ */ #endif /* WOLFSSL_OPENSSL_ERR_ */

View File

@ -144,11 +144,15 @@ typedef union {
#ifndef NO_MD5 #ifndef NO_MD5
WOLFSSL_MD5_CTX md5; WOLFSSL_MD5_CTX md5;
#endif #endif
WOLFSSL_SHA_CTX sha; #ifndef NO_SHA
WOLFSSL_SHA_CTX sha;
#endif
#ifdef WOLFSSL_SHA224 #ifdef WOLFSSL_SHA224
WOLFSSL_SHA224_CTX sha224; WOLFSSL_SHA224_CTX sha224;
#endif #endif
WOLFSSL_SHA256_CTX sha256; #ifndef NO_SHA256
WOLFSSL_SHA256_CTX sha256;
#endif
#ifdef WOLFSSL_SHA384 #ifdef WOLFSSL_SHA384
WOLFSSL_SHA384_CTX sha384; WOLFSSL_SHA384_CTX sha384;
#endif #endif
@ -203,7 +207,7 @@ typedef union {
#endif #endif
} WOLFSSL_Cipher; } WOLFSSL_Cipher;
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
enum { enum {
AES_128_CBC_TYPE = 1, AES_128_CBC_TYPE = 1,
AES_192_CBC_TYPE = 2, AES_192_CBC_TYPE = 2,
@ -371,6 +375,16 @@ enum {
#define NID_rsaEncryption EVP_PKEY_RSA #define NID_rsaEncryption EVP_PKEY_RSA
#define NID_dsa EVP_PKEY_DSA #define NID_dsa EVP_PKEY_DSA
#define EVP_PKEY_OP_SIGN (1 << 3)
#define EVP_PKEY_OP_ENCRYPT (1 << 6)
#define EVP_PKEY_OP_DECRYPT (1 << 7)
#define EVP_PKEY_OP_DERIVE (1 << 8)
#define EVP_PKEY_PRINT_INDENT_MAX 128
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#define WOLFSSL_EVP_BUF_SIZE 16 #define WOLFSSL_EVP_BUF_SIZE 16
struct WOLFSSL_EVP_CIPHER_CTX { struct WOLFSSL_EVP_CIPHER_CTX {
int keyLen; /* user may set for variable */ int keyLen; /* user may set for variable */
@ -455,13 +469,6 @@ WOLFSSL_API int wolfSSL_EVP_DecodeFinal(WOLFSSL_EVP_ENCODE_CTX* ctx,
WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_blake2b512(void); WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_blake2b512(void);
WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_blake2s256(void); WOLFSSL_API const WOLFSSL_EVP_MD* wolfSSL_EVP_blake2s256(void);
#define EVP_PKEY_OP_SIGN (1 << 3)
#define EVP_PKEY_OP_ENCRYPT (1 << 6)
#define EVP_PKEY_OP_DECRYPT (1 << 7)
#define EVP_PKEY_OP_DERIVE (1 << 8)
#define EVP_PKEY_PRINT_INDENT_MAX 128
WOLFSSL_API void wolfSSL_EVP_init(void); WOLFSSL_API void wolfSSL_EVP_init(void);
WOLFSSL_API int wolfSSL_EVP_MD_size(const WOLFSSL_EVP_MD* type); WOLFSSL_API int wolfSSL_EVP_MD_size(const WOLFSSL_EVP_MD* type);
WOLFSSL_API int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type); WOLFSSL_API int wolfSSL_EVP_MD_type(const WOLFSSL_EVP_MD* type);
@ -484,40 +491,21 @@ WOLFSSL_API int wolfSSL_EVP_CIPHER_nid(const WOLFSSL_EVP_CIPHER *cipher);
WOLFSSL_API int wolfSSL_EVP_DigestInit(WOLFSSL_EVP_MD_CTX* ctx, WOLFSSL_API int wolfSSL_EVP_DigestInit(WOLFSSL_EVP_MD_CTX* ctx,
const WOLFSSL_EVP_MD* type); const WOLFSSL_EVP_MD* type);
WOLFSSL_API int wolfSSL_EVP_DigestInit_ex(WOLFSSL_EVP_MD_CTX* ctx,
const WOLFSSL_EVP_MD* type,
WOLFSSL_ENGINE *impl);
WOLFSSL_API int wolfSSL_EVP_DigestUpdate(WOLFSSL_EVP_MD_CTX* ctx, const void* data, WOLFSSL_API int wolfSSL_EVP_DigestUpdate(WOLFSSL_EVP_MD_CTX* ctx, const void* data,
size_t sz); size_t sz);
WOLFSSL_API int wolfSSL_EVP_DigestFinal(WOLFSSL_EVP_MD_CTX* ctx, unsigned char* md, WOLFSSL_API int wolfSSL_EVP_DigestFinal(WOLFSSL_EVP_MD_CTX* ctx, unsigned char* md,
unsigned int* s); unsigned int* s);
WOLFSSL_API int wolfSSL_EVP_DigestFinal_ex(WOLFSSL_EVP_MD_CTX* ctx, WOLFSSL_API int wolfSSL_EVP_DigestFinal_ex(WOLFSSL_EVP_MD_CTX* ctx,
unsigned char* md, unsigned int* s); unsigned char* md, unsigned int* s);
WOLFSSL_API int wolfSSL_EVP_DigestSignInit(WOLFSSL_EVP_MD_CTX *ctx,
WOLFSSL_EVP_PKEY_CTX **pctx,
const WOLFSSL_EVP_MD *type,
WOLFSSL_ENGINE *e,
WOLFSSL_EVP_PKEY *pkey);
WOLFSSL_API int wolfSSL_EVP_DigestSignUpdate(WOLFSSL_EVP_MD_CTX *ctx, WOLFSSL_API int wolfSSL_EVP_DigestSignUpdate(WOLFSSL_EVP_MD_CTX *ctx,
const void *d, unsigned int cnt); const void *d, unsigned int cnt);
WOLFSSL_API int wolfSSL_EVP_DigestSignFinal(WOLFSSL_EVP_MD_CTX *ctx, WOLFSSL_API int wolfSSL_EVP_DigestSignFinal(WOLFSSL_EVP_MD_CTX *ctx,
unsigned char *sig, size_t *siglen); unsigned char *sig, size_t *siglen);
WOLFSSL_API int wolfSSL_EVP_DigestVerifyInit(WOLFSSL_EVP_MD_CTX *ctx,
WOLFSSL_EVP_PKEY_CTX **pctx,
const WOLFSSL_EVP_MD *type,
WOLFSSL_ENGINE *e,
WOLFSSL_EVP_PKEY *pkey);
WOLFSSL_API int wolfSSL_EVP_DigestVerifyUpdate(WOLFSSL_EVP_MD_CTX *ctx, WOLFSSL_API int wolfSSL_EVP_DigestVerifyUpdate(WOLFSSL_EVP_MD_CTX *ctx,
const void *d, size_t cnt); const void *d, size_t cnt);
WOLFSSL_API int wolfSSL_EVP_DigestVerifyFinal(WOLFSSL_EVP_MD_CTX *ctx, WOLFSSL_API int wolfSSL_EVP_DigestVerifyFinal(WOLFSSL_EVP_MD_CTX *ctx,
const unsigned char *sig, const unsigned char *sig,
size_t siglen); size_t siglen);
WOLFSSL_API int wolfSSL_EVP_Digest(const unsigned char* in, int inSz, unsigned char* out,
unsigned int* outSz, const WOLFSSL_EVP_MD* evp,
WOLFSSL_ENGINE* eng);
WOLFSSL_API int wolfSSL_EVP_BytesToKey(const WOLFSSL_EVP_CIPHER* type, WOLFSSL_API int wolfSSL_EVP_BytesToKey(const WOLFSSL_EVP_CIPHER* type,
const WOLFSSL_EVP_MD* md, const byte* salt, const WOLFSSL_EVP_MD* md, const byte* salt,
@ -538,30 +526,6 @@ WOLFSSL_API int wolfSSL_EVP_CipherInit(WOLFSSL_EVP_CIPHER_CTX* ctx,
const unsigned char* key, const unsigned char* key,
const unsigned char* iv, const unsigned char* iv,
int enc); int enc);
WOLFSSL_API int wolfSSL_EVP_CipherInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
const WOLFSSL_EVP_CIPHER* type,
WOLFSSL_ENGINE *impl,
const unsigned char* key,
const unsigned char* iv,
int enc);
WOLFSSL_API int wolfSSL_EVP_EncryptInit(WOLFSSL_EVP_CIPHER_CTX* ctx,
const WOLFSSL_EVP_CIPHER* type,
const unsigned char* key,
const unsigned char* iv);
WOLFSSL_API int wolfSSL_EVP_EncryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
const WOLFSSL_EVP_CIPHER* type,
WOLFSSL_ENGINE *impl,
const unsigned char* key,
const unsigned char* iv);
WOLFSSL_API int wolfSSL_EVP_DecryptInit(WOLFSSL_EVP_CIPHER_CTX* ctx,
const WOLFSSL_EVP_CIPHER* type,
const unsigned char* key,
const unsigned char* iv);
WOLFSSL_API int wolfSSL_EVP_DecryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
const WOLFSSL_EVP_CIPHER* type,
WOLFSSL_ENGINE *impl,
const unsigned char* key,
const unsigned char* iv);
WOLFSSL_API int wolfSSL_EVP_CipherUpdate(WOLFSSL_EVP_CIPHER_CTX *ctx, WOLFSSL_API int wolfSSL_EVP_CipherUpdate(WOLFSSL_EVP_CIPHER_CTX *ctx,
unsigned char *out, int *outl, unsigned char *out, int *outl,
const unsigned char *in, int inl); const unsigned char *in, int inl);
@ -604,10 +568,10 @@ WOLFSSL_API int wolfSSL_EVP_PKEY_assign_RSA(WOLFSSL_EVP_PKEY* pkey,
WOLFSSL_RSA* key); WOLFSSL_RSA* key);
WOLFSSL_API int wolfSSL_EVP_PKEY_assign_EC_KEY(WOLFSSL_EVP_PKEY* pkey, WOLFSSL_API int wolfSSL_EVP_PKEY_assign_EC_KEY(WOLFSSL_EVP_PKEY* pkey,
WOLFSSL_EC_KEY* key); WOLFSSL_EC_KEY* key);
WOLFSSL_API int wolfSSL_EVP_PKEY_assign_DSA(EVP_PKEY* pkey, WOLFSSL_DSA* key); WOLFSSL_API int wolfSSL_EVP_PKEY_assign_DSA(WOLFSSL_EVP_PKEY* pkey, WOLFSSL_DSA* key);
WOLFSSL_API int wolfSSL_EVP_PKEY_assign_DH(EVP_PKEY* pkey, WOLFSSL_DH* key); WOLFSSL_API int wolfSSL_EVP_PKEY_assign_DH(WOLFSSL_EVP_PKEY* pkey, WOLFSSL_DH* key);
WOLFSSL_API WOLFSSL_RSA* wolfSSL_EVP_PKEY_get0_RSA(struct WOLFSSL_EVP_PKEY *pkey); WOLFSSL_API WOLFSSL_RSA* wolfSSL_EVP_PKEY_get0_RSA(WOLFSSL_EVP_PKEY *pkey);
WOLFSSL_API WOLFSSL_DSA* wolfSSL_EVP_PKEY_get0_DSA(struct WOLFSSL_EVP_PKEY *pkey); WOLFSSL_API WOLFSSL_DSA* wolfSSL_EVP_PKEY_get0_DSA(WOLFSSL_EVP_PKEY *pkey);
WOLFSSL_API WOLFSSL_RSA* wolfSSL_EVP_PKEY_get1_RSA(WOLFSSL_EVP_PKEY* key); WOLFSSL_API WOLFSSL_RSA* wolfSSL_EVP_PKEY_get1_RSA(WOLFSSL_EVP_PKEY* key);
WOLFSSL_API WOLFSSL_DSA* wolfSSL_EVP_PKEY_get1_DSA(WOLFSSL_EVP_PKEY* key); WOLFSSL_API WOLFSSL_DSA* wolfSSL_EVP_PKEY_get1_DSA(WOLFSSL_EVP_PKEY* key);
WOLFSSL_API WOLFSSL_EC_KEY *wolfSSL_EVP_PKEY_get0_EC_KEY(WOLFSSL_EVP_PKEY *pkey); WOLFSSL_API WOLFSSL_EC_KEY *wolfSSL_EVP_PKEY_get0_EC_KEY(WOLFSSL_EVP_PKEY *pkey);
@ -620,8 +584,6 @@ WOLFSSL_API int wolfSSL_EVP_PKEY_set1_DH(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_DH *key
WOLFSSL_API int wolfSSL_EVP_PKEY_set1_EC_KEY(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_EC_KEY *key); WOLFSSL_API int wolfSSL_EVP_PKEY_set1_EC_KEY(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_EC_KEY *key);
WOLFSSL_API int wolfSSL_EVP_PKEY_assign(WOLFSSL_EVP_PKEY *pkey, int type, void *key); WOLFSSL_API int wolfSSL_EVP_PKEY_assign(WOLFSSL_EVP_PKEY *pkey, int type, void *key);
WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_EVP_PKEY_new_mac_key(int type, ENGINE* e,
const unsigned char* key, int keylen);
WOLFSSL_API const unsigned char* wolfSSL_EVP_PKEY_get0_hmac(const WOLFSSL_EVP_PKEY* pkey, WOLFSSL_API const unsigned char* wolfSSL_EVP_PKEY_get0_hmac(const WOLFSSL_EVP_PKEY* pkey,
size_t* len); size_t* len);
WOLFSSL_API int wolfSSL_EVP_PKEY_sign_init(WOLFSSL_EVP_PKEY_CTX *ctx); WOLFSSL_API int wolfSSL_EVP_PKEY_sign_init(WOLFSSL_EVP_PKEY_CTX *ctx);
@ -632,7 +594,7 @@ WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_set_ec_paramgen_curve_nid(WOLFSSL_EVP_PKEY_
int nid); int nid);
WOLFSSL_API int wolfSSL_EVP_PKEY_paramgen(WOLFSSL_EVP_PKEY_CTX* ctx, WOLFSSL_API int wolfSSL_EVP_PKEY_paramgen(WOLFSSL_EVP_PKEY_CTX* ctx,
WOLFSSL_EVP_PKEY** pkey); WOLFSSL_EVP_PKEY** pkey);
WOLFSSL_API int EVP_PKEY_CTX_set_ec_param_enc(WOLFSSL_EVP_PKEY_CTX *ctx, WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_set_ec_param_enc(WOLFSSL_EVP_PKEY_CTX *ctx,
int flag); int flag);
WOLFSSL_API int wolfSSL_EVP_PKEY_keygen_init(WOLFSSL_EVP_PKEY_CTX *ctx); WOLFSSL_API int wolfSSL_EVP_PKEY_keygen_init(WOLFSSL_EVP_PKEY_CTX *ctx);
WOLFSSL_API int wolfSSL_EVP_PKEY_keygen(WOLFSSL_EVP_PKEY_CTX *ctx, WOLFSSL_API int wolfSSL_EVP_PKEY_keygen(WOLFSSL_EVP_PKEY_CTX *ctx,
@ -643,9 +605,7 @@ WOLFSSL_API void wolfSSL_EVP_PKEY_CTX_free(WOLFSSL_EVP_PKEY_CTX *ctx);
#else #else
WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_free(WOLFSSL_EVP_PKEY_CTX *ctx); WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_free(WOLFSSL_EVP_PKEY_CTX *ctx);
#endif #endif
WOLFSSL_API WOLFSSL_EVP_PKEY_CTX *wolfSSL_EVP_PKEY_CTX_new(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_ENGINE *e);
WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_set_rsa_padding(WOLFSSL_EVP_PKEY_CTX *ctx, int padding); WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_set_rsa_padding(WOLFSSL_EVP_PKEY_CTX *ctx, int padding);
WOLFSSL_API WOLFSSL_EVP_PKEY_CTX *wolfSSL_EVP_PKEY_CTX_new_id(int id, WOLFSSL_ENGINE *e);
WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_set_rsa_keygen_bits(WOLFSSL_EVP_PKEY_CTX *ctx, int bits); WOLFSSL_API int wolfSSL_EVP_PKEY_CTX_set_rsa_keygen_bits(WOLFSSL_EVP_PKEY_CTX *ctx, int bits);
WOLFSSL_API int wolfSSL_EVP_PKEY_derive_init(WOLFSSL_EVP_PKEY_CTX *ctx); WOLFSSL_API int wolfSSL_EVP_PKEY_derive_init(WOLFSSL_EVP_PKEY_CTX *ctx);
@ -680,9 +640,6 @@ WOLFSSL_API WOLFSSL_PKCS8_PRIV_KEY_INFO* wolfSSL_EVP_PKEY2PKCS8(const WOLFSSL_EV
WOLFSSL_API int wolfSSL_EVP_SignFinal(WOLFSSL_EVP_MD_CTX *ctx, unsigned char *sigret, WOLFSSL_API int wolfSSL_EVP_SignFinal(WOLFSSL_EVP_MD_CTX *ctx, unsigned char *sigret,
unsigned int *siglen, WOLFSSL_EVP_PKEY *pkey); unsigned int *siglen, WOLFSSL_EVP_PKEY *pkey);
WOLFSSL_API int wolfSSL_EVP_SignInit(WOLFSSL_EVP_MD_CTX *ctx, const WOLFSSL_EVP_MD *type); WOLFSSL_API int wolfSSL_EVP_SignInit(WOLFSSL_EVP_MD_CTX *ctx, const WOLFSSL_EVP_MD *type);
WOLFSSL_API int wolfSSL_EVP_SignInit_ex(WOLFSSL_EVP_MD_CTX* ctx,
const WOLFSSL_EVP_MD* type,
WOLFSSL_ENGINE *impl);
WOLFSSL_API int wolfSSL_EVP_SignUpdate(WOLFSSL_EVP_MD_CTX *ctx, const void *data, size_t len); WOLFSSL_API int wolfSSL_EVP_SignUpdate(WOLFSSL_EVP_MD_CTX *ctx, const void *data, size_t len);
WOLFSSL_API int wolfSSL_EVP_VerifyFinal(WOLFSSL_EVP_MD_CTX *ctx, WOLFSSL_API int wolfSSL_EVP_VerifyFinal(WOLFSSL_EVP_MD_CTX *ctx,
const unsigned char* sig, unsigned int sig_len, WOLFSSL_EVP_PKEY *pkey); const unsigned char* sig, unsigned int sig_len, WOLFSSL_EVP_PKEY *pkey);
@ -746,19 +703,8 @@ WOLFSSL_API void wolfSSL_EVP_MD_do_all(void (*fn) (const WOLFSSL_EVP_MD *md,
const char* from, const char* to, const char* from, const char* to,
void* xx), void* args); void* xx), void* args);
#define EVP_CIPH_STREAM_CIPHER WOLFSSL_EVP_CIPH_STREAM_CIPHER
#define EVP_CIPH_ECB_MODE WOLFSSL_EVP_CIPH_ECB_MODE
#define EVP_CIPH_CBC_MODE WOLFSSL_EVP_CIPH_CBC_MODE
#define EVP_CIPH_CFB_MODE WOLFSSL_EVP_CIPH_CFB_MODE
#define EVP_CIPH_OFB_MODE WOLFSSL_EVP_CIPH_OFB_MODE
#define EVP_CIPH_CTR_MODE WOLFSSL_EVP_CIPH_CTR_MODE
#define EVP_CIPH_GCM_MODE WOLFSSL_EVP_CIPH_GCM_MODE
#define EVP_CIPH_CCM_MODE WOLFSSL_EVP_CIPH_CCM_MODE
#define EVP_CIPH_XTS_MODE WOLFSSL_EVP_CIPH_XTS_MODE
#define EVP_CIPH_FLAG_AEAD_CIPHER WOLFSSL_EVP_CIPH_FLAG_AEAD_CIPHER #define WOLFSSL_EVP_CIPH_MODE 0x0007
#define WOLFSSL_EVP_CIPH_MODE 0x0007
#define WOLFSSL_EVP_CIPH_STREAM_CIPHER 0x0 #define WOLFSSL_EVP_CIPH_STREAM_CIPHER 0x0
#define WOLFSSL_EVP_CIPH_ECB_MODE 0x1 #define WOLFSSL_EVP_CIPH_ECB_MODE 0x1
#define WOLFSSL_EVP_CIPH_CBC_MODE 0x2 #define WOLFSSL_EVP_CIPH_CBC_MODE 0x2
@ -770,10 +716,74 @@ WOLFSSL_API void wolfSSL_EVP_MD_do_all(void (*fn) (const WOLFSSL_EVP_MD *md,
#define WOLFSSL_EVP_CIPH_XTS_MODE 0x10 #define WOLFSSL_EVP_CIPH_XTS_MODE 0x10
#define WOLFSSL_EVP_CIPH_FLAG_AEAD_CIPHER 0x20 #define WOLFSSL_EVP_CIPH_FLAG_AEAD_CIPHER 0x20
#define WOLFSSL_EVP_CIPH_NO_PADDING 0x100 #define WOLFSSL_EVP_CIPH_NO_PADDING 0x100
#define EVP_CIPH_VARIABLE_LENGTH 0x200 #define WOLFSSL_EVP_CIPH_VARIABLE_LENGTH 0x200
#define WOLFSSL_EVP_CIPH_TYPE_INIT 0xff #define WOLFSSL_EVP_CIPH_TYPE_INIT 0xff
/* end OpenSSH compat */
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
/* EVP ENGINE API's */
WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_EVP_PKEY_new_mac_key(int type, WOLFSSL_ENGINE* e,
const unsigned char* key, int keylen);
WOLFSSL_API int wolfSSL_EVP_DigestInit_ex(WOLFSSL_EVP_MD_CTX* ctx,
const WOLFSSL_EVP_MD* type,
WOLFSSL_ENGINE *impl);
WOLFSSL_API int wolfSSL_EVP_DigestSignInit(WOLFSSL_EVP_MD_CTX *ctx,
WOLFSSL_EVP_PKEY_CTX **pctx,
const WOLFSSL_EVP_MD *type,
WOLFSSL_ENGINE *e,
WOLFSSL_EVP_PKEY *pkey);
WOLFSSL_API int wolfSSL_EVP_DigestVerifyInit(WOLFSSL_EVP_MD_CTX *ctx,
WOLFSSL_EVP_PKEY_CTX **pctx,
const WOLFSSL_EVP_MD *type,
WOLFSSL_ENGINE *e,
WOLFSSL_EVP_PKEY *pkey);
WOLFSSL_API int wolfSSL_EVP_Digest(const unsigned char* in, int inSz, unsigned char* out,
unsigned int* outSz, const WOLFSSL_EVP_MD* evp,
WOLFSSL_ENGINE* eng);
WOLFSSL_API int wolfSSL_EVP_CipherInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
const WOLFSSL_EVP_CIPHER* type,
WOLFSSL_ENGINE *impl,
const unsigned char* key,
const unsigned char* iv,
int enc);
WOLFSSL_API int wolfSSL_EVP_EncryptInit(WOLFSSL_EVP_CIPHER_CTX* ctx,
const WOLFSSL_EVP_CIPHER* type,
const unsigned char* key,
const unsigned char* iv);
WOLFSSL_API int wolfSSL_EVP_EncryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
const WOLFSSL_EVP_CIPHER* type,
WOLFSSL_ENGINE *impl,
const unsigned char* key,
const unsigned char* iv);
WOLFSSL_API int wolfSSL_EVP_DecryptInit(WOLFSSL_EVP_CIPHER_CTX* ctx,
const WOLFSSL_EVP_CIPHER* type,
const unsigned char* key,
const unsigned char* iv);
WOLFSSL_API int wolfSSL_EVP_DecryptInit_ex(WOLFSSL_EVP_CIPHER_CTX* ctx,
const WOLFSSL_EVP_CIPHER* type,
WOLFSSL_ENGINE *impl,
const unsigned char* key,
const unsigned char* iv);
WOLFSSL_API WOLFSSL_EVP_PKEY_CTX *wolfSSL_EVP_PKEY_CTX_new(WOLFSSL_EVP_PKEY *pkey, WOLFSSL_ENGINE *e);
WOLFSSL_API WOLFSSL_EVP_PKEY_CTX *wolfSSL_EVP_PKEY_CTX_new_id(int id, WOLFSSL_ENGINE *e);
WOLFSSL_API int wolfSSL_EVP_SignInit_ex(WOLFSSL_EVP_MD_CTX* ctx,
const WOLFSSL_EVP_MD* type,
WOLFSSL_ENGINE *impl);
#define EVP_CIPH_STREAM_CIPHER WOLFSSL_EVP_CIPH_STREAM_CIPHER
#define EVP_CIPH_VARIABLE_LENGTH WOLFSSL_EVP_CIPH_VARIABLE_LENGTH
#define EVP_CIPH_ECB_MODE WOLFSSL_EVP_CIPH_ECB_MODE
#define EVP_CIPH_CBC_MODE WOLFSSL_EVP_CIPH_CBC_MODE
#define EVP_CIPH_CFB_MODE WOLFSSL_EVP_CIPH_CFB_MODE
#define EVP_CIPH_OFB_MODE WOLFSSL_EVP_CIPH_OFB_MODE
#define EVP_CIPH_CTR_MODE WOLFSSL_EVP_CIPH_CTR_MODE
#define EVP_CIPH_GCM_MODE WOLFSSL_EVP_CIPH_GCM_MODE
#define EVP_CIPH_CCM_MODE WOLFSSL_EVP_CIPH_CCM_MODE
#define EVP_CIPH_XTS_MODE WOLFSSL_EVP_CIPH_XTS_MODE
#define EVP_CIPH_FLAG_AEAD_CIPHER WOLFSSL_EVP_CIPH_FLAG_AEAD_CIPHER
#ifndef NO_MD4 #ifndef NO_MD4
#define EVP_md4 wolfSSL_EVP_md4 #define EVP_md4 wolfSSL_EVP_md4
@ -935,6 +945,7 @@ WOLFSSL_API void wolfSSL_EVP_MD_do_all(void (*fn) (const WOLFSSL_EVP_MD *md,
#define EVP_PKEY_sign_init wolfSSL_EVP_PKEY_sign_init #define EVP_PKEY_sign_init wolfSSL_EVP_PKEY_sign_init
#define EVP_PKEY_sign wolfSSL_EVP_PKEY_sign #define EVP_PKEY_sign wolfSSL_EVP_PKEY_sign
#define EVP_PKEY_paramgen_init wolfSSL_EVP_PKEY_paramgen_init #define EVP_PKEY_paramgen_init wolfSSL_EVP_PKEY_paramgen_init
#define EVP_PKEY_CTX_set_ec_param_enc wolfSSL_EVP_PKEY_CTX_set_ec_param_enc
#define EVP_PKEY_CTX_set_ec_paramgen_curve_nid wolfSSL_EVP_PKEY_CTX_set_ec_paramgen_curve_nid #define EVP_PKEY_CTX_set_ec_paramgen_curve_nid wolfSSL_EVP_PKEY_CTX_set_ec_paramgen_curve_nid
#define EVP_PKEY_paramgen wolfSSL_EVP_PKEY_paramgen #define EVP_PKEY_paramgen wolfSSL_EVP_PKEY_paramgen
#define EVP_PKEY_keygen wolfSSL_EVP_PKEY_keygen #define EVP_PKEY_keygen wolfSSL_EVP_PKEY_keygen
@ -1088,6 +1099,8 @@ WOLFSSL_API void wolfSSL_EVP_MD_do_all(void (*fn) (const WOLFSSL_EVP_MD *md,
WOLFSSL_API void printPKEY(WOLFSSL_EVP_PKEY *k); WOLFSSL_API void printPKEY(WOLFSSL_EVP_PKEY *k);
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#ifdef __cplusplus #ifdef __cplusplus
} /* extern "C" */ } /* extern "C" */
#endif #endif

View File

@ -33,6 +33,8 @@
extern "C" { extern "C" {
#endif #endif
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
#define OBJ_NAME_TYPE_UNDEF WOLFSSL_OBJ_NAME_TYPE_UNDEF #define OBJ_NAME_TYPE_UNDEF WOLFSSL_OBJ_NAME_TYPE_UNDEF
#define OBJ_NAME_TYPE_MD_METH WOLFSSL_OBJ_NAME_TYPE_MD_METH #define OBJ_NAME_TYPE_MD_METH WOLFSSL_OBJ_NAME_TYPE_MD_METH
#define OBJ_NAME_TYPE_CIPHER_METH WOLFSSL_OBJ_NAME_TYPE_CIPHER_METH #define OBJ_NAME_TYPE_CIPHER_METH WOLFSSL_OBJ_NAME_TYPE_CIPHER_METH
@ -64,6 +66,8 @@
#define NID_ad_OCSP 178 #define NID_ad_OCSP 178
#define NID_ad_ca_issuers 179 #define NID_ad_ca_issuers 179
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#ifdef __cplusplus #ifdef __cplusplus
} /* extern "C" */ } /* extern "C" */

View File

@ -24,6 +24,7 @@
#ifndef WOLFSSL_OPENSSLV_H_ #ifndef WOLFSSL_OPENSSLV_H_
#define WOLFSSL_OPENSSLV_H_ #define WOLFSSL_OPENSSLV_H_
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
/* api version compatibility */ /* api version compatibility */
#if defined(OPENSSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER == 0x0090810fL) ||\ #if defined(OPENSSL_VERSION_NUMBER) && (OPENSSL_VERSION_NUMBER == 0x0090810fL) ||\
@ -52,4 +53,6 @@
#define OPENSSL_VERSION_TEXT "wolfSSL " LIBWOLFSSL_VERSION_STRING #define OPENSSL_VERSION_TEXT "wolfSSL " LIBWOLFSSL_VERSION_STRING
#define OPENSSL_VERSION 0 #define OPENSSL_VERSION 0
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#endif /* header */ #endif /* header */

View File

@ -42,7 +42,7 @@
/* RSA */ /* RSA */
WOLFSSL_API WOLFSSL_API
int wolfSSL_PEM_write_bio_RSAPrivateKey(WOLFSSL_BIO* bio, WOLFSSL_RSA* rsa, int wolfSSL_PEM_write_bio_RSAPrivateKey(WOLFSSL_BIO* bio, WOLFSSL_RSA* rsa,
const EVP_CIPHER* cipher, const WOLFSSL_EVP_CIPHER* cipher,
unsigned char* passwd, int len, unsigned char* passwd, int len,
wc_pem_password_cb* cb, void* arg); wc_pem_password_cb* cb, void* arg);
WOLFSSL_API WOLFSSL_API
@ -63,13 +63,14 @@ WOLFSSL_EC_GROUP* wolfSSL_PEM_read_bio_ECPKParameters(WOLFSSL_BIO* bio,
wc_pem_password_cb* cb, wc_pem_password_cb* cb,
void* pass); void* pass);
WOLFSSL_API WOLFSSL_API
int wolfSSL_PEM_write_mem_RSAPrivateKey(RSA* rsa, const EVP_CIPHER* cipher, int wolfSSL_PEM_write_mem_RSAPrivateKey(WOLFSSL_RSA* rsa,
const WOLFSSL_EVP_CIPHER* cipher,
unsigned char* passwd, int len, unsigned char* passwd, int len,
unsigned char **pem, int *plen); unsigned char **pem, int *plen);
#if !defined(NO_FILESYSTEM) #if !defined(NO_FILESYSTEM)
WOLFSSL_API WOLFSSL_API
int wolfSSL_PEM_write_RSAPrivateKey(XFILE fp, WOLFSSL_RSA *rsa, int wolfSSL_PEM_write_RSAPrivateKey(XFILE fp, WOLFSSL_RSA *rsa,
const EVP_CIPHER *enc, const WOLFSSL_EVP_CIPHER *enc,
unsigned char *kstr, int klen, unsigned char *kstr, int klen,
wc_pem_password_cb *cb, void *u); wc_pem_password_cb *cb, void *u);
WOLFSSL_API WOLFSSL_API
@ -86,7 +87,7 @@ int wolfSSL_PEM_write_RSA_PUBKEY(XFILE fp, WOLFSSL_RSA *x);
WOLFSSL_API WOLFSSL_API
int wolfSSL_PEM_write_bio_DSAPrivateKey(WOLFSSL_BIO* bio, int wolfSSL_PEM_write_bio_DSAPrivateKey(WOLFSSL_BIO* bio,
WOLFSSL_DSA* dsa, WOLFSSL_DSA* dsa,
const EVP_CIPHER* cipher, const WOLFSSL_EVP_CIPHER* cipher,
unsigned char* passwd, int len, unsigned char* passwd, int len,
wc_pem_password_cb* cb, void* arg); wc_pem_password_cb* cb, void* arg);
@ -107,13 +108,13 @@ int wolfSSL_PEM_write_bio_DSA_PUBKEY(WOLFSSL_BIO* bio, WOLFSSL_DSA* dsa);
WOLFSSL_API WOLFSSL_API
int wolfSSL_PEM_write_mem_DSAPrivateKey(WOLFSSL_DSA* dsa, int wolfSSL_PEM_write_mem_DSAPrivateKey(WOLFSSL_DSA* dsa,
const EVP_CIPHER* cipher, const WOLFSSL_EVP_CIPHER* cipher,
unsigned char* passwd, int len, unsigned char* passwd, int len,
unsigned char **pem, int *plen); unsigned char **pem, int *plen);
#if !defined(NO_FILESYSTEM) #if !defined(NO_FILESYSTEM)
WOLFSSL_API WOLFSSL_API
int wolfSSL_PEM_write_DSAPrivateKey(XFILE fp, WOLFSSL_DSA *dsa, int wolfSSL_PEM_write_DSAPrivateKey(XFILE fp, WOLFSSL_DSA *dsa,
const EVP_CIPHER *enc, const WOLFSSL_EVP_CIPHER *enc,
unsigned char *kstr, int klen, unsigned char *kstr, int klen,
wc_pem_password_cb *cb, void *u); wc_pem_password_cb *cb, void *u);
WOLFSSL_API WOLFSSL_API
@ -123,7 +124,7 @@ int wolfSSL_PEM_write_DSA_PUBKEY(XFILE fp, WOLFSSL_DSA *x);
/* ECC */ /* ECC */
WOLFSSL_API WOLFSSL_API
int wolfSSL_PEM_write_bio_ECPrivateKey(WOLFSSL_BIO* bio, WOLFSSL_EC_KEY* ec, int wolfSSL_PEM_write_bio_ECPrivateKey(WOLFSSL_BIO* bio, WOLFSSL_EC_KEY* ec,
const EVP_CIPHER* cipher, const WOLFSSL_EVP_CIPHER* cipher,
unsigned char* passwd, int len, unsigned char* passwd, int len,
wc_pem_password_cb* cb, void* arg); wc_pem_password_cb* cb, void* arg);
WOLFSSL_API WOLFSSL_API
@ -136,13 +137,13 @@ int wolfSSL_PEM_write_bio_EC_PUBKEY(WOLFSSL_BIO* bio, WOLFSSL_EC_KEY* ec);
WOLFSSL_API WOLFSSL_API
int wolfSSL_PEM_write_mem_ECPrivateKey(WOLFSSL_EC_KEY* key, int wolfSSL_PEM_write_mem_ECPrivateKey(WOLFSSL_EC_KEY* key,
const EVP_CIPHER* cipher, const WOLFSSL_EVP_CIPHER* cipher,
unsigned char* passwd, int len, unsigned char* passwd, int len,
unsigned char **pem, int *plen); unsigned char **pem, int *plen);
#if !defined(NO_FILESYSTEM) #if !defined(NO_FILESYSTEM)
WOLFSSL_API WOLFSSL_API
int wolfSSL_PEM_write_ECPrivateKey(XFILE fp, WOLFSSL_EC_KEY *key, int wolfSSL_PEM_write_ECPrivateKey(XFILE fp, WOLFSSL_EC_KEY *key,
const EVP_CIPHER *enc, const WOLFSSL_EVP_CIPHER *enc,
unsigned char *kstr, int klen, unsigned char *kstr, int klen,
wc_pem_password_cb *cb, void *u); wc_pem_password_cb *cb, void *u);
WOLFSSL_API WOLFSSL_API
@ -193,7 +194,7 @@ int wolfSSL_PEM_write(XFILE fp, const char *name, const char *header,
#if !defined(NO_FILESYSTEM) #if !defined(NO_FILESYSTEM)
WOLFSSL_API WOLFSSL_API
WOLFSSL_EVP_PKEY *wolfSSL_PEM_read_PUBKEY(XFILE fp, EVP_PKEY **x, WOLFSSL_EVP_PKEY *wolfSSL_PEM_read_PUBKEY(XFILE fp, WOLFSSL_EVP_PKEY **x,
wc_pem_password_cb *cb, void *u); wc_pem_password_cb *cb, void *u);
WOLFSSL_API WOLFSSL_API
WOLFSSL_X509 *wolfSSL_PEM_read_X509(XFILE fp, WOLFSSL_X509 **x, WOLFSSL_X509 *wolfSSL_PEM_read_X509(XFILE fp, WOLFSSL_X509 **x,

View File

@ -33,6 +33,7 @@
extern "C" { extern "C" {
#endif #endif
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
/* Padding types */ /* Padding types */
#define RSA_PKCS1_PADDING 0 #define RSA_PKCS1_PADDING 0
#define RSA_PKCS1_OAEP_PADDING 1 #define RSA_PKCS1_OAEP_PADDING 1
@ -55,6 +56,7 @@
#define RSA_PSS_SALTLEN_MAX_SIGN (-2) #define RSA_PSS_SALTLEN_MAX_SIGN (-2)
/* Max salt length */ /* Max salt length */
#define RSA_PSS_SALTLEN_MAX (-3) #define RSA_PSS_SALTLEN_MAX (-3)
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
typedef struct WOLFSSL_RSA_METHOD { typedef struct WOLFSSL_RSA_METHOD {
int flags; int flags;
@ -98,8 +100,10 @@ typedef struct WOLFSSL_RSA {
} WOLFSSL_RSA; } WOLFSSL_RSA;
#endif #endif
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
typedef WOLFSSL_RSA RSA; typedef WOLFSSL_RSA RSA;
typedef WOLFSSL_RSA_METHOD RSA_METHOD; typedef WOLFSSL_RSA_METHOD RSA_METHOD;
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
WOLFSSL_API WOLFSSL_RSA* wolfSSL_RSA_new_ex(void* heap, int devId); WOLFSSL_API WOLFSSL_RSA* wolfSSL_RSA_new_ex(void* heap, int devId);
WOLFSSL_API WOLFSSL_RSA* wolfSSL_RSA_new(void); WOLFSSL_API WOLFSSL_RSA* wolfSSL_RSA_new(void);
@ -184,6 +188,7 @@ WOLFSSL_API int wolfSSL_RSA_set_ex_data_with_cleanup(
wolfSSL_ex_data_cleanup_routine_t cleanup_routine); wolfSSL_ex_data_cleanup_routine_t cleanup_routine);
#endif #endif
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
#define WOLFSSL_RSA_LOAD_PRIVATE 1 #define WOLFSSL_RSA_LOAD_PRIVATE 1
#define WOLFSSL_RSA_LOAD_PUBLIC 2 #define WOLFSSL_RSA_LOAD_PUBLIC 2
#define WOLFSSL_RSA_F4 0x10001L #define WOLFSSL_RSA_F4 0x10001L
@ -235,6 +240,8 @@ WOLFSSL_API int wolfSSL_RSA_set_ex_data_with_cleanup(
#define RSA_F4 WOLFSSL_RSA_F4 #define RSA_F4 WOLFSSL_RSA_F4
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#ifdef __cplusplus #ifdef __cplusplus
} /* extern "C" */ } /* extern "C" */
#endif #endif

View File

@ -36,7 +36,7 @@
extern "C" { extern "C" {
#endif #endif
#ifndef NO_SHA
typedef struct WOLFSSL_SHA_CTX { typedef struct WOLFSSL_SHA_CTX {
/* big enough to hold wolfcrypt Sha, but check on init */ /* big enough to hold wolfcrypt Sha, but check on init */
#if defined(STM32_HASH) #if defined(STM32_HASH)
@ -62,11 +62,11 @@ WOLFSSL_API int wolfSSL_SHA1_Update(WOLFSSL_SHA_CTX* sha, const void* input,
WOLFSSL_API int wolfSSL_SHA1_Final(byte* output, WOLFSSL_SHA_CTX* sha); WOLFSSL_API int wolfSSL_SHA1_Final(byte* output, WOLFSSL_SHA_CTX* sha);
WOLFSSL_API int wolfSSL_SHA1_Transform(WOLFSSL_SHA_CTX* sha, WOLFSSL_API int wolfSSL_SHA1_Transform(WOLFSSL_SHA_CTX* sha,
const unsigned char *data); const unsigned char *data);
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
enum { enum {
SHA_DIGEST_LENGTH = 20 SHA_DIGEST_LENGTH = 20
}; };
typedef WOLFSSL_SHA_CTX SHA_CTX; typedef WOLFSSL_SHA_CTX SHA_CTX;
#define SHA_Init wolfSSL_SHA_Init #define SHA_Init wolfSSL_SHA_Init
@ -87,6 +87,9 @@ typedef WOLFSSL_SHA_CTX SHA_CTX;
#define SHA1_Final wolfSSL_SHA1_Final #define SHA1_Final wolfSSL_SHA1_Final
#define SHA1_Transform wolfSSL_SHA1_Transform #define SHA1_Transform wolfSSL_SHA1_Transform
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#endif /* !NO_SHA */
#ifdef WOLFSSL_SHA224 #ifdef WOLFSSL_SHA224
/* Using ALIGN16 because when AES-NI is enabled digest and buffer in Sha256 /* Using ALIGN16 because when AES-NI is enabled digest and buffer in Sha256
@ -101,12 +104,11 @@ WOLFSSL_API int wolfSSL_SHA224_Init(WOLFSSL_SHA224_CTX* sha);
WOLFSSL_API int wolfSSL_SHA224_Update(WOLFSSL_SHA224_CTX* sha, const void* input, WOLFSSL_API int wolfSSL_SHA224_Update(WOLFSSL_SHA224_CTX* sha, const void* input,
unsigned long sz); unsigned long sz);
WOLFSSL_API int wolfSSL_SHA224_Final(byte* output, WOLFSSL_SHA224_CTX* sha); WOLFSSL_API int wolfSSL_SHA224_Final(byte* output, WOLFSSL_SHA224_CTX* sha);
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
enum { enum {
SHA224_DIGEST_LENGTH = 28 SHA224_DIGEST_LENGTH = 28
}; };
typedef WOLFSSL_SHA224_CTX SHA224_CTX; typedef WOLFSSL_SHA224_CTX SHA224_CTX;
#define SHA224_Init wolfSSL_SHA224_Init #define SHA224_Init wolfSSL_SHA224_Init
@ -119,10 +121,10 @@ typedef WOLFSSL_SHA224_CTX SHA224_CTX;
* because of SHA224 enum in FIPS build. */ * because of SHA224 enum in FIPS build. */
#define SHA224 wolfSSL_SHA224 #define SHA224 wolfSSL_SHA224
#endif #endif
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#endif /* WOLFSSL_SHA224 */ #endif /* WOLFSSL_SHA224 */
#ifndef NO_SHA256
/* Using ALIGN16 because when AES-NI is enabled digest and buffer in Sha256 /* Using ALIGN16 because when AES-NI is enabled digest and buffer in Sha256
* struct are 16 byte aligned. Any dereference to those elements after casting * struct are 16 byte aligned. Any dereference to those elements after casting
* to Sha256, is expected to also be 16 byte aligned addresses. */ * to Sha256, is expected to also be 16 byte aligned addresses. */
@ -137,11 +139,11 @@ WOLFSSL_API int wolfSSL_SHA256_Update(WOLFSSL_SHA256_CTX* sha, const void* input
WOLFSSL_API int wolfSSL_SHA256_Final(byte* output, WOLFSSL_SHA256_CTX* sha); WOLFSSL_API int wolfSSL_SHA256_Final(byte* output, WOLFSSL_SHA256_CTX* sha);
WOLFSSL_API int wolfSSL_SHA256_Transform(WOLFSSL_SHA256_CTX* sha256, WOLFSSL_API int wolfSSL_SHA256_Transform(WOLFSSL_SHA256_CTX* sha256,
const unsigned char *data); const unsigned char *data);
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
enum { enum {
SHA256_DIGEST_LENGTH = 32 SHA256_DIGEST_LENGTH = 32
}; };
typedef WOLFSSL_SHA256_CTX SHA256_CTX; typedef WOLFSSL_SHA256_CTX SHA256_CTX;
#define SHA256_Init wolfSSL_SHA256_Init #define SHA256_Init wolfSSL_SHA256_Init
@ -165,10 +167,10 @@ typedef WOLFSSL_SHA256_CTX SHA256_CTX;
#define SHA256 wolfSSL_SHA256 #define SHA256 wolfSSL_SHA256
#endif #endif
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#endif /* !NO_SHA256 */
#ifdef WOLFSSL_SHA384 #ifdef WOLFSSL_SHA384
typedef struct WOLFSSL_SHA384_CTX { typedef struct WOLFSSL_SHA384_CTX {
/* big enough to hold wolfCrypt Sha384, but check on init */ /* big enough to hold wolfCrypt Sha384, but check on init */
void* holder[(268 + WC_ASYNC_DEV_SIZE) / sizeof(void*)]; void* holder[(268 + WC_ASYNC_DEV_SIZE) / sizeof(void*)];
@ -178,12 +180,11 @@ WOLFSSL_API int wolfSSL_SHA384_Init(WOLFSSL_SHA384_CTX* sha);
WOLFSSL_API int wolfSSL_SHA384_Update(WOLFSSL_SHA384_CTX* sha, const void* input, WOLFSSL_API int wolfSSL_SHA384_Update(WOLFSSL_SHA384_CTX* sha, const void* input,
unsigned long sz); unsigned long sz);
WOLFSSL_API int wolfSSL_SHA384_Final(byte* output, WOLFSSL_SHA384_CTX* sha); WOLFSSL_API int wolfSSL_SHA384_Final(byte* output, WOLFSSL_SHA384_CTX* sha);
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
enum { enum {
SHA384_DIGEST_LENGTH = 48 SHA384_DIGEST_LENGTH = 48
}; };
typedef WOLFSSL_SHA384_CTX SHA384_CTX; typedef WOLFSSL_SHA384_CTX SHA384_CTX;
#define SHA384_Init wolfSSL_SHA384_Init #define SHA384_Init wolfSSL_SHA384_Init
@ -194,10 +195,11 @@ typedef WOLFSSL_SHA384_CTX SHA384_CTX;
* build. */ * build. */
#define SHA384 wolfSSL_SHA384 #define SHA384 wolfSSL_SHA384
#endif #endif
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#endif /* WOLFSSL_SHA384 */ #endif /* WOLFSSL_SHA384 */
#ifdef WOLFSSL_SHA512 #ifdef WOLFSSL_SHA512
typedef struct WOLFSSL_SHA512_CTX { typedef struct WOLFSSL_SHA512_CTX {
/* big enough to hold wolfCrypt Sha384, but check on init */ /* big enough to hold wolfCrypt Sha384, but check on init */
void* holder[(288 + WC_ASYNC_DEV_SIZE) / sizeof(void*)]; void* holder[(288 + WC_ASYNC_DEV_SIZE) / sizeof(void*)];
@ -209,11 +211,11 @@ WOLFSSL_API int wolfSSL_SHA512_Update(WOLFSSL_SHA512_CTX* sha,
WOLFSSL_API int wolfSSL_SHA512_Final(byte* output, WOLFSSL_SHA512_CTX* sha); WOLFSSL_API int wolfSSL_SHA512_Final(byte* output, WOLFSSL_SHA512_CTX* sha);
WOLFSSL_API int wolfSSL_SHA512_Transform(WOLFSSL_SHA512_CTX* sha512, WOLFSSL_API int wolfSSL_SHA512_Transform(WOLFSSL_SHA512_CTX* sha512,
const unsigned char* data); const unsigned char* data);
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
enum { enum {
SHA512_DIGEST_LENGTH = 64 SHA512_DIGEST_LENGTH = 64
}; };
typedef WOLFSSL_SHA512_CTX SHA512_CTX; typedef WOLFSSL_SHA512_CTX SHA512_CTX;
#define SHA512_Init wolfSSL_SHA512_Init #define SHA512_Init wolfSSL_SHA512_Init
@ -225,6 +227,7 @@ typedef WOLFSSL_SHA512_CTX SHA512_CTX;
* build. */ * build. */
#define SHA512 wolfSSL_SHA512 #define SHA512 wolfSSL_SHA512
#endif #endif
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#if !defined(WOLFSSL_NOSHA512_224) #if !defined(WOLFSSL_NOSHA512_224)
typedef struct WOLFSSL_SHA512_CTX WOLFSSL_SHA512_224_CTX; typedef struct WOLFSSL_SHA512_CTX WOLFSSL_SHA512_224_CTX;
@ -238,7 +241,7 @@ WOLFSSL_API int wolfSSL_SHA512_224_Final(byte* output,
WOLFSSL_API int wolfSSL_SHA512_224_Transform(WOLFSSL_SHA512_CTX* sha512, WOLFSSL_API int wolfSSL_SHA512_224_Transform(WOLFSSL_SHA512_CTX* sha512,
const unsigned char* data); const unsigned char* data);
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
#define SHA512_224_Init wolfSSL_SHA512_224_Init #define SHA512_224_Init wolfSSL_SHA512_224_Init
#define SHA512_224_Update wolfSSL_SHA512_224_Update #define SHA512_224_Update wolfSSL_SHA512_224_Update
#define SHA512_224_Final wolfSSL_SHA512_224_Final #define SHA512_224_Final wolfSSL_SHA512_224_Final
@ -247,6 +250,7 @@ WOLFSSL_API int wolfSSL_SHA512_224_Transform(WOLFSSL_SHA512_CTX* sha512,
#if defined(NO_OLD_SHA_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) #if defined(NO_OLD_SHA_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST)
#define SHA512_224 wolfSSL_SHA512_224 #define SHA512_224 wolfSSL_SHA512_224
#endif #endif
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#endif /* !WOLFSSL_NOSHA512_224 */ #endif /* !WOLFSSL_NOSHA512_224 */
#if !defined(WOLFSSL_NOSHA512_256) #if !defined(WOLFSSL_NOSHA512_256)
@ -260,6 +264,7 @@ WOLFSSL_API int wolfSSL_SHA512_256_Final(byte* output, WOLFSSL_SHA512_256_CTX* s
WOLFSSL_API int wolfSSL_SHA512_256_Transform(WOLFSSL_SHA512_CTX* sha512, WOLFSSL_API int wolfSSL_SHA512_256_Transform(WOLFSSL_SHA512_CTX* sha512,
const unsigned char* data); const unsigned char* data);
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
#define SHA512_256_Init wolfSSL_SHA512_256_Init #define SHA512_256_Init wolfSSL_SHA512_256_Init
#define SHA512_256_Update wolfSSL_SHA512_256_Update #define SHA512_256_Update wolfSSL_SHA512_256_Update
#define SHA512_256_Final wolfSSL_SHA512_256_Final #define SHA512_256_Final wolfSSL_SHA512_256_Final
@ -268,6 +273,7 @@ WOLFSSL_API int wolfSSL_SHA512_256_Transform(WOLFSSL_SHA512_CTX* sha512,
#if defined(NO_OLD_SHA_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST) #if defined(NO_OLD_SHA_NAMES) && !defined(HAVE_FIPS) && !defined(HAVE_SELFTEST)
#define SHA512_256 wolfSSL_SHA512_256 #define SHA512_256 wolfSSL_SHA512_256
#endif #endif
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#endif /* !WOLFSSL_NOSHA512_256 */ #endif /* !WOLFSSL_NOSHA512_256 */

View File

@ -71,9 +71,7 @@
#undef ASN1_INTEGER #undef ASN1_INTEGER
#endif #endif
#ifdef OPENSSL_EXTRA #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
WOLFSSL_API int wolfSSL_OPENSSL_init_ssl(word64 opts, const OPENSSL_INIT_SETTINGS *settings);
#endif
typedef WOLFSSL SSL; typedef WOLFSSL SSL;
typedef WOLFSSL_SESSION SSL_SESSION; typedef WOLFSSL_SESSION SSL_SESSION;
@ -1491,7 +1489,6 @@ typedef WOLFSSL_SRTP_PROTECTION_PROFILE SRTP_PROTECTION_PROFILE;
#ifdef HAVE_SESSION_TICKET #ifdef HAVE_SESSION_TICKET
#define SSL_OP_NO_TICKET SSL_OP_NO_TICKET
#define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72 #define SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB 72
#endif #endif
@ -1626,8 +1623,10 @@ typedef WOLFSSL_CONF_CTX SSL_CONF_CTX;
#define SSL_CONF_cmd wolfSSL_CONF_cmd #define SSL_CONF_cmd wolfSSL_CONF_cmd
#define SSL_CONF_cmd_value_type wolfSSL_CONF_cmd_value_type #define SSL_CONF_cmd_value_type wolfSSL_CONF_cmd_value_type
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#ifdef __cplusplus #ifdef __cplusplus
} /* extern "C" */ } /* extern "C" */
#endif #endif
#endif /* wolfSSL_openssl_h__ */ #endif /* !WOLFSSL_OPENSSL_H_ */

View File

@ -31,6 +31,8 @@
#include <wolfssl/openssl/ecdsa.h> #include <wolfssl/openssl/ecdsa.h>
#include <wolfssl/openssl/pkcs7.h> #include <wolfssl/openssl/pkcs7.h>
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)
/* wolfSSL_X509_print_ex flags */ /* wolfSSL_X509_print_ex flags */
#define X509_FLAG_COMPAT (0UL) #define X509_FLAG_COMPAT (0UL)
#define X509_FLAG_NO_HEADER (1UL << 0) #define X509_FLAG_NO_HEADER (1UL << 0)
@ -71,4 +73,6 @@
#define X509_EXTENSION_set_object wolfSSL_X509_EXTENSION_set_object #define X509_EXTENSION_set_object wolfSSL_X509_EXTENSION_set_object
#define X509_EXTENSION_set_data wolfSSL_X509_EXTENSION_set_data #define X509_EXTENSION_set_data wolfSSL_X509_EXTENSION_set_data
#endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */
#endif /* WOLFSSL_OPENSSL_509_H_ */ #endif /* WOLFSSL_OPENSSL_509_H_ */

View File

@ -80,6 +80,7 @@
#include <openssl/ec.h> #include <openssl/ec.h>
#include <openssl/hmac.h> #include <openssl/hmac.h>
#include <openssl/bn.h> #include <openssl/bn.h>
#include <openssl/crypto.h>
#endif #endif
#elif (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) #elif (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL))
@ -1145,25 +1146,6 @@ WOLFSSL_API WOLFSSL_X509* wolfSSL_SESSION_get0_peer(WOLFSSL_SESSION* session);
typedef int (*VerifyCallback)(int, WOLFSSL_X509_STORE_CTX*); typedef int (*VerifyCallback)(int, WOLFSSL_X509_STORE_CTX*);
typedef void (CallbackInfoState)(const WOLFSSL* ssl, int, int); typedef void (CallbackInfoState)(const WOLFSSL* ssl, int, int);
/* class index for wolfSSL_CRYPTO_get_ex_new_index */
#define CRYPTO_EX_INDEX_SSL 0
#define CRYPTO_EX_INDEX_SSL_CTX 1
#define CRYPTO_EX_INDEX_SSL_SESSION 2
#define CRYPTO_EX_INDEX_X509 3
#define CRYPTO_EX_INDEX_X509_STORE 4
#define CRYPTO_EX_INDEX_X509_STORE_CTX 5
#define CRYPTO_EX_INDEX_DH 6
#define CRYPTO_EX_INDEX_DSA 7
#define CRYPTO_EX_INDEX_EC_KEY 8
#define CRYPTO_EX_INDEX_RSA 9
#define CRYPTO_EX_INDEX_ENGINE 10
#define CRYPTO_EX_INDEX_UI 11
#define CRYPTO_EX_INDEX_BIO 12
#define CRYPTO_EX_INDEX_APP 13
#define CRYPTO_EX_INDEX_UI_METHOD 14
#define CRYPTO_EX_INDEX_DRBG 15
#define CRYPTO_EX_INDEX__COUNT 16
#ifdef HAVE_EX_DATA #ifdef HAVE_EX_DATA
typedef int (WOLFSSL_CRYPTO_EX_new)(void* p, void* ptr, typedef int (WOLFSSL_CRYPTO_EX_new)(void* p, void* ptr,
WOLFSSL_CRYPTO_EX_DATA* a, int idx, long argValue, void* arg); WOLFSSL_CRYPTO_EX_DATA* a, int idx, long argValue, void* arg);
@ -1856,7 +1838,7 @@ WOLFSSL_API int wolfSSL_i2d_PublicKey(const WOLFSSL_EVP_PKEY* key,
WOLFSSL_API int wolfSSL_EVP_PKEY_print_public(WOLFSSL_BIO* out, WOLFSSL_API int wolfSSL_EVP_PKEY_print_public(WOLFSSL_BIO* out,
const WOLFSSL_EVP_PKEY* pkey, const WOLFSSL_EVP_PKEY* pkey,
int indent, WOLFSSL_ASN1_PCTX* pctx); int indent, WOLFSSL_ASN1_PCTX* pctx);
#endif /* OPENSSL_EXTRA */ #endif /* OPENSSL_EXTRA && !WOLFCRYPT_ONLY */
WOLFSSL_API int wolfSSL_X509_cmp_current_time(const WOLFSSL_ASN1_TIME* asnTime); WOLFSSL_API int wolfSSL_X509_cmp_current_time(const WOLFSSL_ASN1_TIME* asnTime);
#ifdef OPENSSL_EXTRA #ifdef OPENSSL_EXTRA
WOLFSSL_API int wolfSSL_X509_cmp_time(const WOLFSSL_ASN1_TIME* asnTime, WOLFSSL_API int wolfSSL_X509_cmp_time(const WOLFSSL_ASN1_TIME* asnTime,
@ -2090,29 +2072,29 @@ enum {
/* Separated out from other enums because of size */ /* Separated out from other enums because of size */
enum { enum {
SSL_OP_MICROSOFT_SESS_ID_BUG = 0x00000001, WOLFSSL_OP_MICROSOFT_SESS_ID_BUG = 0x00000001,
SSL_OP_NETSCAPE_CHALLENGE_BUG = 0x00000002, WOLFSSL_OP_NETSCAPE_CHALLENGE_BUG = 0x00000002,
SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG = 0x00000004, WOLFSSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG = 0x00000004,
SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG = 0x00000008, WOLFSSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG = 0x00000008,
SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER = 0x00000010, WOLFSSL_OP_MICROSOFT_BIG_SSLV3_BUFFER = 0x00000010,
SSL_OP_MSIE_SSLV2_RSA_PADDING = 0x00000020, WOLFSSL_OP_MSIE_SSLV2_RSA_PADDING = 0x00000020,
SSL_OP_SSLEAY_080_CLIENT_DH_BUG = 0x00000040, WOLFSSL_OP_SSLEAY_080_CLIENT_DH_BUG = 0x00000040,
SSL_OP_TLS_D5_BUG = 0x00000080, WOLFSSL_OP_TLS_D5_BUG = 0x00000080,
SSL_OP_TLS_BLOCK_PADDING_BUG = 0x00000100, WOLFSSL_OP_TLS_BLOCK_PADDING_BUG = 0x00000100,
SSL_OP_TLS_ROLLBACK_BUG = 0x00000200, WOLFSSL_OP_TLS_ROLLBACK_BUG = 0x00000200,
SSL_OP_EPHEMERAL_RSA = 0x00000800, WOLFSSL_OP_EPHEMERAL_RSA = 0x00000800,
WOLFSSL_OP_NO_SSLv3 = 0x00001000, WOLFSSL_OP_NO_SSLv3 = 0x00001000,
WOLFSSL_OP_NO_TLSv1 = 0x00002000, WOLFSSL_OP_NO_TLSv1 = 0x00002000,
SSL_OP_PKCS1_CHECK_1 = 0x00004000, WOLFSSL_OP_PKCS1_CHECK_1 = 0x00004000,
SSL_OP_PKCS1_CHECK_2 = 0x00008000, WOLFSSL_OP_PKCS1_CHECK_2 = 0x00008000,
SSL_OP_NETSCAPE_CA_DN_BUG = 0x00010000, WOLFSSL_OP_NETSCAPE_CA_DN_BUG = 0x00010000,
SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG = 0x00020000, WOLFSSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG = 0x00020000,
WOLFSSL_OP_SINGLE_DH_USE = 0x00040000, WOLFSSL_OP_SINGLE_DH_USE = 0x00040000,
SSL_OP_NO_TICKET = 0x00080000, WOLFSSL_OP_NO_TICKET = 0x00080000,
SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS = 0x00100000, WOLFSSL_OP_DONT_INSERT_EMPTY_FRAGMENTS = 0x00100000,
SSL_OP_NO_QUERY_MTU = 0x00200000, WOLFSSL_OP_NO_QUERY_MTU = 0x00200000,
SSL_OP_COOKIE_EXCHANGE = 0x00400000, WOLFSSL_OP_COOKIE_EXCHANGE = 0x00400000,
SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION = 0x00800000, WOLFSSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION = 0x00800000,
WOLFSSL_OP_SINGLE_ECDH_USE = 0x01000000, WOLFSSL_OP_SINGLE_ECDH_USE = 0x01000000,
WOLFSSL_OP_CIPHER_SERVER_PREFERENCE = 0x02000000, WOLFSSL_OP_CIPHER_SERVER_PREFERENCE = 0x02000000,
WOLFSSL_OP_NO_TLSv1_1 = 0x04000000, WOLFSSL_OP_NO_TLSv1_1 = 0x04000000,
@ -2120,36 +2102,66 @@ enum {
WOLFSSL_OP_NO_COMPRESSION = 0x10000000, WOLFSSL_OP_NO_COMPRESSION = 0x10000000,
WOLFSSL_OP_NO_TLSv1_3 = 0x20000000, WOLFSSL_OP_NO_TLSv1_3 = 0x20000000,
WOLFSSL_OP_NO_SSLv2 = 0x40000000, WOLFSSL_OP_NO_SSLv2 = 0x40000000,
SSL_OP_ALL = WOLFSSL_OP_ALL =
(SSL_OP_MICROSOFT_SESS_ID_BUG (WOLFSSL_OP_MICROSOFT_SESS_ID_BUG
| SSL_OP_NETSCAPE_CHALLENGE_BUG | WOLFSSL_OP_NETSCAPE_CHALLENGE_BUG
| SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG | WOLFSSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG
| SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG | WOLFSSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG
| SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER | WOLFSSL_OP_MICROSOFT_BIG_SSLV3_BUFFER
| SSL_OP_MSIE_SSLV2_RSA_PADDING | WOLFSSL_OP_MSIE_SSLV2_RSA_PADDING
| SSL_OP_SSLEAY_080_CLIENT_DH_BUG | WOLFSSL_OP_SSLEAY_080_CLIENT_DH_BUG
| SSL_OP_TLS_D5_BUG | WOLFSSL_OP_TLS_D5_BUG
| SSL_OP_TLS_BLOCK_PADDING_BUG | WOLFSSL_OP_TLS_BLOCK_PADDING_BUG
| SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS | WOLFSSL_OP_DONT_INSERT_EMPTY_FRAGMENTS
| SSL_OP_TLS_ROLLBACK_BUG), | WOLFSSL_OP_TLS_ROLLBACK_BUG),
}; };
#if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || \ #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || \
defined(HAVE_WEBSERVER) defined(HAVE_WEBSERVER)
/* for compatibility these must be macros */ /* for compatibility these must be macros */
#define SSL_OP_MICROSOFT_SESS_ID_BUG WOLFSSL_OP_MICROSOFT_SESS_ID_BUG
#define SSL_OP_NETSCAPE_CHALLENGE_BUG WOLFSSL_OP_NETSCAPE_CHALLENGE_BUG
#define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG WOLFSSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG
#define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG WOLFSSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG
#define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER WOLFSSL_OP_MICROSOFT_BIG_SSLV3_BUFFER
#define SSL_OP_MSIE_SSLV2_RSA_PADDING WOLFSSL_OP_MSIE_SSLV2_RSA_PADDING
#define SSL_OP_SSLEAY_080_CLIENT_DH_BUG WOLFSSL_OP_SSLEAY_080_CLIENT_DH_BUG
#define SSL_OP_TLS_D5_BUG WOLFSSL_OP_TLS_D5_BUG
#define SSL_OP_TLS_BLOCK_PADDING_BUG WOLFSSL_OP_TLS_BLOCK_PADDING_BUG
#define SSL_OP_TLS_ROLLBACK_BUG WOLFSSL_OP_TLS_ROLLBACK_BUG
#define SSL_OP_EPHEMERAL_RSA WOLFSSL_OP_EPHEMERAL_RSA
#define SSL_OP_PKCS1_CHECK_1 WOLFSSL_OP_PKCS1_CHECK_1
#define SSL_OP_PKCS1_CHECK_2 WOLFSSL_OP_PKCS1_CHECK_2
#define SSL_OP_NETSCAPE_CA_DN_BUG WOLFSSL_OP_NETSCAPE_CA_DN_BUG
#define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG WOLFSSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG
#define SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS WOLFSSL_OP_DONT_INSERT_EMPTY_FRAGMENTS
#define SSL_OP_NO_QUERY_MTU WOLFSSL_OP_NO_QUERY_MTU
#define SSL_OP_COOKIE_EXCHANGE WOLFSSL_OP_COOKIE_EXCHANGE
#define SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION \
WOLFSSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION
#define SSL_OP_ALL WOLFSSL_OP_ALL
#define SSL_OP_NO_SSLv2 WOLFSSL_OP_NO_SSLv2 #define SSL_OP_NO_SSLv2 WOLFSSL_OP_NO_SSLv2
#define SSL_OP_NO_SSLv3 WOLFSSL_OP_NO_SSLv3 #define SSL_OP_NO_SSLv3 WOLFSSL_OP_NO_SSLv3
#define SSL_OP_NO_TLSv1 WOLFSSL_OP_NO_TLSv1 #define SSL_OP_NO_TLSv1 WOLFSSL_OP_NO_TLSv1
#define SSL_OP_NO_TLSv1_1 WOLFSSL_OP_NO_TLSv1_1 #define SSL_OP_NO_TLSv1_1 WOLFSSL_OP_NO_TLSv1_1
#define SSL_OP_NO_TLSv1_2 WOLFSSL_OP_NO_TLSv1_2 #define SSL_OP_NO_TLSv1_2 WOLFSSL_OP_NO_TLSv1_2
#define SSL_OP_NO_COMPRESSION WOLFSSL_OP_NO_COMPRESSION #define SSL_OP_NO_COMPRESSION WOLFSSL_OP_NO_COMPRESSION
#if !(!defined(WOLFSSL_TLS13) && defined(WOLFSSL_APACHE_HTTPD)) /* apache uses this to determine if TLS 1.3 is enabled */
/* apache uses SSL_OP_NO_TLSv1_3 to determine if TLS 1.3 is enabled */
#if !(!defined(WOLFSSL_TLS13) && defined(WOLFSSL_APACHE_HTTPD))
#define SSL_OP_NO_TLSv1_3 WOLFSSL_OP_NO_TLSv1_3 #define SSL_OP_NO_TLSv1_3 WOLFSSL_OP_NO_TLSv1_3
#endif #endif
#ifdef HAVE_SESSION_TICKET
#define SSL_OP_NO_TICKET WOLFSSL_OP_NO_TICKET
#endif
#define SSL_OP_NO_SSL_MASK (SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | \ #define SSL_OP_NO_SSL_MASK (SSL_OP_NO_SSLv3 | SSL_OP_NO_TLSv1 | \
SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3) SSL_OP_NO_TLSv1_1 | SSL_OP_NO_TLSv1_2 | SSL_OP_NO_TLSv1_3)
#define SSL_NOTHING 1 #define SSL_NOTHING 1
#define SSL_WRITING 2 #define SSL_WRITING 2
#define SSL_READING 3 #define SSL_READING 3
@ -4674,6 +4686,10 @@ WOLFSSL_API int wolfSSL_SSL_CTX_remove_session(WOLFSSL_CTX* ctx,
WOLFSSL_API WOLFSSL_BIO *wolfSSL_SSL_get_rbio(const WOLFSSL *s); WOLFSSL_API WOLFSSL_BIO *wolfSSL_SSL_get_rbio(const WOLFSSL *s);
WOLFSSL_API WOLFSSL_BIO *wolfSSL_SSL_get_wbio(const WOLFSSL *s); WOLFSSL_API WOLFSSL_BIO *wolfSSL_SSL_get_wbio(const WOLFSSL *s);
WOLFSSL_API int wolfSSL_SSL_do_handshake(WOLFSSL *s); WOLFSSL_API int wolfSSL_SSL_do_handshake(WOLFSSL *s);
#ifdef OPENSSL_EXTRA
WOLFSSL_API int wolfSSL_OPENSSL_init_ssl(word64 opts,
const OPENSSL_INIT_SETTINGS *settings);
#endif
#if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L #if defined(OPENSSL_VERSION_NUMBER) && OPENSSL_VERSION_NUMBER >= 0x10100000L
WOLFSSL_API int wolfSSL_SSL_in_init(const WOLFSSL* ssl); WOLFSSL_API int wolfSSL_SSL_in_init(const WOLFSSL* ssl);
#else #else