diff --git a/src/ssl.c b/src/ssl.c index a511ac933..316b71583 100644 --- a/src/ssl.c +++ b/src/ssl.c @@ -2857,6 +2857,20 @@ int wolfSSL_get_alert_history(WOLFSSL* ssl, WOLFSSL_ALERT_HISTORY *h) return WOLFSSL_SUCCESS; } +#ifdef OPENSSL_EXTRA +/* returns SSL_WRITING, SSL_READING or SSL_NOTHING */ +int wolfSSL_want(WOLFSSL* ssl) +{ + int rw_state = SSL_NOTHING; + if (ssl) { + if (ssl->error == WANT_READ) + rw_state = SSL_READING; + else if (ssl->error == WANT_WRITE) + rw_state = SSL_WRITING; + } + return rw_state; +} +#endif /* return TRUE if current error is want read */ int wolfSSL_want_read(WOLFSSL* ssl) diff --git a/wolfssl/openssl/ssl.h b/wolfssl/openssl/ssl.h index 9abd8bed2..b1f239ba2 100644 --- a/wolfssl/openssl/ssl.h +++ b/wolfssl/openssl/ssl.h @@ -626,6 +626,7 @@ typedef WOLFSSL_ASN1_BIT_STRING ASN1_BIT_STRING; #define SSL_get_peer_certificate wolfSSL_get_peer_certificate #define SSL_get_peer_cert_chain wolfSSL_get_peer_cert_chain +#define SSL_want wolfSSL_want #define SSL_want_read wolfSSL_want_read #define SSL_want_write wolfSSL_want_write diff --git a/wolfssl/ssl.h b/wolfssl/ssl.h index 3d43a5ab7..4734c7e29 100644 --- a/wolfssl/ssl.h +++ b/wolfssl/ssl.h @@ -1249,6 +1249,7 @@ enum { SSL_OP_TLS_ROLLBACK_BUG = 0x00000200, SSL_OP_ALL = 0x00000400, SSL_OP_EPHEMERAL_RSA = 0x00000800, + SSL_OP_NO_SSLv2 = 0x00000000, /* N/A */ SSL_OP_NO_SSLv3 = 0x00001000, SSL_OP_NO_TLSv1 = 0x00002000, SSL_OP_PKCS1_CHECK_1 = 0x00004000, @@ -1269,6 +1270,14 @@ enum { SSL_OP_NO_TLSv1_3 = 0x20000000, }; +#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) + +#define SSL_NOTHING 1 +#define SSL_WRITING 2 +#define SSL_READING 3 + + enum { #ifdef HAVE_OCSP /* OCSP Flags */ @@ -1616,6 +1625,9 @@ WOLFSSL_API int wolfSSL_CTX_set_session_id_context(WOLFSSL_CTX*, WOLFSSL_API WOLFSSL_X509* wolfSSL_get_peer_certificate(WOLFSSL* ssl); WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_get_peer_cert_chain(const WOLFSSL*); +#ifdef OPENSSL_EXTRA +WOLFSSL_API int wolfSSL_want(WOLFSSL*); +#endif WOLFSSL_API int wolfSSL_want_read(WOLFSSL*); WOLFSSL_API int wolfSSL_want_write(WOLFSSL*);