From 8bb8d862c233f516f45776d2a7751ee9e2b5f089 Mon Sep 17 00:00:00 2001 From: zhangjunhao Date: Tue, 3 Apr 2018 14:41:29 +0800 Subject: [PATCH] feat(wolfssl): Add wolfssl library (Licensed from wolfSSL to Espressif) From the license agreement, only release the library of wolfSSL. wolfSSL version: v3.12.2 --- LICENSE | 32 +- include/wolfssl/ssl.h | 2616 ++++++++++++++++++++++++ include/wolfssl/user_settings.h | 70 + include/wolfssl/version.h | 40 + include/wolfssl/wolfcrypt/settings.h | 1573 ++++++++++++++ include/wolfssl/wolfcrypt/visibility.h | 76 + include/wolfssl/wolfio.h | 432 ++++ lib/libwolfssl.a | Bin 0 -> 899644 bytes 8 files changed, 4826 insertions(+), 13 deletions(-) create mode 100644 include/wolfssl/ssl.h create mode 100755 include/wolfssl/user_settings.h create mode 100644 include/wolfssl/version.h create mode 100644 include/wolfssl/wolfcrypt/settings.h create mode 100644 include/wolfssl/wolfcrypt/visibility.h create mode 100644 include/wolfssl/wolfio.h create mode 100644 lib/libwolfssl.a diff --git a/LICENSE b/LICENSE index 9919b112..ae5ed200 100644 --- a/LICENSE +++ b/LICENSE @@ -1,10 +1,10 @@ -ESPRSSIF MIT License +ESPRESSIF MIT License Copyright (c) 2015 Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, it is free of charge, to any person obtaining a copy of this software and associated -documentation files (the Software), to deal in the Software without restriction, +documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: @@ -12,7 +12,7 @@ is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR @@ -20,20 +20,22 @@ OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR DEALINGS IN THE SOFTWARE. - MIT ֤ +乐鑫 MIT 许可证 -Ȩ (c) 2015 <ϢƼϺ޹˾> +版权 (c) 2015 <乐鑫信息科技(上海)有限公司> -֤ȨϢƼ ESP8266 ƷӦÿڴ£֤Ȩκλø -ĵͳΪƵؾӪƵʹáơ޸ġϲ -淢СɢȨȨȨЩȨͬʱ - +该许可证授权仅限于乐鑫信息科技 ESP8266 产品的应用开发。在此情况下,该许可证免费授权任何获得该 +软件及其相关文档(统称为“软件”)的人无限制地经营该软件,包括无限制的使用、复制、修改、合并、 +出版发行、散布、再授权、及贩售软件及软件副本的权利。被授权人在享受这些权利的同时,需服从下面 +的条件: -ижϵİȨȨ +在软件和软件的所有副本中都必须包含以上的版权声明和授权声明。 -ṩûκȷ򰵺ĵڹԡʺijһض; -ͷȨı֤ߺͰȨκ¾ʹԺͬʽȨ -ʽκ⡢𺦻θ +该软件按本来的样子提供,没有任何明确或暗含的担保,包括但不仅限于关于试销性、适合某一特定用途 +和非侵权的保证。作者和版权持有人在任何情况下均不就由软件或软件使用引起的以合同形式、民事侵权 +或其它方式提出的任何索赔、损害或其它责任负责。 + +---- Exception vectors include code relicensed from the following: Original vector contents Copyright (C) 2014-2015 Espressif Systems @@ -60,4 +62,8 @@ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +---- + +wolfSSL +Licensed from wolfSSL to Espressif, only provide binary library. diff --git a/include/wolfssl/ssl.h b/include/wolfssl/ssl.h new file mode 100644 index 00000000..e69b127a --- /dev/null +++ b/include/wolfssl/ssl.h @@ -0,0 +1,2616 @@ +/* ssl.h + * + * Copyright (C) 2006-2017 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + + + +/* wolfSSL API */ + +#ifndef WOLFSSL_SSL_H +#define WOLFSSL_SSL_H + + +/* for users not using preprocessor flags*/ +#include +#include + +#ifdef HAVE_WOLF_EVENT + #include +#endif + +#ifndef NO_FILESYSTEM + #if defined(FREESCALE_MQX) || defined(FREESCALE_KSDK_MQX) + #if MQX_USE_IO_OLD + #include + #else + #include + #endif + #endif +#endif + +#ifdef WOLFSSL_PREFIX + #include "prefix_ssl.h" +#endif + +#ifdef LIBWOLFSSL_VERSION_STRING + #define WOLFSSL_VERSION LIBWOLFSSL_VERSION_STRING +#endif + +#ifdef _WIN32 + /* wincrypt.h clashes */ + #undef OCSP_REQUEST + #undef OCSP_RESPONSE +#endif + +#ifdef OPENSSL_COEXIST + /* mode to allow wolfSSL and OpenSSL to exist together */ + #ifdef TEST_OPENSSL_COEXIST + /* + ./configure --enable-opensslcoexist \ + CFLAGS="-I/usr/local/opt/openssl/include -DTEST_OPENSSL_COEXIST" \ + LDFLAGS="-L/usr/local/opt/openssl/lib -lcrypto" + */ + #include + #include + #include + #include + #include + #include + #endif + + /* make sure old names are disabled */ + #ifndef NO_OLD_SSL_NAMES + #define NO_OLD_SSL_NAMES + #endif + #ifndef NO_OLD_WC_NAMES + #define NO_OLD_WC_NAMES + #endif + +#elif defined(OPENSSL_EXTRA) + #include + #include + + /* We need the old SSL names */ + #ifdef NO_OLD_SSL_NAMES + #undef NO_OLD_SSL_NAMES + #endif + #ifdef NO_OLD_WC_NAMES + #undef NO_OLD_WC_NAMES + #endif +#endif + + +#ifdef __cplusplus + extern "C" { +#endif + +#ifndef WOLFSSL_WOLFSSL_TYPE_DEFINED +#define WOLFSSL_WOLFSSL_TYPE_DEFINED +typedef struct WOLFSSL WOLFSSL; +#endif +typedef struct WOLFSSL_SESSION WOLFSSL_SESSION; +typedef struct WOLFSSL_METHOD WOLFSSL_METHOD; +#ifndef WOLFSSL_WOLFSSL_CTX_TYPE_DEFINED +#define WOLFSSL_WOLFSSL_CTX_TYPE_DEFINED +typedef struct WOLFSSL_CTX WOLFSSL_CTX; +#endif + +typedef struct WOLFSSL_STACK WOLFSSL_STACK; +typedef struct WOLFSSL_X509 WOLFSSL_X509; +typedef struct WOLFSSL_X509_NAME WOLFSSL_X509_NAME; +typedef struct WOLFSSL_X509_NAME_ENTRY WOLFSSL_X509_NAME_ENTRY; +typedef struct WOLFSSL_X509_CHAIN WOLFSSL_X509_CHAIN; + +typedef struct WOLFSSL_CERT_MANAGER WOLFSSL_CERT_MANAGER; +typedef struct WOLFSSL_SOCKADDR WOLFSSL_SOCKADDR; +typedef struct WOLFSSL_CRL WOLFSSL_CRL; + +/* redeclare guard */ +#define WOLFSSL_TYPES_DEFINED + +#include + + +#ifndef WOLFSSL_RSA_TYPE_DEFINED /* guard on redeclaration */ +typedef struct WOLFSSL_RSA WOLFSSL_RSA; +#define WOLFSSL_RSA_TYPE_DEFINED +#endif + +#ifndef WC_RNG_TYPE_DEFINED /* guard on redeclaration */ + typedef struct WC_RNG WC_RNG; + #define WC_RNG_TYPE_DEFINED +#endif + +#ifndef WOLFSSL_DSA_TYPE_DEFINED /* guard on redeclaration */ +typedef struct WOLFSSL_DSA WOLFSSL_DSA; +#define WOLFSSL_DSA_TYPE_DEFINED +#endif + +#ifndef WOLFSSL_EC_TYPE_DEFINED /* guard on redeclaration */ +typedef struct WOLFSSL_EC_KEY WOLFSSL_EC_KEY; +typedef struct WOLFSSL_EC_POINT WOLFSSL_EC_POINT; +typedef struct WOLFSSL_EC_GROUP WOLFSSL_EC_GROUP; +#define WOLFSSL_EC_TYPE_DEFINED +#endif + +#ifndef WOLFSSL_ECDSA_TYPE_DEFINED /* guard on redeclaration */ +typedef struct WOLFSSL_ECDSA_SIG WOLFSSL_ECDSA_SIG; +#define WOLFSSL_ECDSA_TYPE_DEFINED +#endif + +typedef struct WOLFSSL_CIPHER WOLFSSL_CIPHER; +typedef struct WOLFSSL_X509_LOOKUP WOLFSSL_X509_LOOKUP; +typedef struct WOLFSSL_X509_LOOKUP_METHOD WOLFSSL_X509_LOOKUP_METHOD; +typedef struct WOLFSSL_X509_CRL WOLFSSL_X509_CRL; +typedef struct WOLFSSL_X509_STORE WOLFSSL_X509_STORE; +typedef struct WOLFSSL_BIO WOLFSSL_BIO; +typedef struct WOLFSSL_BIO_METHOD WOLFSSL_BIO_METHOD; +typedef struct WOLFSSL_X509_EXTENSION WOLFSSL_X509_EXTENSION; +typedef struct WOLFSSL_ASN1_TIME WOLFSSL_ASN1_TIME; +typedef struct WOLFSSL_ASN1_INTEGER WOLFSSL_ASN1_INTEGER; +typedef struct WOLFSSL_ASN1_OBJECT WOLFSSL_ASN1_OBJECT; + +typedef struct WOLFSSL_ASN1_STRING WOLFSSL_ASN1_STRING; +typedef struct WOLFSSL_dynlock_value WOLFSSL_dynlock_value; +typedef struct WOLFSSL_DH WOLFSSL_DH; +typedef struct WOLFSSL_ASN1_BIT_STRING WOLFSSL_ASN1_BIT_STRING; +typedef unsigned char* WOLFSSL_BUF_MEM; + +#define WOLFSSL_ASN1_UTCTIME WOLFSSL_ASN1_TIME +#define WOLFSSL_ASN1_GENERALIZEDTIME WOLFSSL_ASN1_TIME + +struct WOLFSSL_ASN1_INTEGER { + /* size can be increased set at 20 for tag, length then to hold at least 16 + * byte type */ + unsigned char data[20]; + /* ASN_INTEGER | LENGTH | hex of number */ +}; + +struct WOLFSSL_ASN1_TIME { + /* MAX_DATA_SIZE is 32 */ + unsigned char data[32 + 2]; + /* ASN_TIME | LENGTH | date bytes */ +}; + +#ifndef WOLFSSL_EVP_PKEY_TYPE_DEFINED /* guard on redeclaration */ +typedef struct WOLFSSL_EVP_PKEY WOLFSSL_EVP_PKEY; +#define WOLFSSL_EVP_PKEY_TYPE_DEFINED +#endif + +typedef struct WOLFSSL_MD4_CTX { + int buffer[32]; /* big enough to hold, check size in Init */ +} WOLFSSL_MD4_CTX; + + +typedef struct WOLFSSL_COMP_METHOD { + int type; /* stunnel dereference */ +} WOLFSSL_COMP_METHOD; + +struct WOLFSSL_X509_LOOKUP_METHOD { + int type; +}; + +struct WOLFSSL_X509_LOOKUP { + WOLFSSL_X509_STORE *store; +}; + +struct WOLFSSL_X509_STORE { + int cache; /* stunnel dereference */ + WOLFSSL_CERT_MANAGER* cm; + WOLFSSL_X509_LOOKUP lookup; +#ifdef OPENSSL_EXTRA + int isDynamic; +#endif +}; + +typedef struct WOLFSSL_ALERT { + int code; + int level; +} WOLFSSL_ALERT; + +typedef struct WOLFSSL_ALERT_HISTORY { + WOLFSSL_ALERT last_rx; + WOLFSSL_ALERT last_tx; +} WOLFSSL_ALERT_HISTORY; + +typedef struct WOLFSSL_X509_REVOKED { + WOLFSSL_ASN1_INTEGER* serialNumber; /* stunnel dereference */ +} WOLFSSL_X509_REVOKED; + + +typedef struct WOLFSSL_X509_OBJECT { + union { + char* ptr; + WOLFSSL_X509 *x509; + WOLFSSL_X509_CRL* crl; /* stunnel dereference */ + } data; +} WOLFSSL_X509_OBJECT; + +typedef struct WOLFSSL_BUFFER_INFO { + unsigned char* buffer; + unsigned int length; +} WOLFSSL_BUFFER_INFO; + +typedef struct WOLFSSL_X509_STORE_CTX { + WOLFSSL_X509_STORE* store; /* Store full of a CA cert chain */ + WOLFSSL_X509* current_cert; /* stunnel dereference */ + WOLFSSL_STACK* chain; + char* domain; /* subject CN domain name */ + void* ex_data; /* external data, for fortress build */ + void* userCtx; /* user ctx */ + int error; /* current error */ + int error_depth; /* cert depth for this error */ + int discardSessionCerts; /* so verify callback can flag for discard */ + int totalCerts; /* number of peer cert buffers */ + WOLFSSL_BUFFER_INFO* certs; /* peer certs */ +} WOLFSSL_X509_STORE_CTX; + +typedef char* WOLFSSL_STRING; + +/* Valid Alert types from page 16/17 */ +enum AlertDescription { + close_notify = 0, + unexpected_message = 10, + bad_record_mac = 20, + record_overflow = 22, + decompression_failure = 30, + handshake_failure = 40, + no_certificate = 41, + bad_certificate = 42, + unsupported_certificate = 43, + certificate_revoked = 44, + certificate_expired = 45, + certificate_unknown = 46, + illegal_parameter = 47, + decode_error = 50, + decrypt_error = 51, + #ifdef WOLFSSL_MYSQL_COMPATIBLE + /* catch name conflict for enum protocol with MYSQL build */ + wc_protocol_version = 70, + #else + protocol_version = 70, + #endif + no_renegotiation = 100, + unrecognized_name = 112, /**< RFC 6066, section 3 */ + bad_certificate_status_response = 113, /**< RFC 6066, section 8 */ + no_application_protocol = 120 +}; + + +enum AlertLevel { + alert_warning = 1, + alert_fatal = 2 +}; + +/* Maximum master key length (SECRET_LEN) */ +#define WOLFSSL_MAX_MASTER_KEY_LENGTH 48 + +typedef WOLFSSL_METHOD* (*wolfSSL_method_func)(void* heap); +WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_server_method_ex(void* heap); +WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_client_method_ex(void* heap); +WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_server_method_ex(void* heap); +WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_client_method_ex(void* heap); +WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_server_method_ex(void* heap); +WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_client_method_ex(void* heap); +WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_server_method_ex(void* heap); +WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_client_method_ex(void* heap); +#ifdef WOLFSSL_TLS13 + WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_server_method_ex(void* heap); + WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_client_method_ex(void* heap); +#endif +WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_server_method_ex(void* heap); +WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_client_method_ex(void* heap); + +#ifdef WOLFSSL_DTLS + WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_client_method_ex(void* heap); + WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_server_method_ex(void* heap); + WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_client_method_ex(void* heap); + WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_server_method_ex(void* heap); +#endif +WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_method(void); +WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_server_method(void); +WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_client_method(void); +WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_server_method(void); +WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_client_method(void); +WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_server_method(void); +WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_client_method(void); +WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_server_method(void); +WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_client_method(void); +#ifdef WOLFSSL_TLS13 + WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_server_method(void); + WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_client_method(void); +#endif + +#ifdef WOLFSSL_DTLS + WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_client_method(void); + WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_server_method(void); + WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_client_method(void); + WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_server_method(void); +#endif + +#ifdef HAVE_POLY1305 + WOLFSSL_API int wolfSSL_use_old_poly(WOLFSSL*, int); +#endif + +#ifdef WOLFSSL_SESSION_EXPORT +#ifdef WOLFSSL_DTLS +typedef int (*wc_dtls_export)(WOLFSSL* ssl, + unsigned char* exportBuffer, unsigned int sz, void* userCtx); +WOLFSSL_API int wolfSSL_dtls_import(WOLFSSL* ssl, unsigned char* buf, + unsigned int sz); +WOLFSSL_API int wolfSSL_CTX_dtls_set_export(WOLFSSL_CTX* ctx, + wc_dtls_export func); +WOLFSSL_API int wolfSSL_dtls_set_export(WOLFSSL* ssl, wc_dtls_export func); +WOLFSSL_API int wolfSSL_dtls_export(WOLFSSL* ssl, unsigned char* buf, + unsigned int* sz); +#endif /* WOLFSSL_DTLS */ +#endif /* WOLFSSL_SESSION_EXPORT */ + +#ifdef WOLFSSL_STATIC_MEMORY +#ifndef WOLFSSL_MEM_GUARD +#define WOLFSSL_MEM_GUARD + typedef struct WOLFSSL_MEM_STATS WOLFSSL_MEM_STATS; + typedef struct WOLFSSL_MEM_CONN_STATS WOLFSSL_MEM_CONN_STATS; +#endif +WOLFSSL_API int wolfSSL_CTX_load_static_memory(WOLFSSL_CTX** ctx, + wolfSSL_method_func method, + unsigned char* buf, unsigned int sz, + int flag, int max); +WOLFSSL_API int wolfSSL_CTX_is_static_memory(WOLFSSL_CTX* ctx, + WOLFSSL_MEM_STATS* mem_stats); +WOLFSSL_API int wolfSSL_is_static_memory(WOLFSSL* ssl, + WOLFSSL_MEM_CONN_STATS* mem_stats); +#endif + +#if !defined(NO_FILESYSTEM) && !defined(NO_CERTS) + +WOLFSSL_API int wolfSSL_CTX_use_certificate_file(WOLFSSL_CTX*, const char*, int); +WOLFSSL_API int wolfSSL_CTX_use_PrivateKey_file(WOLFSSL_CTX*, const char*, int); +WOLFSSL_API int wolfSSL_CTX_load_verify_locations(WOLFSSL_CTX*, const char*, + const char*); +#ifdef WOLFSSL_TRUST_PEER_CERT +WOLFSSL_API int wolfSSL_CTX_trust_peer_cert(WOLFSSL_CTX*, const char*, int); +#endif +WOLFSSL_API int wolfSSL_CTX_use_certificate_chain_file(WOLFSSL_CTX *, + const char *file); +WOLFSSL_API int wolfSSL_CTX_use_RSAPrivateKey_file(WOLFSSL_CTX*, const char*, int); + +WOLFSSL_API long wolfSSL_get_verify_depth(WOLFSSL* ssl); +WOLFSSL_API long wolfSSL_CTX_get_verify_depth(WOLFSSL_CTX* ctx); +WOLFSSL_API int wolfSSL_use_certificate_file(WOLFSSL*, const char*, int); +WOLFSSL_API int wolfSSL_use_PrivateKey_file(WOLFSSL*, const char*, int); +WOLFSSL_API int wolfSSL_use_certificate_chain_file(WOLFSSL*, const char *file); +WOLFSSL_API int wolfSSL_use_RSAPrivateKey_file(WOLFSSL*, const char*, int); + +#ifdef WOLFSSL_DER_LOAD + WOLFSSL_API int wolfSSL_CTX_der_load_verify_locations(WOLFSSL_CTX*, + const char*, int); +#endif + +#ifdef HAVE_NTRU + WOLFSSL_API int wolfSSL_CTX_use_NTRUPrivateKey_file(WOLFSSL_CTX*, const char*); + /* load NTRU private key blob */ +#endif + +#ifndef WOLFSSL_PEMCERT_TODER_DEFINED + WOLFSSL_API int wolfSSL_PemCertToDer(const char*, unsigned char*, int); + #define WOLFSSL_PEMCERT_TODER_DEFINED +#endif + +#endif /* !NO_FILESYSTEM && !NO_CERTS */ + +WOLFSSL_API WOLFSSL_CTX* wolfSSL_CTX_new(WOLFSSL_METHOD*); +WOLFSSL_API WOLFSSL* wolfSSL_new(WOLFSSL_CTX*); +WOLFSSL_API int wolfSSL_is_server(WOLFSSL*); +WOLFSSL_API WOLFSSL* wolfSSL_write_dup(WOLFSSL*); +WOLFSSL_API int wolfSSL_set_fd (WOLFSSL*, int); +WOLFSSL_API int wolfSSL_set_write_fd (WOLFSSL*, int); +WOLFSSL_API int wolfSSL_set_read_fd (WOLFSSL*, int); +WOLFSSL_API char* wolfSSL_get_cipher_list(int priority); +WOLFSSL_API char* wolfSSL_get_cipher_list_ex(WOLFSSL* ssl, int priority); +WOLFSSL_API int wolfSSL_get_ciphers(char*, int); +WOLFSSL_API const char* wolfSSL_get_cipher_name(WOLFSSL* ssl); +WOLFSSL_API const char* wolfSSL_get_shared_ciphers(WOLFSSL* ssl, char* buf, + int len); +WOLFSSL_API const char* wolfSSL_get_curve_name(WOLFSSL* ssl); +WOLFSSL_API int wolfSSL_get_fd(const WOLFSSL*); +WOLFSSL_API void wolfSSL_set_using_nonblock(WOLFSSL*, int); +WOLFSSL_API int wolfSSL_get_using_nonblock(WOLFSSL*); +/* please see note at top of README if you get an error from connect */ +WOLFSSL_API int wolfSSL_connect(WOLFSSL*); +WOLFSSL_API int wolfSSL_write(WOLFSSL*, const void*, int); +WOLFSSL_API int wolfSSL_read(WOLFSSL*, void*, int); +WOLFSSL_API int wolfSSL_peek(WOLFSSL*, void*, int); +WOLFSSL_API int wolfSSL_accept(WOLFSSL*); +#ifdef WOLFSSL_TLS13 +WOLFSSL_API int wolfSSL_send_hrr_cookie(WOLFSSL* ssl, + const unsigned char* secret, unsigned int secretSz); +WOLFSSL_API int wolfSSL_CTX_no_ticket_TLSv13(WOLFSSL_CTX* ctx); +WOLFSSL_API int wolfSSL_no_ticket_TLSv13(WOLFSSL* ssl); +WOLFSSL_API int wolfSSL_CTX_no_dhe_psk(WOLFSSL_CTX* ctx); +WOLFSSL_API int wolfSSL_no_dhe_psk(WOLFSSL* ssl); +WOLFSSL_API int wolfSSL_update_keys(WOLFSSL* ssl); +WOLFSSL_API int wolfSSL_CTX_allow_post_handshake_auth(WOLFSSL_CTX* ctx); +WOLFSSL_API int wolfSSL_allow_post_handshake_auth(WOLFSSL* ssl); +WOLFSSL_API int wolfSSL_request_certificate(WOLFSSL* ssl); + +WOLFSSL_API int wolfSSL_connect_TLSv13(WOLFSSL*); +WOLFSSL_API int wolfSSL_accept_TLSv13(WOLFSSL*); + +#ifdef WOLFSSL_EARLY_DATA +WOLFSSL_API int wolfSSL_CTX_set_max_early_data(WOLFSSL_CTX* ctx, + unsigned int sz); +WOLFSSL_API int wolfSSL_set_max_early_data(WOLFSSL* ssl, unsigned int sz); +WOLFSSL_API int wolfSSL_write_early_data(WOLFSSL*, const void*, int, int*); +WOLFSSL_API int wolfSSL_read_early_data(WOLFSSL*, void*, int, int*); +#endif +#endif +WOLFSSL_API void wolfSSL_CTX_free(WOLFSSL_CTX*); +WOLFSSL_API void wolfSSL_free(WOLFSSL*); +WOLFSSL_API int wolfSSL_shutdown(WOLFSSL*); +WOLFSSL_API int wolfSSL_send(WOLFSSL*, const void*, int sz, int flags); +WOLFSSL_API int wolfSSL_recv(WOLFSSL*, void*, int sz, int flags); + +WOLFSSL_API void wolfSSL_CTX_set_quiet_shutdown(WOLFSSL_CTX*, int); +WOLFSSL_API void wolfSSL_set_quiet_shutdown(WOLFSSL*, int); + +WOLFSSL_API int wolfSSL_get_error(WOLFSSL*, int); +WOLFSSL_API int wolfSSL_get_alert_history(WOLFSSL*, WOLFSSL_ALERT_HISTORY *); + +WOLFSSL_API int wolfSSL_set_session(WOLFSSL* ssl,WOLFSSL_SESSION* session); +WOLFSSL_API long wolfSSL_SSL_SESSION_set_timeout(WOLFSSL_SESSION* session, long t); +WOLFSSL_API WOLFSSL_SESSION* wolfSSL_get_session(WOLFSSL* ssl); +WOLFSSL_API void wolfSSL_flush_sessions(WOLFSSL_CTX *ctx, long tm); +WOLFSSL_API int wolfSSL_SetServerID(WOLFSSL* ssl, const unsigned char*, + int, int); + +#ifdef SESSION_INDEX +WOLFSSL_API int wolfSSL_GetSessionIndex(WOLFSSL* ssl); +WOLFSSL_API int wolfSSL_GetSessionAtIndex(int index, WOLFSSL_SESSION* session); +#endif /* SESSION_INDEX */ + +#if defined(SESSION_INDEX) && defined(SESSION_CERTS) +WOLFSSL_API + WOLFSSL_X509_CHAIN* wolfSSL_SESSION_get_peer_chain(WOLFSSL_SESSION* session); +#endif /* SESSION_INDEX && SESSION_CERTS */ + +typedef int (*VerifyCallback)(int, WOLFSSL_X509_STORE_CTX*); +typedef int (pem_password_cb)(char*, int, int, void*); + +WOLFSSL_API void wolfSSL_CTX_set_verify(WOLFSSL_CTX*, int, + VerifyCallback verify_callback); +WOLFSSL_API void wolfSSL_set_verify(WOLFSSL*, int, VerifyCallback verify_callback); +WOLFSSL_API void wolfSSL_SetCertCbCtx(WOLFSSL*, void*); + +WOLFSSL_API int wolfSSL_pending(WOLFSSL*); + +WOLFSSL_API void wolfSSL_load_error_strings(void); +WOLFSSL_API int wolfSSL_library_init(void); +WOLFSSL_API long wolfSSL_CTX_set_session_cache_mode(WOLFSSL_CTX*, long); + +#ifdef HAVE_SECRET_CALLBACK +typedef int (*SessionSecretCb)(WOLFSSL* ssl, + void* secret, int* secretSz, void* ctx); +WOLFSSL_API int wolfSSL_set_session_secret_cb(WOLFSSL*, SessionSecretCb, void*); +#endif /* HAVE_SECRET_CALLBACK */ + +/* session cache persistence */ +WOLFSSL_API int wolfSSL_save_session_cache(const char*); +WOLFSSL_API int wolfSSL_restore_session_cache(const char*); +WOLFSSL_API int wolfSSL_memsave_session_cache(void*, int); +WOLFSSL_API int wolfSSL_memrestore_session_cache(const void*, int); +WOLFSSL_API int wolfSSL_get_session_cache_memsize(void); + +/* certificate cache persistence, uses ctx since certs are per ctx */ +WOLFSSL_API int wolfSSL_CTX_save_cert_cache(WOLFSSL_CTX*, const char*); +WOLFSSL_API int wolfSSL_CTX_restore_cert_cache(WOLFSSL_CTX*, const char*); +WOLFSSL_API int wolfSSL_CTX_memsave_cert_cache(WOLFSSL_CTX*, void*, int, int*); +WOLFSSL_API int wolfSSL_CTX_memrestore_cert_cache(WOLFSSL_CTX*, const void*, int); +WOLFSSL_API int wolfSSL_CTX_get_cert_cache_memsize(WOLFSSL_CTX*); + +/* only supports full name from cipher_name[] delimited by : */ +WOLFSSL_API int wolfSSL_CTX_set_cipher_list(WOLFSSL_CTX*, const char*); +WOLFSSL_API int wolfSSL_set_cipher_list(WOLFSSL*, const char*); + +/* Nonblocking DTLS helper functions */ +WOLFSSL_API int wolfSSL_dtls_get_current_timeout(WOLFSSL* ssl); +WOLFSSL_API int wolfSSL_dtls_set_timeout_init(WOLFSSL* ssl, int); +WOLFSSL_API int wolfSSL_dtls_set_timeout_max(WOLFSSL* ssl, int); +WOLFSSL_API int wolfSSL_dtls_got_timeout(WOLFSSL* ssl); +WOLFSSL_API int wolfSSL_dtls(WOLFSSL* ssl); + +WOLFSSL_API int wolfSSL_dtls_set_peer(WOLFSSL*, void*, unsigned int); +WOLFSSL_API int wolfSSL_dtls_get_peer(WOLFSSL*, void*, unsigned int*); + +WOLFSSL_API int wolfSSL_CTX_dtls_set_sctp(WOLFSSL_CTX*); +WOLFSSL_API int wolfSSL_dtls_set_sctp(WOLFSSL*); +WOLFSSL_API int wolfSSL_CTX_dtls_set_mtu(WOLFSSL_CTX*, unsigned short); +WOLFSSL_API int wolfSSL_dtls_set_mtu(WOLFSSL*, unsigned short); + +WOLFSSL_API int wolfSSL_dtls_get_drop_stats(WOLFSSL*, + unsigned int*, unsigned int*); +WOLFSSL_API int wolfSSL_CTX_mcast_set_member_id(WOLFSSL_CTX*, unsigned short); +WOLFSSL_API int wolfSSL_set_secret(WOLFSSL*, unsigned short, + const unsigned char*, unsigned int, + const unsigned char*, const unsigned char*, + const unsigned char*); +WOLFSSL_API int wolfSSL_mcast_read(WOLFSSL*, unsigned short*, void*, int); +WOLFSSL_API int wolfSSL_mcast_peer_add(WOLFSSL*, unsigned short, int); +WOLFSSL_API int wolfSSL_mcast_peer_known(WOLFSSL*, unsigned short); +WOLFSSL_API int wolfSSL_mcast_get_max_peers(void); +typedef int (*CallbackMcastHighwater)(unsigned short peerId, + unsigned int maxSeq, + unsigned int curSeq, void* ctx); +WOLFSSL_API int wolfSSL_CTX_mcast_set_highwater_cb(WOLFSSL_CTX*, + unsigned int, + unsigned int, + unsigned int, + CallbackMcastHighwater); +WOLFSSL_API int wolfSSL_mcast_set_highwater_ctx(WOLFSSL*, void*); + +WOLFSSL_API int wolfSSL_ERR_GET_REASON(unsigned long err); +WOLFSSL_API char* wolfSSL_ERR_error_string(unsigned long,char*); +WOLFSSL_API void wolfSSL_ERR_error_string_n(unsigned long e, char* buf, + unsigned long sz); +WOLFSSL_API const char* wolfSSL_ERR_reason_error_string(unsigned long); + +/* extras */ + +#ifndef WOLF_STACK_OF + #define WOLF_STACK_OF(x) WOLFSSL_STACK +#endif +#ifndef DECLARE_STACK_OF + #define DECLARE_STACK_OF(x) WOLF_STACK_OF(x); +#endif + +WOLFSSL_API int wolfSSL_sk_X509_push(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk, + WOLFSSL_X509* x509); +WOLFSSL_API WOLFSSL_X509* wolfSSL_sk_X509_pop(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk); +WOLFSSL_API void wolfSSL_sk_X509_free(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk); +WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_ASN1_OBJECT_new(void); +WOLFSSL_API void wolfSSL_ASN1_OBJECT_free(WOLFSSL_ASN1_OBJECT* obj); +WOLFSSL_API int wolfSSL_sk_ASN1_OBJECT_push(WOLF_STACK_OF(WOLFSSL_ASN1_OBJEXT)* sk, + WOLFSSL_ASN1_OBJECT* obj); +WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_sk_ASN1_OBJCET_pop( + WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk); +WOLFSSL_API void wolfSSL_sk_ASN1_OBJECT_free(WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)* sk); +WOLFSSL_API int wolfSSL_ASN1_STRING_to_UTF8(unsigned char **out, WOLFSSL_ASN1_STRING *in); + +WOLFSSL_API int wolfSSL_set_ex_data(WOLFSSL*, int, void*); +WOLFSSL_API int wolfSSL_get_shutdown(const WOLFSSL*); +WOLFSSL_API int wolfSSL_set_rfd(WOLFSSL*, int); +WOLFSSL_API int wolfSSL_set_wfd(WOLFSSL*, int); +WOLFSSL_API void wolfSSL_set_shutdown(WOLFSSL*, int); +WOLFSSL_API int wolfSSL_set_session_id_context(WOLFSSL*, const unsigned char*, + unsigned int); +WOLFSSL_API void wolfSSL_set_connect_state(WOLFSSL*); +WOLFSSL_API void wolfSSL_set_accept_state(WOLFSSL*); +WOLFSSL_API int wolfSSL_session_reused(WOLFSSL*); +WOLFSSL_API void wolfSSL_SESSION_free(WOLFSSL_SESSION* session); +WOLFSSL_API int wolfSSL_is_init_finished(WOLFSSL*); + +WOLFSSL_API const char* wolfSSL_get_version(WOLFSSL*); +WOLFSSL_API int wolfSSL_get_current_cipher_suite(WOLFSSL* ssl); +WOLFSSL_API WOLFSSL_CIPHER* wolfSSL_get_current_cipher(WOLFSSL*); +WOLFSSL_API char* wolfSSL_CIPHER_description(const WOLFSSL_CIPHER*, char*, int); +WOLFSSL_API const char* wolfSSL_CIPHER_get_name(const WOLFSSL_CIPHER* cipher); +WOLFSSL_API const char* wolfSSL_SESSION_CIPHER_get_name(WOLFSSL_SESSION* session); +WOLFSSL_API const char* wolfSSL_get_cipher(WOLFSSL*); +WOLFSSL_API WOLFSSL_SESSION* wolfSSL_get1_session(WOLFSSL* ssl); + /* what's ref count */ + +WOLFSSL_API void wolfSSL_X509_free(WOLFSSL_X509*); +WOLFSSL_API void wolfSSL_OPENSSL_free(void*); + +WOLFSSL_API int wolfSSL_OCSP_parse_url(char* url, char** host, char** port, + char** path, int* ssl); + +WOLFSSL_API WOLFSSL_METHOD* wolfSSLv23_client_method(void); +WOLFSSL_API WOLFSSL_METHOD* wolfSSLv2_client_method(void); +WOLFSSL_API WOLFSSL_METHOD* wolfSSLv2_server_method(void); + +WOLFSSL_API void wolfSSL_MD4_Init(WOLFSSL_MD4_CTX*); +WOLFSSL_API void wolfSSL_MD4_Update(WOLFSSL_MD4_CTX*, const void*, unsigned long); +WOLFSSL_API void wolfSSL_MD4_Final(unsigned char*, WOLFSSL_MD4_CTX*); + + +WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new(WOLFSSL_BIO_METHOD*); +WOLFSSL_API int wolfSSL_BIO_free(WOLFSSL_BIO*); +WOLFSSL_API int wolfSSL_BIO_free_all(WOLFSSL_BIO*); +WOLFSSL_API int wolfSSL_BIO_read(WOLFSSL_BIO*, void*, int); +WOLFSSL_API int wolfSSL_BIO_write(WOLFSSL_BIO*, const void*, int); +WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_push(WOLFSSL_BIO*, WOLFSSL_BIO* append); +WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_pop(WOLFSSL_BIO*); +WOLFSSL_API int wolfSSL_BIO_flush(WOLFSSL_BIO*); +WOLFSSL_API int wolfSSL_BIO_pending(WOLFSSL_BIO*); + +WOLFSSL_API WOLFSSL_BIO_METHOD* wolfSSL_BIO_f_buffer(void); +WOLFSSL_API long wolfSSL_BIO_set_write_buffer_size(WOLFSSL_BIO*, long size); +WOLFSSL_API WOLFSSL_BIO_METHOD* wolfSSL_BIO_f_ssl(void); +WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new_socket(int sfd, int flag); +WOLFSSL_API int wolfSSL_BIO_eof(WOLFSSL_BIO*); + +WOLFSSL_API WOLFSSL_BIO_METHOD* wolfSSL_BIO_s_mem(void); +WOLFSSL_API WOLFSSL_BIO_METHOD* wolfSSL_BIO_f_base64(void); +WOLFSSL_API void wolfSSL_BIO_set_flags(WOLFSSL_BIO*, int); + +WOLFSSL_API int wolfSSL_BIO_get_mem_data(WOLFSSL_BIO* bio,void* p); +WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new_mem_buf(void* buf, int len); + + +WOLFSSL_API long wolfSSL_BIO_set_ssl(WOLFSSL_BIO*, WOLFSSL*, int flag); +WOLFSSL_API long wolfSSL_BIO_set_fd(WOLFSSL_BIO* b, int fd, int flag); +WOLFSSL_API void wolfSSL_set_bio(WOLFSSL*, WOLFSSL_BIO* rd, WOLFSSL_BIO* wr); +WOLFSSL_API int wolfSSL_add_all_algorithms(void); + +#ifndef NO_FILESYSTEM +WOLFSSL_API WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_file(void); +#endif + +WOLFSSL_API WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_bio(void); +WOLFSSL_API WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_socket(void); + +WOLFSSL_API long wolfSSL_BIO_ctrl(WOLFSSL_BIO *bp, int cmd, long larg, void *parg); +WOLFSSL_API long wolfSSL_BIO_int_ctrl(WOLFSSL_BIO *bp, int cmd, long larg, int iarg); + +WOLFSSL_API int wolfSSL_BIO_set_write_buf_size(WOLFSSL_BIO *b, long size); +WOLFSSL_API int wolfSSL_BIO_make_bio_pair(WOLFSSL_BIO *b1, WOLFSSL_BIO *b2); +WOLFSSL_API int wolfSSL_BIO_ctrl_reset_read_request(WOLFSSL_BIO *b); +WOLFSSL_API int wolfSSL_BIO_nread0(WOLFSSL_BIO *bio, char **buf); +WOLFSSL_API int wolfSSL_BIO_nread(WOLFSSL_BIO *bio, char **buf, int num); +WOLFSSL_API int wolfSSL_BIO_nwrite(WOLFSSL_BIO *bio, char **buf, int num); +WOLFSSL_API int wolfSSL_BIO_reset(WOLFSSL_BIO *bio); + +WOLFSSL_API int wolfSSL_BIO_seek(WOLFSSL_BIO *bio, int ofs); +WOLFSSL_API int wolfSSL_BIO_write_filename(WOLFSSL_BIO *bio, char *name); +WOLFSSL_API long wolfSSL_BIO_set_mem_eof_return(WOLFSSL_BIO *bio, int v); +WOLFSSL_API long wolfSSL_BIO_get_mem_ptr(WOLFSSL_BIO *bio, WOLFSSL_BUF_MEM **m); + +WOLFSSL_API void wolfSSL_RAND_screen(void); +WOLFSSL_API const char* wolfSSL_RAND_file_name(char*, unsigned long); +WOLFSSL_API int wolfSSL_RAND_write_file(const char*); +WOLFSSL_API int wolfSSL_RAND_load_file(const char*, long); +WOLFSSL_API int wolfSSL_RAND_egd(const char*); +WOLFSSL_API int wolfSSL_RAND_seed(const void*, int); +WOLFSSL_API void wolfSSL_RAND_add(const void*, int, double); + +WOLFSSL_API WOLFSSL_COMP_METHOD* wolfSSL_COMP_zlib(void); +WOLFSSL_API WOLFSSL_COMP_METHOD* wolfSSL_COMP_rle(void); +WOLFSSL_API int wolfSSL_COMP_add_compression_method(int, void*); + +WOLFSSL_API int wolfSSL_get_ex_new_index(long, void*, void*, void*, void*); + +WOLFSSL_API void wolfSSL_set_id_callback(unsigned long (*f)(void)); +WOLFSSL_API void wolfSSL_set_locking_callback(void (*f)(int, int, const char*, + int)); +WOLFSSL_API void wolfSSL_set_dynlock_create_callback(WOLFSSL_dynlock_value* (*f) + (const char*, int)); +WOLFSSL_API void wolfSSL_set_dynlock_lock_callback(void (*f)(int, + WOLFSSL_dynlock_value*, const char*, int)); +WOLFSSL_API void wolfSSL_set_dynlock_destroy_callback(void (*f) + (WOLFSSL_dynlock_value*, const char*, int)); +WOLFSSL_API int wolfSSL_num_locks(void); + +WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_STORE_CTX_get_current_cert( + WOLFSSL_X509_STORE_CTX*); +WOLFSSL_API int wolfSSL_X509_STORE_CTX_get_error(WOLFSSL_X509_STORE_CTX*); +WOLFSSL_API int wolfSSL_X509_STORE_CTX_get_error_depth(WOLFSSL_X509_STORE_CTX*); + +WOLFSSL_API char* wolfSSL_X509_NAME_oneline(WOLFSSL_X509_NAME*, char*, int); +WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_get_issuer_name(WOLFSSL_X509*); +WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_get_subject_name(WOLFSSL_X509*); +WOLFSSL_API int wolfSSL_X509_ext_isSet_by_NID(WOLFSSL_X509*, int); +WOLFSSL_API int wolfSSL_X509_ext_get_critical_by_NID(WOLFSSL_X509*, int); +WOLFSSL_API int wolfSSL_X509_get_isCA(WOLFSSL_X509*); +WOLFSSL_API int wolfSSL_X509_get_isSet_pathLength(WOLFSSL_X509*); +WOLFSSL_API unsigned int wolfSSL_X509_get_pathLength(WOLFSSL_X509*); +WOLFSSL_API unsigned int wolfSSL_X509_get_keyUsage(WOLFSSL_X509*); +WOLFSSL_API unsigned char* wolfSSL_X509_get_authorityKeyID( + WOLFSSL_X509*, unsigned char*, int*); +WOLFSSL_API unsigned char* wolfSSL_X509_get_subjectKeyID( + WOLFSSL_X509*, unsigned char*, int*); +WOLFSSL_API int wolfSSL_X509_NAME_entry_count(WOLFSSL_X509_NAME*); +WOLFSSL_API int wolfSSL_X509_NAME_get_text_by_NID( + WOLFSSL_X509_NAME*, int, char*, int); +WOLFSSL_API int wolfSSL_X509_NAME_get_index_by_NID( + WOLFSSL_X509_NAME*, int, int); +WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_X509_NAME_ENTRY_get_data(WOLFSSL_X509_NAME_ENTRY*); +WOLFSSL_API char* wolfSSL_ASN1_STRING_data(WOLFSSL_ASN1_STRING*); +WOLFSSL_API int wolfSSL_ASN1_STRING_length(WOLFSSL_ASN1_STRING*); +WOLFSSL_API int wolfSSL_X509_verify_cert(WOLFSSL_X509_STORE_CTX*); +WOLFSSL_API const char* wolfSSL_X509_verify_cert_error_string(long); +WOLFSSL_API int wolfSSL_X509_get_signature_type(WOLFSSL_X509*); +WOLFSSL_API int wolfSSL_X509_get_signature(WOLFSSL_X509*, unsigned char*, int*); + +WOLFSSL_API int wolfSSL_X509_LOOKUP_add_dir(WOLFSSL_X509_LOOKUP*,const char*,long); +WOLFSSL_API int wolfSSL_X509_LOOKUP_load_file(WOLFSSL_X509_LOOKUP*, const char*, + long); +WOLFSSL_API WOLFSSL_X509_LOOKUP_METHOD* wolfSSL_X509_LOOKUP_hash_dir(void); +WOLFSSL_API WOLFSSL_X509_LOOKUP_METHOD* wolfSSL_X509_LOOKUP_file(void); + +WOLFSSL_API WOLFSSL_X509_LOOKUP* wolfSSL_X509_STORE_add_lookup(WOLFSSL_X509_STORE*, + WOLFSSL_X509_LOOKUP_METHOD*); +WOLFSSL_API WOLFSSL_X509_STORE* wolfSSL_X509_STORE_new(void); +WOLFSSL_API void wolfSSL_X509_STORE_free(WOLFSSL_X509_STORE*); +WOLFSSL_API int wolfSSL_X509_STORE_add_cert( + WOLFSSL_X509_STORE*, WOLFSSL_X509*); +WOLFSSL_API WOLFSSL_STACK* wolfSSL_X509_STORE_CTX_get_chain( + WOLFSSL_X509_STORE_CTX* ctx); +WOLFSSL_API int wolfSSL_X509_STORE_set_flags(WOLFSSL_X509_STORE* store, + unsigned long flag); +WOLFSSL_API int wolfSSL_X509_STORE_set_default_paths(WOLFSSL_X509_STORE*); +WOLFSSL_API int wolfSSL_X509_STORE_get_by_subject(WOLFSSL_X509_STORE_CTX*, + int, WOLFSSL_X509_NAME*, WOLFSSL_X509_OBJECT*); +WOLFSSL_API WOLFSSL_X509_STORE_CTX* wolfSSL_X509_STORE_CTX_new(void); +WOLFSSL_API int wolfSSL_X509_STORE_CTX_init(WOLFSSL_X509_STORE_CTX*, + WOLFSSL_X509_STORE*, WOLFSSL_X509*, WOLF_STACK_OF(WOLFSSL_X509)*); +WOLFSSL_API void wolfSSL_X509_STORE_CTX_free(WOLFSSL_X509_STORE_CTX*); +WOLFSSL_API void wolfSSL_X509_STORE_CTX_cleanup(WOLFSSL_X509_STORE_CTX*); + +WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_lastUpdate(WOLFSSL_X509_CRL*); +WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_nextUpdate(WOLFSSL_X509_CRL*); + +WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_X509_get_pubkey(WOLFSSL_X509*); +WOLFSSL_API int wolfSSL_X509_CRL_verify(WOLFSSL_X509_CRL*, WOLFSSL_EVP_PKEY*); +WOLFSSL_API void wolfSSL_X509_STORE_CTX_set_error(WOLFSSL_X509_STORE_CTX*, + int); +WOLFSSL_API void wolfSSL_X509_OBJECT_free_contents(WOLFSSL_X509_OBJECT*); +WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PrivateKey(int type, + WOLFSSL_EVP_PKEY** out, const unsigned char **in, long inSz); +WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_PKEY_new(void); +WOLFSSL_API void wolfSSL_EVP_PKEY_free(WOLFSSL_EVP_PKEY*); +WOLFSSL_API int wolfSSL_X509_cmp_current_time(const WOLFSSL_ASN1_TIME*); +WOLFSSL_API int wolfSSL_sk_X509_REVOKED_num(WOLFSSL_X509_REVOKED*); + +WOLFSSL_API WOLFSSL_X509_REVOKED* wolfSSL_X509_CRL_get_REVOKED(WOLFSSL_X509_CRL*); +WOLFSSL_API WOLFSSL_X509_REVOKED* wolfSSL_sk_X509_REVOKED_value( + WOLFSSL_X509_REVOKED*,int); +WOLFSSL_API WOLFSSL_ASN1_INTEGER* wolfSSL_X509_get_serialNumber(WOLFSSL_X509*); + +WOLFSSL_API int wolfSSL_ASN1_TIME_print(WOLFSSL_BIO*, const WOLFSSL_ASN1_TIME*); + +WOLFSSL_API int wolfSSL_ASN1_INTEGER_cmp(const WOLFSSL_ASN1_INTEGER*, + const WOLFSSL_ASN1_INTEGER*); +WOLFSSL_API long wolfSSL_ASN1_INTEGER_get(const WOLFSSL_ASN1_INTEGER*); + +#ifdef OPENSSL_EXTRA +WOLFSSL_API WOLFSSL_BIGNUM *wolfSSL_ASN1_INTEGER_to_BN(const WOLFSSL_ASN1_INTEGER *ai, + WOLFSSL_BIGNUM *bn); +WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_load_client_CA_file(const char*); +#endif + +WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_SSL_CTX_get_client_CA_list( + const WOLFSSL_CTX *s); +WOLFSSL_API void wolfSSL_CTX_set_client_CA_list(WOLFSSL_CTX*, + WOLF_STACK_OF(WOLFSSL_X509_NAME)*); +WOLFSSL_API void* wolfSSL_X509_STORE_CTX_get_ex_data(WOLFSSL_X509_STORE_CTX*, int); +WOLFSSL_API int wolfSSL_get_ex_data_X509_STORE_CTX_idx(void); +WOLFSSL_API void* wolfSSL_get_ex_data(const WOLFSSL*, int); + +WOLFSSL_API void wolfSSL_CTX_set_default_passwd_cb_userdata(WOLFSSL_CTX*, + void* userdata); +WOLFSSL_API void wolfSSL_CTX_set_default_passwd_cb(WOLFSSL_CTX*, + pem_password_cb*); + + +WOLFSSL_API void wolfSSL_CTX_set_info_callback(WOLFSSL_CTX*, + void (*)(const WOLFSSL* ssl, int type, int val)); + +WOLFSSL_API unsigned long wolfSSL_ERR_peek_error(void); +WOLFSSL_API int wolfSSL_GET_REASON(int); + +WOLFSSL_API char* wolfSSL_alert_type_string_long(int); +WOLFSSL_API char* wolfSSL_alert_desc_string_long(int); +WOLFSSL_API char* wolfSSL_state_string_long(const WOLFSSL*); + +WOLFSSL_API WOLFSSL_RSA* wolfSSL_RSA_generate_key(int, unsigned long, + void(*)(int, int, void*), void*); +WOLFSSL_API void wolfSSL_CTX_set_tmp_rsa_callback(WOLFSSL_CTX*, + WOLFSSL_RSA*(*)(WOLFSSL*, int, int)); + +WOLFSSL_API int wolfSSL_PEM_def_callback(char*, int num, int w, void* key); + +WOLFSSL_API long wolfSSL_CTX_sess_accept(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_CTX_sess_connect(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_CTX_sess_accept_good(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_CTX_sess_connect_good(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_CTX_sess_accept_renegotiate(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_CTX_sess_connect_renegotiate(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_CTX_sess_hits(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_CTX_sess_cb_hits(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_CTX_sess_cache_full(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_CTX_sess_misses(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_CTX_sess_timeouts(WOLFSSL_CTX*); +WOLFSSL_API long wolfSSL_CTX_sess_number(WOLFSSL_CTX*); + +WOLFSSL_API long wolfSSL_CTX_add_extra_chain_cert(WOLFSSL_CTX*, WOLFSSL_X509*); +WOLFSSL_API long wolfSSL_CTX_sess_set_cache_size(WOLFSSL_CTX*, long); +WOLFSSL_API long wolfSSL_CTX_sess_get_cache_size(WOLFSSL_CTX*); + +WOLFSSL_API long wolfSSL_CTX_get_session_cache_mode(WOLFSSL_CTX*); +WOLFSSL_API int wolfSSL_CTX_get_read_ahead(WOLFSSL_CTX*); +WOLFSSL_API int wolfSSL_CTX_set_read_ahead(WOLFSSL_CTX*, int v); +WOLFSSL_API long wolfSSL_CTX_set_tlsext_status_arg(WOLFSSL_CTX*, void* arg); +WOLFSSL_API long wolfSSL_CTX_set_tlsext_opaque_prf_input_callback_arg( + WOLFSSL_CTX*, void* arg); + +WOLFSSL_API unsigned long wolfSSL_set_options(WOLFSSL *s, unsigned long op); +WOLFSSL_API unsigned long wolfSSL_get_options(const WOLFSSL *s); +WOLFSSL_API long wolfSSL_clear_num_renegotiations(WOLFSSL *s); +WOLFSSL_API long wolfSSL_total_renegotiations(WOLFSSL *s); +WOLFSSL_API long wolfSSL_set_tmp_dh(WOLFSSL *s, WOLFSSL_DH *dh); +WOLFSSL_API long wolfSSL_set_tlsext_debug_arg(WOLFSSL *s, void *arg); +WOLFSSL_API long wolfSSL_set_tlsext_status_type(WOLFSSL *s, int type); +WOLFSSL_API long wolfSSL_set_tlsext_status_exts(WOLFSSL *s, void *arg); +WOLFSSL_API long wolfSSL_get_tlsext_status_ids(WOLFSSL *s, void *arg); +WOLFSSL_API long wolfSSL_set_tlsext_status_ids(WOLFSSL *s, void *arg); +WOLFSSL_API long wolfSSL_get_tlsext_status_ocsp_resp(WOLFSSL *s, unsigned char **resp); +WOLFSSL_API long wolfSSL_set_tlsext_status_ocsp_resp(WOLFSSL *s, unsigned char *resp, int len); + +WOLFSSL_API void wolfSSL_CONF_modules_unload(int all); +WOLFSSL_API long wolfSSL_get_tlsext_status_exts(WOLFSSL *s, void *arg); +WOLFSSL_API long wolfSSL_get_verify_result(const WOLFSSL *ssl); + +#define WOLFSSL_DEFAULT_CIPHER_LIST "" /* default all */ +#define WOLFSSL_RSA_F4 0x10001L + +enum { + WOLFSSL_OCSP_URL_OVERRIDE = 1, + WOLFSSL_OCSP_NO_NONCE = 2, + WOLFSSL_OCSP_CHECKALL = 4, + + WOLFSSL_CRL_CHECKALL = 1, + WOLFSSL_CRL_CHECK = 27, +}; + +#ifdef OPENSSL_EXTRA +/* seperated out from other enums because of size */ +enum { + SSL_OP_MICROSOFT_SESS_ID_BUG = 0x00000001, + SSL_OP_NETSCAPE_CHALLENGE_BUG = 0x00000002, + SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG = 0x00000004, + SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG = 0x00000008, + SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER = 0x00000010, + SSL_OP_MSIE_SSLV2_RSA_PADDING = 0x00000020, + SSL_OP_SSLEAY_080_CLIENT_DH_BUG = 0x00000040, + SSL_OP_TLS_D5_BUG = 0x00000080, + SSL_OP_TLS_BLOCK_PADDING_BUG = 0x00000100, + SSL_OP_TLS_ROLLBACK_BUG = 0x00000200, + SSL_OP_ALL = 0x00000400, + SSL_OP_EPHEMERAL_RSA = 0x00000800, + SSL_OP_NO_SSLv3 = 0x00001000, + SSL_OP_NO_TLSv1 = 0x00002000, + SSL_OP_PKCS1_CHECK_1 = 0x00004000, + SSL_OP_PKCS1_CHECK_2 = 0x00008000, + SSL_OP_NETSCAPE_CA_DN_BUG = 0x00010000, + SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG = 0x00020000, + SSL_OP_SINGLE_DH_USE = 0x00040000, + SSL_OP_NO_TICKET = 0x00080000, + SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS = 0x00100000, + SSL_OP_NO_QUERY_MTU = 0x00200000, + SSL_OP_COOKIE_EXCHANGE = 0x00400000, + SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION = 0x00800000, + SSL_OP_SINGLE_ECDH_USE = 0x01000000, + SSL_OP_CIPHER_SERVER_PREFERENCE = 0x02000000, + SSL_OP_NO_TLSv1_1 = 0x04000000, + SSL_OP_NO_TLSv1_2 = 0x08000000, + SSL_OP_NO_COMPRESSION = 0x10000000, + SSL_OP_NO_TLSv1_3 = 0x20000000, +}; + +enum { +#ifdef HAVE_OCSP + /* OCSP Flags */ + OCSP_NOCERTS = 1, + OCSP_NOINTERN = 2, + OCSP_NOSIGS = 4, + OCSP_NOCHAIN = 8, + OCSP_NOVERIFY = 16, + OCSP_NOEXPLICIT = 32, + OCSP_NOCASIGN = 64, + OCSP_NODELEGATED = 128, + OCSP_NOCHECKS = 256, + OCSP_TRUSTOTHER = 512, + OCSP_RESPID_KEY = 1024, + OCSP_NOTIME = 2048, + + /* OCSP Types */ + OCSP_CERTID = 2, + OCSP_REQUEST = 4, + OCSP_RESPONSE = 8, + OCSP_BASICRESP = 16, +#endif + + ASN1_GENERALIZEDTIME = 4, + SSL_MAX_SSL_SESSION_ID_LENGTH = 32, + + EVP_R_BAD_DECRYPT = 2, + + SSL_ST_CONNECT = 0x1000, + SSL_ST_ACCEPT = 0x2000, + + SSL_CB_LOOP = 0x01, + SSL_CB_EXIT = 0x02, + SSL_CB_READ = 0x04, + SSL_CB_WRITE = 0x08, + SSL_CB_HANDSHAKE_START = 0x10, + SSL_CB_HANDSHAKE_DONE = 0x20, + SSL_CB_ALERT = 0x4000, + SSL_CB_READ_ALERT = (SSL_CB_ALERT | SSL_CB_READ), + SSL_CB_WRITE_ALERT = (SSL_CB_ALERT | SSL_CB_WRITE), + SSL_CB_ACCEPT_LOOP = (SSL_ST_ACCEPT | SSL_CB_LOOP), + SSL_CB_ACCEPT_EXIT = (SSL_ST_ACCEPT | SSL_CB_EXIT), + SSL_CB_CONNECT_LOOP = (SSL_ST_CONNECT | SSL_CB_LOOP), + SSL_CB_CONNECT_EXIT = (SSL_ST_CONNECT | SSL_CB_EXIT), + + SSL_MODE_ENABLE_PARTIAL_WRITE = 2, + + BIO_FLAGS_BASE64_NO_NL = 1, + BIO_CLOSE = 1, + BIO_NOCLOSE = 0, + + NID_undef = 0, + + X509_FILETYPE_PEM = 8, + X509_LU_X509 = 9, + X509_LU_CRL = 12, + + X509_V_OK = 0, + X509_V_ERR_CRL_SIGNATURE_FAILURE = 13, + X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD = 14, + X509_V_ERR_CRL_HAS_EXPIRED = 15, + X509_V_ERR_CERT_REVOKED = 16, + X509_V_ERR_CERT_CHAIN_TOO_LONG = 17, + X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT = 18, + X509_V_ERR_CERT_NOT_YET_VALID = 19, + X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD = 20, + X509_V_ERR_CERT_HAS_EXPIRED = 21, + X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD = 22, + X509_V_ERR_CERT_REJECTED = 23, + /* Required for Nginx */ + X509_V_ERR_DEPTH_ZERO_SELF_SIGNED_CERT = 24, + X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN = 25, + X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY = 26, + X509_V_ERR_CERT_UNTRUSTED = 27, + X509_V_ERR_UNABLE_TO_VERIFY_LEAF_SIGNATURE = 28, + X509_V_ERR_SUBJECT_ISSUER_MISMATCH = 29, + /* additional X509_V_ERR_* enums not used in wolfSSL */ + X509_V_ERR_UNABLE_TO_GET_CRL, + X509_V_ERR_UNABLE_TO_DECRYPT_CERT_SIGNATURE, + X509_V_ERR_UNABLE_TO_DECRYPT_CRL_SIGNATURE, + X509_V_ERR_UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY, + X509_V_ERR_CERT_SIGNATURE_FAILURE, + X509_V_ERR_CRL_NOT_YET_VALID, + X509_V_ERR_ERROR_IN_CRL_LAST_UPDATE_FIELD, + X509_V_ERR_OUT_OF_MEM, + X509_V_ERR_INVALID_CA, + X509_V_ERR_PATH_LENGTH_EXCEEDED, + X509_V_ERR_INVALID_PURPOSE, + X509_V_ERR_AKID_SKID_MISMATCH, + X509_V_ERR_AKID_ISSUER_SERIAL_MISMATCH, + X509_V_ERR_KEYUSAGE_NO_CERTSIGN, + X509_V_ERR_UNABLE_TO_GET_CRL_ISSUER, + X509_V_ERR_UNHANDLED_CRITICAL_EXTENSION, + X509_V_ERR_KEYUSAGE_NO_CRL_SIGN, + X509_V_ERR_UNHANDLED_CRITICAL_CRL_EXTENSION, + X509_V_ERR_INVALID_NON_CA, + X509_V_ERR_PROXY_PATH_LENGTH_EXCEEDED, + X509_V_ERR_KEYUSAGE_NO_DIGITAL_SIGNATURE, + X509_V_ERR_PROXY_CERTIFICATES_NOT_ALLOWED, + X509_V_ERR_INVALID_EXTENSION, + X509_V_ERR_INVALID_POLICY_EXTENSION, + X509_V_ERR_NO_EXPLICIT_POLICY, + X509_V_ERR_UNNESTED_RESOURCE, + + XN_FLAG_SPC_EQ = (1 << 23), + XN_FLAG_ONELINE = 0, + XN_FLAG_RFC2253 = 1, + + CRYPTO_LOCK = 1, + CRYPTO_NUM_LOCKS = 10, + + ASN1_STRFLGS_ESC_MSB = 4 +}; +#endif + +/* extras end */ + +#if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) +/* wolfSSL extension, provide last error from SSL_get_error + since not using thread storage error queue */ +#include +WOLFSSL_API void wolfSSL_ERR_print_errors_fp(FILE*, int err); +#if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE) +WOLFSSL_API void wolfSSL_ERR_dump_errors_fp(FILE* fp); +#endif +#endif + + +#ifndef NO_OLD_SSL_NAMES + #define SSL_ERROR_NONE WOLFSSL_ERROR_NONE + #define SSL_FAILURE WOLFSSL_FAILURE + #define SSL_SUCCESS WOLFSSL_SUCCESS + #define SSL_SHUTDOWN_NOT_DONE WOLFSSL_SHUTDOWN_NOT_DONE + + #define SSL_ALPN_NOT_FOUND WOLFSSL_ALPN_NOT_FOUND + #define SSL_BAD_CERTTYPE WOLFSSL_BAD_CERTTYPE + #define SSL_BAD_STAT WOLFSSL_BAD_STAT + #define SSL_BAD_PATH WOLFSSL_BAD_PATH + #define SSL_BAD_FILETYPE WOLFSSL_BAD_FILETYPE + #define SSL_BAD_FILE WOLFSSL_BAD_FILE + #define SSL_NOT_IMPLEMENTED WOLFSSL_NOT_IMPLEMENTED + #define SSL_UNKNOWN WOLFSSL_UNKNOWN + #define SSL_FATAL_ERROR WOLFSSL_FATAL_ERROR + + #define SSL_FILETYPE_ASN1 WOLFSSL_FILETYPE_ASN1 + #define SSL_FILETYPE_PEM WOLFSSL_FILETYPE_PEM + #define SSL_FILETYPE_DEFAULT WOLFSSL_FILETYPE_DEFAULT + #define SSL_FILETYPE_RAW WOLFSSL_FILETYPE_RAW + + #define SSL_VERIFY_NONE WOLFSSL_VERIFY_NONE + #define SSL_VERIFY_PEER WOLFSSL_VERIFY_PEER + #define SSL_VERIFY_FAIL_IF_NO_PEER_CERT WOLFSSL_VERIFY_FAIL_IF_NO_PEER_CERT + #define SSL_VERIFY_CLIENT_ONCE WOLFSSL_VERIFY_CLIENT_ONCE + #define SSL_VERIFY_FAIL_EXCEPT_PSK WOLFSSL_VERIFY_FAIL_EXCEPT_PSK + + #define SSL_SESS_CACHE_OFF WOLFSSL_SESS_CACHE_OFF + #define SSL_SESS_CACHE_CLIENT WOLFSSL_SESS_CACHE_CLIENT + #define SSL_SESS_CACHE_SERVER WOLFSSL_SESS_CACHE_SERVER + #define SSL_SESS_CACHE_BOTH WOLFSSL_SESS_CACHE_BOTH + #define SSL_SESS_CACHE_NO_AUTO_CLEAR WOLFSSL_SESS_CACHE_NO_AUTO_CLEAR + #define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP WOLFSSL_SESS_CACHE_NO_INTERNAL_LOOKUP + #define SSL_SESS_CACHE_NO_INTERNAL_STORE WOLFSSL_SESS_CACHE_NO_INTERNAL_STORE + #define SSL_SESS_CACHE_NO_INTERNAL WOLFSSL_SESS_CACHE_NO_INTERNAL + + #define SSL_ERROR_WANT_READ WOLFSSL_ERROR_WANT_READ + #define SSL_ERROR_WANT_WRITE WOLFSSL_ERROR_WANT_WRITE + #define SSL_ERROR_WANT_CONNECT WOLFSSL_ERROR_WANT_CONNECT + #define SSL_ERROR_WANT_ACCEPT WOLFSSL_ERROR_WANT_ACCEPT + #define SSL_ERROR_SYSCALL WOLFSSL_ERROR_SYSCALL + #define SSL_ERROR_WANT_X509_LOOKUP WOLFSSL_ERROR_WANT_X509_LOOKUP + #define SSL_ERROR_ZERO_RETURN WOLFSSL_ERROR_ZERO_RETURN + #define SSL_ERROR_SSL WOLFSSL_ERROR_SSL + + #define SSL_SENT_SHUTDOWN WOLFSSL_SENT_SHUTDOWN + #define SSL_RECEIVED_SHUTDOWN WOLFSSL_RECEIVED_SHUTDOWN + #define SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER WOLFSSL_MODE_ACCEPT_MOVING_WRITE_BUFFER + #define SSL_OP_NO_SSLv2 WOLFSSL_OP_NO_SSLv2 + + #define SSL_R_SSL_HANDSHAKE_FAILURE WOLFSSL_R_SSL_HANDSHAKE_FAILURE + #define SSL_R_TLSV1_ALERT_UNKNOWN_CA WOLFSSL_R_TLSV1_ALERT_UNKNOWN_CA + #define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN WOLFSSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN + #define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE WOLFSSL_R_SSLV3_ALERT_BAD_CERTIFICATE + + #define PEM_BUFSIZE WOLF_PEM_BUFSIZE +#endif + +enum { /* ssl Constants */ + WOLFSSL_ERROR_NONE = 0, /* for most functions */ + WOLFSSL_FAILURE = 0, /* for some functions */ + WOLFSSL_SUCCESS = 1, + WOLFSSL_SHUTDOWN_NOT_DONE = 2, /* call wolfSSL_shutdown again to complete */ + + WOLFSSL_ALPN_NOT_FOUND = -9, + WOLFSSL_BAD_CERTTYPE = -8, + WOLFSSL_BAD_STAT = -7, + WOLFSSL_BAD_PATH = -6, + WOLFSSL_BAD_FILETYPE = -5, + WOLFSSL_BAD_FILE = -4, + WOLFSSL_NOT_IMPLEMENTED = -3, + WOLFSSL_UNKNOWN = -2, + WOLFSSL_FATAL_ERROR = -1, + + WOLFSSL_FILETYPE_ASN1 = 2, + WOLFSSL_FILETYPE_PEM = 1, + WOLFSSL_FILETYPE_DEFAULT = 2, /* ASN1 */ + WOLFSSL_FILETYPE_RAW = 3, /* NTRU raw key blob */ + + WOLFSSL_VERIFY_NONE = 0, + WOLFSSL_VERIFY_PEER = 1, + WOLFSSL_VERIFY_FAIL_IF_NO_PEER_CERT = 2, + WOLFSSL_VERIFY_CLIENT_ONCE = 4, + WOLFSSL_VERIFY_FAIL_EXCEPT_PSK = 8, + + WOLFSSL_SESS_CACHE_OFF = 0x0000, + WOLFSSL_SESS_CACHE_CLIENT = 0x0001, + WOLFSSL_SESS_CACHE_SERVER = 0x0002, + WOLFSSL_SESS_CACHE_BOTH = 0x0003, + WOLFSSL_SESS_CACHE_NO_AUTO_CLEAR = 0x0008, + WOLFSSL_SESS_CACHE_NO_INTERNAL_LOOKUP = 0x0100, + WOLFSSL_SESS_CACHE_NO_INTERNAL_STORE = 0x0200, + WOLFSSL_SESS_CACHE_NO_INTERNAL = 0x0300, + + WOLFSSL_ERROR_WANT_READ = 2, + WOLFSSL_ERROR_WANT_WRITE = 3, + WOLFSSL_ERROR_WANT_CONNECT = 7, + WOLFSSL_ERROR_WANT_ACCEPT = 8, + WOLFSSL_ERROR_SYSCALL = 5, + WOLFSSL_ERROR_WANT_X509_LOOKUP = 83, + WOLFSSL_ERROR_ZERO_RETURN = 6, + WOLFSSL_ERROR_SSL = 85, + + WOLFSSL_SENT_SHUTDOWN = 1, + WOLFSSL_RECEIVED_SHUTDOWN = 2, + WOLFSSL_MODE_ACCEPT_MOVING_WRITE_BUFFER = 4, + WOLFSSL_OP_NO_SSLv2 = 8, + + WOLFSSL_R_SSL_HANDSHAKE_FAILURE = 101, + WOLFSSL_R_TLSV1_ALERT_UNKNOWN_CA = 102, + WOLFSSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN = 103, + WOLFSSL_R_SSLV3_ALERT_BAD_CERTIFICATE = 104, + + WOLF_PEM_BUFSIZE = 1024 +}; + +#ifndef NO_PSK + typedef unsigned int (*wc_psk_client_callback)(WOLFSSL*, const char*, char*, + unsigned int, unsigned char*, unsigned int); + WOLFSSL_API void wolfSSL_CTX_set_psk_client_callback(WOLFSSL_CTX*, + wc_psk_client_callback); + WOLFSSL_API void wolfSSL_set_psk_client_callback(WOLFSSL*, + wc_psk_client_callback); + + WOLFSSL_API const char* wolfSSL_get_psk_identity_hint(const WOLFSSL*); + WOLFSSL_API const char* wolfSSL_get_psk_identity(const WOLFSSL*); + + WOLFSSL_API int wolfSSL_CTX_use_psk_identity_hint(WOLFSSL_CTX*, const char*); + WOLFSSL_API int wolfSSL_use_psk_identity_hint(WOLFSSL*, const char*); + + typedef unsigned int (*wc_psk_server_callback)(WOLFSSL*, const char*, + unsigned char*, unsigned int); + WOLFSSL_API void wolfSSL_CTX_set_psk_server_callback(WOLFSSL_CTX*, + wc_psk_server_callback); + WOLFSSL_API void wolfSSL_set_psk_server_callback(WOLFSSL*, + wc_psk_server_callback); + + #define PSK_TYPES_DEFINED +#endif /* NO_PSK */ + + +#ifdef HAVE_ANON + WOLFSSL_API int wolfSSL_CTX_allow_anon_cipher(WOLFSSL_CTX*); +#endif /* HAVE_ANON */ + + +/* extra begins */ +#ifdef OPENSSL_EXTRA +enum { /* ERR Constants */ + ERR_TXT_STRING = 1 +}; + +/* bio misc */ +enum { + WOLFSSL_BIO_ERROR = -1, + WOLFSSL_BIO_UNSET = -2, + WOLFSSL_BIO_SIZE = 17000 /* default BIO write size if not set */ +}; + +#endif + +WOLFSSL_API unsigned long wolfSSL_ERR_get_error_line_data(const char**, int*, + const char**, int *); + +WOLFSSL_API unsigned long wolfSSL_ERR_get_error(void); +WOLFSSL_API void wolfSSL_ERR_clear_error(void); + + +WOLFSSL_API int wolfSSL_RAND_status(void); +WOLFSSL_API int wolfSSL_RAND_bytes(unsigned char* buf, int num); +WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_server_method(void); +WOLFSSL_API long wolfSSL_CTX_set_options(WOLFSSL_CTX*, long); +#ifndef NO_CERTS + WOLFSSL_API int wolfSSL_CTX_check_private_key(WOLFSSL_CTX*); +#endif /* !NO_CERTS */ + +WOLFSSL_API void wolfSSL_ERR_free_strings(void); +WOLFSSL_API void wolfSSL_ERR_remove_state(unsigned long); +WOLFSSL_API void wolfSSL_EVP_cleanup(void); +WOLFSSL_API int wolfSSL_clear(WOLFSSL* ssl); +WOLFSSL_API int wolfSSL_state(WOLFSSL* ssl); + +WOLFSSL_API void wolfSSL_cleanup_all_ex_data(void); +WOLFSSL_API long wolfSSL_CTX_set_mode(WOLFSSL_CTX* ctx, long mode); +WOLFSSL_API long wolfSSL_CTX_get_mode(WOLFSSL_CTX* ctx); +WOLFSSL_API void wolfSSL_CTX_set_default_read_ahead(WOLFSSL_CTX* ctx, int m); +WOLFSSL_API long wolfSSL_SSL_get_mode(WOLFSSL* ssl); + + +WOLFSSL_API int wolfSSL_CTX_set_default_verify_paths(WOLFSSL_CTX*); +WOLFSSL_API int wolfSSL_CTX_set_session_id_context(WOLFSSL_CTX*, + const unsigned char*, unsigned int); +WOLFSSL_API WOLFSSL_X509* wolfSSL_get_peer_certificate(WOLFSSL* ssl); + +WOLFSSL_API int wolfSSL_want_read(WOLFSSL*); +WOLFSSL_API int wolfSSL_want_write(WOLFSSL*); + +WOLFSSL_API int wolfSSL_BIO_printf(WOLFSSL_BIO*, const char*, ...); +WOLFSSL_API int wolfSSL_ASN1_UTCTIME_print(WOLFSSL_BIO*, + const WOLFSSL_ASN1_UTCTIME*); +WOLFSSL_API int wolfSSL_ASN1_GENERALIZEDTIME_print(WOLFSSL_BIO*, + const WOLFSSL_ASN1_GENERALIZEDTIME*); +WOLFSSL_API int wolfSSL_sk_num(WOLFSSL_X509_REVOKED*); +WOLFSSL_API void* wolfSSL_sk_value(WOLFSSL_X509_REVOKED*, int); + +/* stunnel 4.28 needs */ +WOLFSSL_API void* wolfSSL_CTX_get_ex_data(const WOLFSSL_CTX*, int); +WOLFSSL_API int wolfSSL_CTX_set_ex_data(WOLFSSL_CTX*, int, void*); +WOLFSSL_API void wolfSSL_CTX_sess_set_get_cb(WOLFSSL_CTX*, + WOLFSSL_SESSION*(*f)(WOLFSSL*, unsigned char*, int, int*)); +WOLFSSL_API void wolfSSL_CTX_sess_set_new_cb(WOLFSSL_CTX*, + int (*f)(WOLFSSL*, WOLFSSL_SESSION*)); +WOLFSSL_API void wolfSSL_CTX_sess_set_remove_cb(WOLFSSL_CTX*, + void (*f)(WOLFSSL_CTX*, WOLFSSL_SESSION*)); + +WOLFSSL_API int wolfSSL_i2d_SSL_SESSION(WOLFSSL_SESSION*,unsigned char**); +WOLFSSL_API WOLFSSL_SESSION* wolfSSL_d2i_SSL_SESSION(WOLFSSL_SESSION**, + const unsigned char**, long); + +WOLFSSL_API long wolfSSL_SESSION_get_timeout(const WOLFSSL_SESSION*); +WOLFSSL_API long wolfSSL_SESSION_get_time(const WOLFSSL_SESSION*); +WOLFSSL_API int wolfSSL_CTX_get_ex_new_index(long, void*, void*, void*, void*); + +/* extra ends */ + + +/* wolfSSL extensions */ + +/* call before SSL_connect, if verifying will add name check to + date check and signature check */ +WOLFSSL_API int wolfSSL_check_domain_name(WOLFSSL* ssl, const char* dn); + +/* need to call once to load library (session cache) */ +WOLFSSL_API int wolfSSL_Init(void); +/* call when done to cleanup/free session cache mutex / resources */ +WOLFSSL_API int wolfSSL_Cleanup(void); + +/* which library version do we have */ +WOLFSSL_API const char* wolfSSL_lib_version(void); +/* which library version do we have in hex */ +WOLFSSL_API unsigned int wolfSSL_lib_version_hex(void); + +/* turn logging on, only if compiled in */ +WOLFSSL_API int wolfSSL_Debugging_ON(void); +/* turn logging off */ +WOLFSSL_API void wolfSSL_Debugging_OFF(void); + +/* do accept or connect depedning on side */ +WOLFSSL_API int wolfSSL_negotiate(WOLFSSL* ssl); +/* turn on wolfSSL data compression */ +WOLFSSL_API int wolfSSL_set_compression(WOLFSSL* ssl); + +WOLFSSL_API int wolfSSL_set_timeout(WOLFSSL*, unsigned int); +WOLFSSL_API int wolfSSL_CTX_set_timeout(WOLFSSL_CTX*, unsigned int); + +/* get wolfSSL peer X509_CHAIN */ +WOLFSSL_API WOLFSSL_X509_CHAIN* wolfSSL_get_peer_chain(WOLFSSL* ssl); +#ifdef WOLFSSL_ALT_CERT_CHAINS +WOLFSSL_API int wolfSSL_is_peer_alt_cert_chain(const WOLFSSL* ssl); +/* get wolfSSL alternate peer X509_CHAIN */ +WOLFSSL_API WOLFSSL_X509_CHAIN* wolfSSL_get_peer_alt_chain(WOLFSSL* ssl); +#endif +/* peer chain count */ +WOLFSSL_API int wolfSSL_get_chain_count(WOLFSSL_X509_CHAIN* chain); +/* index cert length */ +WOLFSSL_API int wolfSSL_get_chain_length(WOLFSSL_X509_CHAIN*, int idx); +/* index cert */ +WOLFSSL_API unsigned char* wolfSSL_get_chain_cert(WOLFSSL_X509_CHAIN*, int idx); +/* index cert in X509 */ +WOLFSSL_API WOLFSSL_X509* wolfSSL_get_chain_X509(WOLFSSL_X509_CHAIN*, int idx); +/* free X509 */ +WOLFSSL_API void wolfSSL_FreeX509(WOLFSSL_X509*); +/* get index cert in PEM */ +WOLFSSL_API int wolfSSL_get_chain_cert_pem(WOLFSSL_X509_CHAIN*, int idx, + unsigned char* buf, int inLen, int* outLen); +WOLFSSL_API const unsigned char* wolfSSL_get_sessionID(const WOLFSSL_SESSION* s); +WOLFSSL_API int wolfSSL_X509_get_serial_number(WOLFSSL_X509*,unsigned char*,int*); +WOLFSSL_API char* wolfSSL_X509_get_subjectCN(WOLFSSL_X509*); +WOLFSSL_API const unsigned char* wolfSSL_X509_get_der(WOLFSSL_X509*, int*); +WOLFSSL_API const unsigned char* wolfSSL_X509_notBefore(WOLFSSL_X509*); +WOLFSSL_API const unsigned char* wolfSSL_X509_notAfter(WOLFSSL_X509*); +WOLFSSL_API int wolfSSL_X509_version(WOLFSSL_X509*); + +WOLFSSL_API int wolfSSL_cmp_peer_cert_to_file(WOLFSSL*, const char*); + +WOLFSSL_API char* wolfSSL_X509_get_next_altname(WOLFSSL_X509*); + +WOLFSSL_API WOLFSSL_X509* + wolfSSL_X509_d2i(WOLFSSL_X509** x509, const unsigned char* in, int len); +#ifndef NO_FILESYSTEM + #ifndef NO_STDIO_FILESYSTEM + WOLFSSL_API WOLFSSL_X509* + wolfSSL_X509_d2i_fp(WOLFSSL_X509** x509, FILE* file); + #endif +WOLFSSL_API WOLFSSL_X509* + wolfSSL_X509_load_certificate_file(const char* fname, int format); +#endif +WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_load_certificate_buffer( + const unsigned char* buf, int sz, int format); + +#ifdef WOLFSSL_SEP + WOLFSSL_API unsigned char* + wolfSSL_X509_get_device_type(WOLFSSL_X509*, unsigned char*, int*); + WOLFSSL_API unsigned char* + wolfSSL_X509_get_hw_type(WOLFSSL_X509*, unsigned char*, int*); + WOLFSSL_API unsigned char* + wolfSSL_X509_get_hw_serial_number(WOLFSSL_X509*, unsigned char*, int*); +#endif + +/* connect enough to get peer cert */ +WOLFSSL_API int wolfSSL_connect_cert(WOLFSSL* ssl); + + + +/* PKCS12 compatibility */ +typedef struct WC_PKCS12 WC_PKCS12; +WOLFSSL_API WC_PKCS12* wolfSSL_d2i_PKCS12_bio(WOLFSSL_BIO* bio, + WC_PKCS12** pkcs12); +WOLFSSL_API int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw, + WOLFSSL_EVP_PKEY** pkey, WOLFSSL_X509** cert, WOLF_STACK_OF(WOLFSSL_X509)** ca); +WOLFSSL_API void wolfSSL_PKCS12_PBE_add(void); + + + +#ifndef NO_DH +/* server Diffie-Hellman parameters */ +WOLFSSL_API int wolfSSL_SetTmpDH(WOLFSSL*, const unsigned char* p, int pSz, + const unsigned char* g, int gSz); +WOLFSSL_API int wolfSSL_SetTmpDH_buffer(WOLFSSL*, const unsigned char* b, long sz, + int format); +#ifndef NO_FILESYSTEM + WOLFSSL_API int wolfSSL_SetTmpDH_file(WOLFSSL*, const char* f, int format); +#endif + +/* server ctx Diffie-Hellman parameters */ +WOLFSSL_API int wolfSSL_CTX_SetTmpDH(WOLFSSL_CTX*, const unsigned char* p, + int pSz, const unsigned char* g, int gSz); +WOLFSSL_API int wolfSSL_CTX_SetTmpDH_buffer(WOLFSSL_CTX*, const unsigned char* b, + long sz, int format); + +#ifndef NO_FILESYSTEM + WOLFSSL_API int wolfSSL_CTX_SetTmpDH_file(WOLFSSL_CTX*, const char* f, + int format); +#endif + +WOLFSSL_API int wolfSSL_CTX_SetMinDhKey_Sz(WOLFSSL_CTX*, unsigned short); +WOLFSSL_API int wolfSSL_SetMinDhKey_Sz(WOLFSSL*, unsigned short); +WOLFSSL_API int wolfSSL_GetDhKey_Sz(WOLFSSL*); +#endif /* NO_DH */ + +#ifndef NO_RSA +WOLFSSL_API int wolfSSL_CTX_SetMinRsaKey_Sz(WOLFSSL_CTX*, short); +WOLFSSL_API int wolfSSL_SetMinRsaKey_Sz(WOLFSSL*, short); +#endif /* NO_RSA */ + +#ifdef HAVE_ECC +WOLFSSL_API int wolfSSL_CTX_SetMinEccKey_Sz(WOLFSSL_CTX*, short); +WOLFSSL_API int wolfSSL_SetMinEccKey_Sz(WOLFSSL*, short); +#endif /* NO_RSA */ + +WOLFSSL_API int wolfSSL_SetTmpEC_DHE_Sz(WOLFSSL*, unsigned short); +WOLFSSL_API int wolfSSL_CTX_SetTmpEC_DHE_Sz(WOLFSSL_CTX*, unsigned short); + +/* keyblock size in bytes or -1 */ +/* need to call wolfSSL_KeepArrays before handshake to save keys */ +WOLFSSL_API int wolfSSL_get_keyblock_size(WOLFSSL*); +WOLFSSL_API int wolfSSL_get_keys(WOLFSSL*,unsigned char** ms, unsigned int* msLen, + unsigned char** sr, unsigned int* srLen, + unsigned char** cr, unsigned int* crLen); + +/* Computes EAP-TLS and EAP-TTLS keying material from the master_secret. */ +WOLFSSL_API int wolfSSL_make_eap_keys(WOLFSSL*, void* key, unsigned int len, + const char* label); + + +#ifndef _WIN32 + #ifndef NO_WRITEV + #ifdef __PPU + #include + #include + #elif !defined(WOLFSSL_MDK_ARM) && !defined(WOLFSSL_IAR_ARM) && \ + !defined(WOLFSSL_PICOTCP) && !defined(WOLFSSL_ROWLEY_ARM) && \ + !defined(WOLFSSL_EMBOS) && !defined(WOLFSSL_FROSTED) + #include + #endif + /* allow writev style writing */ + WOLFSSL_API int wolfSSL_writev(WOLFSSL* ssl, const struct iovec* iov, + int iovcnt); + #endif +#endif + + +#ifndef NO_CERTS + /* SSL_CTX versions */ + WOLFSSL_API int wolfSSL_CTX_UnloadCAs(WOLFSSL_CTX*); +#ifdef WOLFSSL_TRUST_PEER_CERT + WOLFSSL_API int wolfSSL_CTX_Unload_trust_peers(WOLFSSL_CTX*); + WOLFSSL_API int wolfSSL_CTX_trust_peer_buffer(WOLFSSL_CTX*, + const unsigned char*, long, int); +#endif + WOLFSSL_API int wolfSSL_CTX_load_verify_buffer(WOLFSSL_CTX*, + const unsigned char*, long, int); + WOLFSSL_API int wolfSSL_CTX_use_certificate_buffer(WOLFSSL_CTX*, + const unsigned char*, long, int); + WOLFSSL_API int wolfSSL_CTX_use_PrivateKey_buffer(WOLFSSL_CTX*, + const unsigned char*, long, int); + WOLFSSL_API int wolfSSL_CTX_use_certificate_chain_buffer_format(WOLFSSL_CTX*, + const unsigned char*, long, int); + WOLFSSL_API int wolfSSL_CTX_use_certificate_chain_buffer(WOLFSSL_CTX*, + const unsigned char*, long); + + /* SSL versions */ + WOLFSSL_API int wolfSSL_use_certificate_buffer(WOLFSSL*, const unsigned char*, + long, int); + WOLFSSL_API int wolfSSL_use_PrivateKey_buffer(WOLFSSL*, const unsigned char*, + long, int); + WOLFSSL_API int wolfSSL_use_certificate_chain_buffer_format(WOLFSSL*, + const unsigned char*, long, int); + WOLFSSL_API int wolfSSL_use_certificate_chain_buffer(WOLFSSL*, + const unsigned char*, long); + WOLFSSL_API int wolfSSL_UnloadCertsKeys(WOLFSSL*); + + #if defined(OPENSSL_EXTRA) && defined(KEEP_OUR_CERT) + WOLFSSL_API WOLFSSL_X509* wolfSSL_get_certificate(WOLFSSL* ssl); + #endif +#endif + +WOLFSSL_API int wolfSSL_CTX_set_group_messages(WOLFSSL_CTX*); +WOLFSSL_API int wolfSSL_set_group_messages(WOLFSSL*); + + +#ifdef HAVE_FUZZER +enum fuzzer_type { + FUZZ_HMAC = 0, + FUZZ_ENCRYPT = 1, + FUZZ_SIGNATURE = 2, + FUZZ_HASH = 3, + FUZZ_HEAD = 4 +}; + +typedef int (*CallbackFuzzer)(WOLFSSL* ssl, const unsigned char* buf, int sz, + int type, void* fuzzCtx); + +WOLFSSL_API void wolfSSL_SetFuzzerCb(WOLFSSL* ssl, CallbackFuzzer cbf, void* fCtx); +#endif + + +WOLFSSL_API int wolfSSL_DTLS_SetCookieSecret(WOLFSSL*, + const unsigned char*, + unsigned int); + + +/* I/O Callback default errors */ +enum IOerrors { + WOLFSSL_CBIO_ERR_GENERAL = -1, /* general unexpected err */ + WOLFSSL_CBIO_ERR_WANT_READ = -2, /* need to call read again */ + WOLFSSL_CBIO_ERR_WANT_WRITE = -2, /* need to call write again */ + WOLFSSL_CBIO_ERR_CONN_RST = -3, /* connection reset */ + WOLFSSL_CBIO_ERR_ISR = -4, /* interrupt */ + WOLFSSL_CBIO_ERR_CONN_CLOSE = -5, /* connection closed or epipe */ + WOLFSSL_CBIO_ERR_TIMEOUT = -6 /* socket timeout */ +}; + + +/* CA cache callbacks */ +enum { + WOLFSSL_SSLV3 = 0, + WOLFSSL_TLSV1 = 1, + WOLFSSL_TLSV1_1 = 2, + WOLFSSL_TLSV1_2 = 3, + WOLFSSL_USER_CA = 1, /* user added as trusted */ + WOLFSSL_CHAIN_CA = 2 /* added to cache from trusted chain */ +}; + +WOLFSSL_API WC_RNG* wolfSSL_GetRNG(WOLFSSL*); + +WOLFSSL_API int wolfSSL_CTX_SetMinVersion(WOLFSSL_CTX* ctx, int version); +WOLFSSL_API int wolfSSL_SetMinVersion(WOLFSSL* ssl, int version); +WOLFSSL_API int wolfSSL_GetObjectSize(void); /* object size based on build */ +WOLFSSL_API int wolfSSL_CTX_GetObjectSize(void); +WOLFSSL_API int wolfSSL_METHOD_GetObjectSize(void); +WOLFSSL_API int wolfSSL_GetOutputSize(WOLFSSL*, int); +WOLFSSL_API int wolfSSL_GetMaxOutputSize(WOLFSSL*); +WOLFSSL_API int wolfSSL_SetVersion(WOLFSSL* ssl, int version); +WOLFSSL_API int wolfSSL_KeyPemToDer(const unsigned char*, int, + unsigned char*, int, const char*); +WOLFSSL_API int wolfSSL_CertPemToDer(const unsigned char*, int, + unsigned char*, int, int); +#if defined(WOLFSSL_CERT_EXT) || defined(WOLFSSL_PUB_PEM_TO_DER) + #ifndef WOLFSSL_PEMPUBKEY_TODER_DEFINED + #ifndef NO_FILESYSTEM + WOLFSSL_API int wolfSSL_PemPubKeyToDer(const char* fileName, + unsigned char* derBuf, int derSz); + #endif + WOLFSSL_API int wolfSSL_PubKeyPemToDer(const unsigned char*, int, + unsigned char*, int); + #define WOLFSSL_PEMPUBKEY_TODER_DEFINED + #endif /* WOLFSSL_PEMPUBKEY_TODER_DEFINED */ +#endif /* WOLFSSL_CERT_EXT || WOLFSSL_PUB_PEM_TO_DER*/ + +typedef void (*CallbackCACache)(unsigned char* der, int sz, int type); +typedef void (*CbMissingCRL)(const char* url); +typedef int (*CbOCSPIO)(void*, const char*, int, + unsigned char*, int, unsigned char**); +typedef void (*CbOCSPRespFree)(void*,unsigned char*); + +#ifdef HAVE_CRL_IO +typedef int (*CbCrlIO)(WOLFSSL_CRL* crl, const char* url, int urlSz); +#endif + +/* User Atomic Record Layer CallBacks */ +typedef int (*CallbackMacEncrypt)(WOLFSSL* ssl, unsigned char* macOut, + const unsigned char* macIn, unsigned int macInSz, int macContent, + int macVerify, unsigned char* encOut, const unsigned char* encIn, + unsigned int encSz, void* ctx); +WOLFSSL_API void wolfSSL_CTX_SetMacEncryptCb(WOLFSSL_CTX*, CallbackMacEncrypt); +WOLFSSL_API void wolfSSL_SetMacEncryptCtx(WOLFSSL* ssl, void *ctx); +WOLFSSL_API void* wolfSSL_GetMacEncryptCtx(WOLFSSL* ssl); + +typedef int (*CallbackDecryptVerify)(WOLFSSL* ssl, + unsigned char* decOut, const unsigned char* decIn, + unsigned int decSz, int content, int verify, unsigned int* padSz, + void* ctx); +WOLFSSL_API void wolfSSL_CTX_SetDecryptVerifyCb(WOLFSSL_CTX*, + CallbackDecryptVerify); +WOLFSSL_API void wolfSSL_SetDecryptVerifyCtx(WOLFSSL* ssl, void *ctx); +WOLFSSL_API void* wolfSSL_GetDecryptVerifyCtx(WOLFSSL* ssl); + +WOLFSSL_API const unsigned char* wolfSSL_GetMacSecret(WOLFSSL*, int); +WOLFSSL_API const unsigned char* wolfSSL_GetClientWriteKey(WOLFSSL*); +WOLFSSL_API const unsigned char* wolfSSL_GetClientWriteIV(WOLFSSL*); +WOLFSSL_API const unsigned char* wolfSSL_GetServerWriteKey(WOLFSSL*); +WOLFSSL_API const unsigned char* wolfSSL_GetServerWriteIV(WOLFSSL*); +WOLFSSL_API int wolfSSL_GetKeySize(WOLFSSL*); +WOLFSSL_API int wolfSSL_GetIVSize(WOLFSSL*); +WOLFSSL_API int wolfSSL_GetSide(WOLFSSL*); +WOLFSSL_API int wolfSSL_IsTLSv1_1(WOLFSSL*); +WOLFSSL_API int wolfSSL_GetBulkCipher(WOLFSSL*); +WOLFSSL_API int wolfSSL_GetCipherBlockSize(WOLFSSL*); +WOLFSSL_API int wolfSSL_GetAeadMacSize(WOLFSSL*); +WOLFSSL_API int wolfSSL_GetHmacSize(WOLFSSL*); +WOLFSSL_API int wolfSSL_GetHmacType(WOLFSSL*); +WOLFSSL_API int wolfSSL_GetCipherType(WOLFSSL*); +WOLFSSL_API int wolfSSL_SetTlsHmacInner(WOLFSSL*, unsigned char*, + unsigned int, int, int); + +/* Atomic User Needs */ +enum { + WOLFSSL_SERVER_END = 0, + WOLFSSL_CLIENT_END = 1, + WOLFSSL_NEITHER_END = 3, + WOLFSSL_BLOCK_TYPE = 2, + WOLFSSL_STREAM_TYPE = 3, + WOLFSSL_AEAD_TYPE = 4, + WOLFSSL_TLS_HMAC_INNER_SZ = 13 /* SEQ_SZ + ENUM + VERSION_SZ + LEN_SZ */ +}; + +/* for GetBulkCipher and internal use */ +enum BulkCipherAlgorithm { + wolfssl_cipher_null, + wolfssl_rc4, + wolfssl_rc2, + wolfssl_des, + wolfssl_triple_des, /* leading 3 (3des) not valid identifier */ + wolfssl_des40, + wolfssl_idea, + wolfssl_aes, + wolfssl_aes_gcm, + wolfssl_aes_ccm, + wolfssl_chacha, + wolfssl_camellia, + wolfssl_hc128, /* wolfSSL extensions */ + wolfssl_rabbit +}; + + +/* for KDF TLS 1.2 mac types */ +enum KDF_MacAlgorithm { + wolfssl_sha256 = 4, /* needs to match internal MACAlgorithm */ + wolfssl_sha384, + wolfssl_sha512 +}; + + +/* Public Key Callback support */ +typedef int (*CallbackEccSign)(WOLFSSL* ssl, + const unsigned char* in, unsigned int inSz, + unsigned char* out, unsigned int* outSz, + const unsigned char* keyDer, unsigned int keySz, + void* ctx); +WOLFSSL_API void wolfSSL_CTX_SetEccSignCb(WOLFSSL_CTX*, CallbackEccSign); +WOLFSSL_API void wolfSSL_SetEccSignCtx(WOLFSSL* ssl, void *ctx); +WOLFSSL_API void* wolfSSL_GetEccSignCtx(WOLFSSL* ssl); + +typedef int (*CallbackEccVerify)(WOLFSSL* ssl, + const unsigned char* sig, unsigned int sigSz, + const unsigned char* hash, unsigned int hashSz, + const unsigned char* keyDer, unsigned int keySz, + int* result, void* ctx); +WOLFSSL_API void wolfSSL_CTX_SetEccVerifyCb(WOLFSSL_CTX*, CallbackEccVerify); +WOLFSSL_API void wolfSSL_SetEccVerifyCtx(WOLFSSL* ssl, void *ctx); +WOLFSSL_API void* wolfSSL_GetEccVerifyCtx(WOLFSSL* ssl); + +struct ecc_key; +typedef int (*CallbackEccSharedSecret)(WOLFSSL* ssl, struct ecc_key* otherKey, + unsigned char* pubKeyDer, unsigned int* pubKeySz, + unsigned char* out, unsigned int* outlen, + int side, void* ctx); /* side is WOLFSSL_CLIENT_END or WOLFSSL_SERVER_END */ +WOLFSSL_API void wolfSSL_CTX_SetEccSharedSecretCb(WOLFSSL_CTX*, CallbackEccSharedSecret); +WOLFSSL_API void wolfSSL_SetEccSharedSecretCtx(WOLFSSL* ssl, void *ctx); +WOLFSSL_API void* wolfSSL_GetEccSharedSecretCtx(WOLFSSL* ssl); + +struct ed25519_key; +typedef int (*CallbackEd25519Sign)(WOLFSSL* ssl, + const unsigned char* in, unsigned int inSz, + unsigned char* out, unsigned int* outSz, + const unsigned char* keyDer, unsigned int keySz, + void* ctx); +WOLFSSL_API void wolfSSL_CTX_SetEd25519SignCb(WOLFSSL_CTX*, + CallbackEd25519Sign); +WOLFSSL_API void wolfSSL_SetEd25519SignCtx(WOLFSSL* ssl, void *ctx); +WOLFSSL_API void* wolfSSL_GetEd25519SignCtx(WOLFSSL* ssl); + +typedef int (*CallbackEd25519Verify)(WOLFSSL* ssl, + const unsigned char* sig, unsigned int sigSz, + const unsigned char* msg, unsigned int msgSz, + const unsigned char* keyDer, unsigned int keySz, + int* result, void* ctx); +WOLFSSL_API void wolfSSL_CTX_SetEd25519VerifyCb(WOLFSSL_CTX*, + CallbackEd25519Verify); +WOLFSSL_API void wolfSSL_SetEd25519VerifyCtx(WOLFSSL* ssl, void *ctx); +WOLFSSL_API void* wolfSSL_GetEd25519VerifyCtx(WOLFSSL* ssl); + +struct curve25519_key; +typedef int (*CallbackX25519SharedSecret)(WOLFSSL* ssl, + struct curve25519_key* otherKey, + unsigned char* pubKeyDer, unsigned int* pubKeySz, + unsigned char* out, unsigned int* outlen, + int side, void* ctx); + /* side is WOLFSSL_CLIENT_END or WOLFSSL_SERVER_END */ +WOLFSSL_API void wolfSSL_CTX_SetX25519SharedSecretCb(WOLFSSL_CTX*, + CallbackX25519SharedSecret); +WOLFSSL_API void wolfSSL_SetX25519SharedSecretCtx(WOLFSSL* ssl, void *ctx); +WOLFSSL_API void* wolfSSL_GetX25519SharedSecretCtx(WOLFSSL* ssl); + +typedef int (*CallbackRsaSign)(WOLFSSL* ssl, + const unsigned char* in, unsigned int inSz, + unsigned char* out, unsigned int* outSz, + const unsigned char* keyDer, unsigned int keySz, + void* ctx); +WOLFSSL_API void wolfSSL_CTX_SetRsaSignCb(WOLFSSL_CTX*, CallbackRsaSign); +WOLFSSL_API void wolfSSL_SetRsaSignCtx(WOLFSSL* ssl, void *ctx); +WOLFSSL_API void* wolfSSL_GetRsaSignCtx(WOLFSSL* ssl); + +typedef int (*CallbackRsaVerify)(WOLFSSL* ssl, + unsigned char* sig, unsigned int sigSz, + unsigned char** out, + const unsigned char* keyDer, unsigned int keySz, + void* ctx); +WOLFSSL_API void wolfSSL_CTX_SetRsaVerifyCb(WOLFSSL_CTX*, CallbackRsaVerify); +WOLFSSL_API void wolfSSL_SetRsaVerifyCtx(WOLFSSL* ssl, void *ctx); +WOLFSSL_API void* wolfSSL_GetRsaVerifyCtx(WOLFSSL* ssl); + +#ifdef WC_RSA_PSS +typedef int (*CallbackRsaPssSign)(WOLFSSL* ssl, + const unsigned char* in, unsigned int inSz, + unsigned char* out, unsigned int* outSz, + int hash, int mgf, + const unsigned char* keyDer, unsigned int keySz, + void* ctx); +WOLFSSL_API void wolfSSL_CTX_SetRsaPssSignCb(WOLFSSL_CTX*, CallbackRsaPssSign); +WOLFSSL_API void wolfSSL_SetRsaPssSignCtx(WOLFSSL* ssl, void *ctx); +WOLFSSL_API void* wolfSSL_GetRsaPssSignCtx(WOLFSSL* ssl); + +typedef int (*CallbackRsaPssVerify)(WOLFSSL* ssl, + unsigned char* sig, unsigned int sigSz, + unsigned char** out, + int hash, int mgf, + const unsigned char* keyDer, unsigned int keySz, + void* ctx); +WOLFSSL_API void wolfSSL_CTX_SetRsaPssVerifyCb(WOLFSSL_CTX*, + CallbackRsaPssVerify); +WOLFSSL_API void wolfSSL_SetRsaPssVerifyCtx(WOLFSSL* ssl, void *ctx); +WOLFSSL_API void* wolfSSL_GetRsaPssVerifyCtx(WOLFSSL* ssl); +#endif + +/* RSA Public Encrypt cb */ +typedef int (*CallbackRsaEnc)(WOLFSSL* ssl, + const unsigned char* in, unsigned int inSz, + unsigned char* out, unsigned int* outSz, + const unsigned char* keyDer, unsigned int keySz, + void* ctx); +WOLFSSL_API void wolfSSL_CTX_SetRsaEncCb(WOLFSSL_CTX*, CallbackRsaEnc); +WOLFSSL_API void wolfSSL_SetRsaEncCtx(WOLFSSL* ssl, void *ctx); +WOLFSSL_API void* wolfSSL_GetRsaEncCtx(WOLFSSL* ssl); + +/* RSA Private Decrypt cb */ +typedef int (*CallbackRsaDec)(WOLFSSL* ssl, + unsigned char* in, unsigned int inSz, + unsigned char** out, + const unsigned char* keyDer, unsigned int keySz, + void* ctx); +WOLFSSL_API void wolfSSL_CTX_SetRsaDecCb(WOLFSSL_CTX*, CallbackRsaDec); +WOLFSSL_API void wolfSSL_SetRsaDecCtx(WOLFSSL* ssl, void *ctx); +WOLFSSL_API void* wolfSSL_GetRsaDecCtx(WOLFSSL* ssl); + + +#ifndef NO_CERTS + WOLFSSL_API void wolfSSL_CTX_SetCACb(WOLFSSL_CTX*, CallbackCACache); + + WOLFSSL_API WOLFSSL_CERT_MANAGER* wolfSSL_CTX_GetCertManager(WOLFSSL_CTX*); + + WOLFSSL_API WOLFSSL_CERT_MANAGER* wolfSSL_CertManagerNew_ex(void* heap); + WOLFSSL_API WOLFSSL_CERT_MANAGER* wolfSSL_CertManagerNew(void); + WOLFSSL_API void wolfSSL_CertManagerFree(WOLFSSL_CERT_MANAGER*); + + WOLFSSL_API int wolfSSL_CertManagerLoadCA(WOLFSSL_CERT_MANAGER*, const char* f, + const char* d); + WOLFSSL_API int wolfSSL_CertManagerLoadCABuffer(WOLFSSL_CERT_MANAGER*, + const unsigned char* in, long sz, int format); + WOLFSSL_API int wolfSSL_CertManagerUnloadCAs(WOLFSSL_CERT_MANAGER* cm); +#ifdef WOLFSSL_TRUST_PEER_CERT + WOLFSSL_API int wolfSSL_CertManagerUnload_trust_peers(WOLFSSL_CERT_MANAGER* cm); +#endif + WOLFSSL_API int wolfSSL_CertManagerVerify(WOLFSSL_CERT_MANAGER*, const char* f, + int format); + WOLFSSL_API int wolfSSL_CertManagerVerifyBuffer(WOLFSSL_CERT_MANAGER* cm, + const unsigned char* buff, long sz, int format); + WOLFSSL_API int wolfSSL_CertManagerCheckCRL(WOLFSSL_CERT_MANAGER*, + unsigned char*, int sz); + WOLFSSL_API int wolfSSL_CertManagerEnableCRL(WOLFSSL_CERT_MANAGER*, + int options); + WOLFSSL_API int wolfSSL_CertManagerDisableCRL(WOLFSSL_CERT_MANAGER*); + WOLFSSL_API int wolfSSL_CertManagerLoadCRL(WOLFSSL_CERT_MANAGER*, + const char*, int, int); + WOLFSSL_API int wolfSSL_CertManagerLoadCRLBuffer(WOLFSSL_CERT_MANAGER*, + const unsigned char*, long sz, int); + WOLFSSL_API int wolfSSL_CertManagerSetCRL_Cb(WOLFSSL_CERT_MANAGER*, + CbMissingCRL); +#ifdef HAVE_CRL_IO + WOLFSSL_API int wolfSSL_CertManagerSetCRL_IOCb(WOLFSSL_CERT_MANAGER*, + CbCrlIO); +#endif + WOLFSSL_API int wolfSSL_CertManagerCheckOCSP(WOLFSSL_CERT_MANAGER*, + unsigned char*, int sz); + WOLFSSL_API int wolfSSL_CertManagerEnableOCSP(WOLFSSL_CERT_MANAGER*, + int options); + WOLFSSL_API int wolfSSL_CertManagerDisableOCSP(WOLFSSL_CERT_MANAGER*); + WOLFSSL_API int wolfSSL_CertManagerSetOCSPOverrideURL(WOLFSSL_CERT_MANAGER*, + const char*); + WOLFSSL_API int wolfSSL_CertManagerSetOCSP_Cb(WOLFSSL_CERT_MANAGER*, + CbOCSPIO, CbOCSPRespFree, void*); + + WOLFSSL_API int wolfSSL_CertManagerEnableOCSPStapling( + WOLFSSL_CERT_MANAGER* cm); + WOLFSSL_API int wolfSSL_CertManagerDisableOCSPStapling( + WOLFSSL_CERT_MANAGER* cm); + + WOLFSSL_API int wolfSSL_EnableCRL(WOLFSSL* ssl, int options); + WOLFSSL_API int wolfSSL_DisableCRL(WOLFSSL* ssl); + WOLFSSL_API int wolfSSL_LoadCRL(WOLFSSL*, const char*, int, int); + WOLFSSL_API int wolfSSL_LoadCRLBuffer(WOLFSSL*, + const unsigned char*, long sz, int); + WOLFSSL_API int wolfSSL_SetCRL_Cb(WOLFSSL*, CbMissingCRL); +#ifdef HAVE_CRL_IO + WOLFSSL_API int wolfSSL_SetCRL_IOCb(WOLFSSL* ssl, CbCrlIO cb); +#endif + WOLFSSL_API int wolfSSL_EnableOCSP(WOLFSSL*, int options); + WOLFSSL_API int wolfSSL_DisableOCSP(WOLFSSL*); + WOLFSSL_API int wolfSSL_SetOCSP_OverrideURL(WOLFSSL*, const char*); + WOLFSSL_API int wolfSSL_SetOCSP_Cb(WOLFSSL*, CbOCSPIO, CbOCSPRespFree, void*); + WOLFSSL_API int wolfSSL_EnableOCSPStapling(WOLFSSL*); + WOLFSSL_API int wolfSSL_DisableOCSPStapling(WOLFSSL*); + + WOLFSSL_API int wolfSSL_CTX_EnableCRL(WOLFSSL_CTX* ctx, int options); + WOLFSSL_API int wolfSSL_CTX_DisableCRL(WOLFSSL_CTX* ctx); + WOLFSSL_API int wolfSSL_CTX_LoadCRL(WOLFSSL_CTX*, const char*, int, int); + WOLFSSL_API int wolfSSL_CTX_LoadCRLBuffer(WOLFSSL_CTX*, + const unsigned char*, long sz, int); + WOLFSSL_API int wolfSSL_CTX_SetCRL_Cb(WOLFSSL_CTX*, CbMissingCRL); +#ifdef HAVE_CRL_IO + WOLFSSL_API int wolfSSL_CTX_SetCRL_IOCb(WOLFSSL_CTX*, CbCrlIO); +#endif + + WOLFSSL_API int wolfSSL_CTX_EnableOCSP(WOLFSSL_CTX*, int options); + WOLFSSL_API int wolfSSL_CTX_DisableOCSP(WOLFSSL_CTX*); + WOLFSSL_API int wolfSSL_CTX_SetOCSP_OverrideURL(WOLFSSL_CTX*, const char*); + WOLFSSL_API int wolfSSL_CTX_SetOCSP_Cb(WOLFSSL_CTX*, + CbOCSPIO, CbOCSPRespFree, void*); + WOLFSSL_API int wolfSSL_CTX_EnableOCSPStapling(WOLFSSL_CTX*); + WOLFSSL_API int wolfSSL_CTX_DisableOCSPStapling(WOLFSSL_CTX*); +#endif /* !NO_CERTS */ + + +#ifdef SINGLE_THREADED + WOLFSSL_API int wolfSSL_CTX_new_rng(WOLFSSL_CTX*); +#endif + +/* end of handshake frees temporary arrays, if user needs for get_keys or + psk hints, call KeepArrays before handshake and then FreeArrays when done + if don't want to wait for object free */ +WOLFSSL_API void wolfSSL_KeepArrays(WOLFSSL*); +WOLFSSL_API void wolfSSL_FreeArrays(WOLFSSL*); + +WOLFSSL_API int wolfSSL_KeepHandshakeResources(WOLFSSL* ssl); +WOLFSSL_API int wolfSSL_FreeHandshakeResources(WOLFSSL* ssl); + +WOLFSSL_API int wolfSSL_CTX_UseClientSuites(WOLFSSL_CTX* ctx); +WOLFSSL_API int wolfSSL_UseClientSuites(WOLFSSL* ssl); + +/* async additions */ +WOLFSSL_API int wolfSSL_UseAsync(WOLFSSL*, int devId); +WOLFSSL_API int wolfSSL_CTX_UseAsync(WOLFSSL_CTX*, int devId); + +/* helpers to get device id and heap */ +WOLFSSL_API int wolfSSL_CTX_GetDevId(WOLFSSL_CTX* ctx, WOLFSSL* ssl); +WOLFSSL_API void* wolfSSL_CTX_GetHeap(WOLFSSL_CTX* ctx, WOLFSSL* ssl); + +/* TLS Extensions */ + +/* Server Name Indication */ +#ifdef HAVE_SNI + +/* SNI types */ +enum { + WOLFSSL_SNI_HOST_NAME = 0 +}; + +WOLFSSL_API int wolfSSL_UseSNI(WOLFSSL* ssl, unsigned char type, + const void* data, unsigned short size); +WOLFSSL_API int wolfSSL_CTX_UseSNI(WOLFSSL_CTX* ctx, unsigned char type, + const void* data, unsigned short size); + +#ifndef NO_WOLFSSL_SERVER + +/* SNI options */ +enum { + /* Do not abort the handshake if the requested SNI didn't match. */ + WOLFSSL_SNI_CONTINUE_ON_MISMATCH = 0x01, + + /* Behave as if the requested SNI matched in a case of mismatch. */ + /* In this case, the status will be set to WOLFSSL_SNI_FAKE_MATCH. */ + WOLFSSL_SNI_ANSWER_ON_MISMATCH = 0x02, + + /* Abort the handshake if the client didn't send a SNI request. */ + WOLFSSL_SNI_ABORT_ON_ABSENCE = 0x04, +}; + +WOLFSSL_API void wolfSSL_SNI_SetOptions(WOLFSSL* ssl, unsigned char type, + unsigned char options); +WOLFSSL_API void wolfSSL_CTX_SNI_SetOptions(WOLFSSL_CTX* ctx, + unsigned char type, unsigned char options); + +/* SNI status */ +enum { + WOLFSSL_SNI_NO_MATCH = 0, + WOLFSSL_SNI_FAKE_MATCH = 1, /**< @see WOLFSSL_SNI_ANSWER_ON_MISMATCH */ + WOLFSSL_SNI_REAL_MATCH = 2, + WOLFSSL_SNI_FORCE_KEEP = 3 /** Used with -DWOLFSSL_ALWAYS_KEEP_SNI */ +}; + +WOLFSSL_API unsigned char wolfSSL_SNI_Status(WOLFSSL* ssl, unsigned char type); + +WOLFSSL_API unsigned short wolfSSL_SNI_GetRequest(WOLFSSL *ssl, + unsigned char type, void** data); +WOLFSSL_API int wolfSSL_SNI_GetFromBuffer( + const unsigned char* clientHello, unsigned int helloSz, + unsigned char type, unsigned char* sni, unsigned int* inOutSz); + +#endif +#endif + +/* Application-Layer Protocol Negotiation */ +#ifdef HAVE_ALPN + +/* ALPN status code */ +enum { + WOLFSSL_ALPN_NO_MATCH = 0, + WOLFSSL_ALPN_MATCH = 1, + WOLFSSL_ALPN_CONTINUE_ON_MISMATCH = 2, + WOLFSSL_ALPN_FAILED_ON_MISMATCH = 4, +}; + +enum { + WOLFSSL_MAX_ALPN_PROTO_NAME_LEN = 255, + WOLFSSL_MAX_ALPN_NUMBER = 257 +}; + +#if defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) +typedef int (*CallbackALPNSelect)(WOLFSSL* ssl, const unsigned char** out, + unsigned char* outLen, const unsigned char* in, unsigned int inLen, + void *arg); +#endif + +WOLFSSL_API int wolfSSL_UseALPN(WOLFSSL* ssl, char *protocol_name_list, + unsigned int protocol_name_listSz, + unsigned char options); + +WOLFSSL_API int wolfSSL_ALPN_GetProtocol(WOLFSSL* ssl, char **protocol_name, + unsigned short *size); + +WOLFSSL_API int wolfSSL_ALPN_GetPeerProtocol(WOLFSSL* ssl, char **list, + unsigned short *listSz); +WOLFSSL_API int wolfSSL_ALPN_FreePeerProtocol(WOLFSSL* ssl, char **list); +#endif /* HAVE_ALPN */ + +/* Maximum Fragment Length */ +#ifdef HAVE_MAX_FRAGMENT + +/* Fragment lengths */ +enum { + WOLFSSL_MFL_2_9 = 1, /* 512 bytes */ + WOLFSSL_MFL_2_10 = 2, /* 1024 bytes */ + WOLFSSL_MFL_2_11 = 3, /* 2048 bytes */ + WOLFSSL_MFL_2_12 = 4, /* 4096 bytes */ + WOLFSSL_MFL_2_13 = 5 /* 8192 bytes *//* wolfSSL ONLY!!! */ +}; + +#ifndef NO_WOLFSSL_CLIENT + +WOLFSSL_API int wolfSSL_UseMaxFragment(WOLFSSL* ssl, unsigned char mfl); +WOLFSSL_API int wolfSSL_CTX_UseMaxFragment(WOLFSSL_CTX* ctx, unsigned char mfl); + +#endif +#endif + +/* Truncated HMAC */ +#ifdef HAVE_TRUNCATED_HMAC +#ifndef NO_WOLFSSL_CLIENT + +WOLFSSL_API int wolfSSL_UseTruncatedHMAC(WOLFSSL* ssl); +WOLFSSL_API int wolfSSL_CTX_UseTruncatedHMAC(WOLFSSL_CTX* ctx); + +#endif +#endif + +/* Certificate Status Request */ +/* Certificate Status Type */ +enum { + WOLFSSL_CSR_OCSP = 1 +}; + +/* Certificate Status Options (flags) */ +enum { + WOLFSSL_CSR_OCSP_USE_NONCE = 0x01 +}; + +#ifdef HAVE_CERTIFICATE_STATUS_REQUEST +#ifndef NO_WOLFSSL_CLIENT + +WOLFSSL_API int wolfSSL_UseOCSPStapling(WOLFSSL* ssl, + unsigned char status_type, unsigned char options); + +WOLFSSL_API int wolfSSL_CTX_UseOCSPStapling(WOLFSSL_CTX* ctx, + unsigned char status_type, unsigned char options); + +#endif +#endif + +/* Certificate Status Request v2 */ +/* Certificate Status Type */ +enum { + WOLFSSL_CSR2_OCSP = 1, + WOLFSSL_CSR2_OCSP_MULTI = 2 +}; + +/* Certificate Status v2 Options (flags) */ +enum { + WOLFSSL_CSR2_OCSP_USE_NONCE = 0x01 +}; + +#ifdef HAVE_CERTIFICATE_STATUS_REQUEST_V2 +#ifndef NO_WOLFSSL_CLIENT + +WOLFSSL_API int wolfSSL_UseOCSPStaplingV2(WOLFSSL* ssl, + unsigned char status_type, unsigned char options); + +WOLFSSL_API int wolfSSL_CTX_UseOCSPStaplingV2(WOLFSSL_CTX* ctx, + unsigned char status_type, unsigned char options); + +#endif +#endif + +/* Named Groups */ +enum { +#if 0 /* Not Supported */ + WOLFSSL_ECC_SECT163K1 = 1, + WOLFSSL_ECC_SECT163R1 = 2, + WOLFSSL_ECC_SECT163R2 = 3, + WOLFSSL_ECC_SECT193R1 = 4, + WOLFSSL_ECC_SECT193R2 = 5, + WOLFSSL_ECC_SECT233K1 = 6, + WOLFSSL_ECC_SECT233R1 = 7, + WOLFSSL_ECC_SECT239K1 = 8, + WOLFSSL_ECC_SECT283K1 = 9, + WOLFSSL_ECC_SECT283R1 = 10, + WOLFSSL_ECC_SECT409K1 = 11, + WOLFSSL_ECC_SECT409R1 = 12, + WOLFSSL_ECC_SECT571K1 = 13, + WOLFSSL_ECC_SECT571R1 = 14, +#endif + WOLFSSL_ECC_SECP160K1 = 15, + WOLFSSL_ECC_SECP160R1 = 16, + WOLFSSL_ECC_SECP160R2 = 17, + WOLFSSL_ECC_SECP192K1 = 18, + WOLFSSL_ECC_SECP192R1 = 19, + WOLFSSL_ECC_SECP224K1 = 20, + WOLFSSL_ECC_SECP224R1 = 21, + WOLFSSL_ECC_SECP256K1 = 22, + WOLFSSL_ECC_SECP256R1 = 23, + WOLFSSL_ECC_SECP384R1 = 24, + WOLFSSL_ECC_SECP521R1 = 25, + WOLFSSL_ECC_BRAINPOOLP256R1 = 26, + WOLFSSL_ECC_BRAINPOOLP384R1 = 27, + WOLFSSL_ECC_BRAINPOOLP512R1 = 28, + WOLFSSL_ECC_X25519 = 29, +#ifdef WOLFSSL_TLS13 + /* Not implemented. */ + WOLFSSL_ECC_X448 = 30, + + WOLFSSL_FFDHE_2048 = 256, + WOLFSSL_FFDHE_3072 = 257, + WOLFSSL_FFDHE_4096 = 258, + WOLFSSL_FFDHE_6144 = 259, + WOLFSSL_FFDHE_8192 = 260, +#endif +}; + +enum { + WOLFSSL_EC_PF_UNCOMPRESSED = 0, +#if 0 /* Not Supported */ + WOLFSSL_EC_PF_X962_COMP_PRIME = 1, + WOLFSSL_EC_PF_X962_COMP_CHAR2 = 2, +#endif +}; + +#ifdef HAVE_SUPPORTED_CURVES +#ifndef NO_WOLFSSL_CLIENT + +WOLFSSL_API int wolfSSL_UseSupportedCurve(WOLFSSL* ssl, unsigned short name); +WOLFSSL_API int wolfSSL_CTX_UseSupportedCurve(WOLFSSL_CTX* ctx, + unsigned short name); + +#endif +#endif + +#ifdef WOLFSSL_TLS13 +WOLFSSL_API int wolfSSL_UseKeyShare(WOLFSSL* ssl, unsigned short group); +WOLFSSL_API int wolfSSL_NoKeyShares(WOLFSSL* ssl); +#endif + + +/* Secure Renegotiation */ +#ifdef HAVE_SECURE_RENEGOTIATION + +WOLFSSL_API int wolfSSL_UseSecureRenegotiation(WOLFSSL* ssl); +WOLFSSL_API int wolfSSL_Rehandshake(WOLFSSL* ssl); + +#endif + +/* Session Ticket */ +#ifdef HAVE_SESSION_TICKET + +#ifndef NO_WOLFSSL_CLIENT +WOLFSSL_API int wolfSSL_UseSessionTicket(WOLFSSL* ssl); +WOLFSSL_API int wolfSSL_CTX_UseSessionTicket(WOLFSSL_CTX* ctx); +WOLFSSL_API int wolfSSL_get_SessionTicket(WOLFSSL*, unsigned char*, unsigned int*); +WOLFSSL_API int wolfSSL_set_SessionTicket(WOLFSSL*, const unsigned char*, unsigned int); +typedef int (*CallbackSessionTicket)(WOLFSSL*, const unsigned char*, int, void*); +WOLFSSL_API int wolfSSL_set_SessionTicket_cb(WOLFSSL*, + CallbackSessionTicket, void*); +#endif /* NO_WOLFSSL_CLIENT */ + +#ifndef NO_WOLFSSL_SERVER + +#define WOLFSSL_TICKET_NAME_SZ 16 +#define WOLFSSL_TICKET_IV_SZ 16 +#define WOLFSSL_TICKET_MAC_SZ 32 + +enum TicketEncRet { + WOLFSSL_TICKET_RET_FATAL = -1, /* fatal error, don't use ticket */ + WOLFSSL_TICKET_RET_OK = 0, /* ok, use ticket */ + WOLFSSL_TICKET_RET_REJECT, /* don't use ticket, but not fatal */ + WOLFSSL_TICKET_RET_CREATE /* existing ticket ok and create new one */ +}; + +typedef int (*SessionTicketEncCb)(WOLFSSL*, + unsigned char key_name[WOLFSSL_TICKET_NAME_SZ], + unsigned char iv[WOLFSSL_TICKET_IV_SZ], + unsigned char mac[WOLFSSL_TICKET_MAC_SZ], + int enc, unsigned char*, int, int*, void*); +WOLFSSL_API int wolfSSL_CTX_set_TicketEncCb(WOLFSSL_CTX* ctx, + SessionTicketEncCb); +WOLFSSL_API int wolfSSL_CTX_set_TicketHint(WOLFSSL_CTX* ctx, int); +WOLFSSL_API int wolfSSL_CTX_set_TicketEncCtx(WOLFSSL_CTX* ctx, void*); + +#endif /* NO_WOLFSSL_SERVER */ + +#endif /* HAVE_SESSION_TICKET */ + +#ifdef HAVE_QSH +/* Quantum-safe Crypto Schemes */ +enum { + WOLFSSL_NTRU_EESS439 = 0x0101, /* max plaintext length of 65 */ + WOLFSSL_NTRU_EESS593 = 0x0102, /* max plaintext length of 86 */ + WOLFSSL_NTRU_EESS743 = 0x0103, /* max plaintext length of 106 */ + WOLFSSL_LWE_XXX = 0x0201, /* Learning With Error encryption scheme */ + WOLFSSL_HFE_XXX = 0x0301, /* Hidden Field Equation scheme */ + WOLFSSL_NULL_QSH = 0xFFFF /* QSHScheme is not used */ +}; + + +/* test if the connection is using a QSH secure connection return 1 if so */ +WOLFSSL_API int wolfSSL_isQSH(WOLFSSL* ssl); +WOLFSSL_API int wolfSSL_UseSupportedQSH(WOLFSSL* ssl, unsigned short name); +#ifndef NO_WOLFSSL_CLIENT + /* user control over sending client public key in hello + when flag = 1 will send keys if flag is 0 or function is not called + then will not send keys in the hello extension */ + WOLFSSL_API int wolfSSL_UseClientQSHKeys(WOLFSSL* ssl, unsigned char flag); +#endif + +#endif /* QSH */ + +/* TLS Extended Master Secret Extension */ +WOLFSSL_API int wolfSSL_DisableExtendedMasterSecret(WOLFSSL* ssl); +WOLFSSL_API int wolfSSL_CTX_DisableExtendedMasterSecret(WOLFSSL_CTX* ctx); + + +#define WOLFSSL_CRL_MONITOR 0x01 /* monitor this dir flag */ +#define WOLFSSL_CRL_START_MON 0x02 /* start monitoring flag */ + + +/* notify user the handshake is done */ +typedef int (*HandShakeDoneCb)(WOLFSSL*, void*); +WOLFSSL_API int wolfSSL_SetHsDoneCb(WOLFSSL*, HandShakeDoneCb, void*); + + +WOLFSSL_API int wolfSSL_PrintSessionStats(void); +WOLFSSL_API int wolfSSL_get_session_stats(unsigned int* active, + unsigned int* total, + unsigned int* peak, + unsigned int* maxSessions); +/* External facing KDF */ +WOLFSSL_API +int wolfSSL_MakeTlsMasterSecret(unsigned char* ms, unsigned int msLen, + const unsigned char* pms, unsigned int pmsLen, + const unsigned char* cr, const unsigned char* sr, + int tls1_2, int hash_type); + +WOLFSSL_API +int wolfSSL_MakeTlsExtendedMasterSecret(unsigned char* ms, unsigned int msLen, + const unsigned char* pms, unsigned int pmsLen, + const unsigned char* sHash, unsigned int sHashLen, + int tls1_2, int hash_type); + +WOLFSSL_API +int wolfSSL_DeriveTlsKeys(unsigned char* key_data, unsigned int keyLen, + const unsigned char* ms, unsigned int msLen, + const unsigned char* sr, const unsigned char* cr, + int tls1_2, int hash_type); + +#ifdef WOLFSSL_CALLBACKS + +/* used internally by wolfSSL while OpenSSL types aren't */ +#include + +typedef int (*HandShakeCallBack)(HandShakeInfo*); +typedef int (*TimeoutCallBack)(TimeoutInfo*); + +/* wolfSSL connect extension allowing HandShakeCallBack and/or TimeoutCallBack + for diagnostics */ +WOLFSSL_API int wolfSSL_connect_ex(WOLFSSL*, HandShakeCallBack, TimeoutCallBack, + Timeval); +WOLFSSL_API int wolfSSL_accept_ex(WOLFSSL*, HandShakeCallBack, TimeoutCallBack, + Timeval); + +#endif /* WOLFSSL_CALLBACKS */ + + +#ifdef WOLFSSL_HAVE_WOLFSCEP + WOLFSSL_API void wolfSSL_wolfSCEP(void); +#endif /* WOLFSSL_HAVE_WOLFSCEP */ + +#ifdef WOLFSSL_HAVE_CERT_SERVICE + WOLFSSL_API void wolfSSL_cert_service(void); +#endif + +#if defined(WOLFSSL_MYSQL_COMPATIBLE) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) +WOLFSSL_API char* wolfSSL_ASN1_TIME_to_string(WOLFSSL_ASN1_TIME* time, + char* buf, int len); +#endif /* WOLFSSL_MYSQL_COMPATIBLE */ + +#ifdef OPENSSL_EXTRA + +#ifndef NO_FILESYSTEM +WOLFSSL_API long wolfSSL_BIO_set_fp(WOLFSSL_BIO *bio, XFILE fp, int c); +WOLFSSL_API long wolfSSL_BIO_get_fp(WOLFSSL_BIO *bio, XFILE* fp); +#endif + +WOLFSSL_API unsigned long wolfSSL_ERR_peek_last_error_line(const char **file, int *line); +WOLFSSL_API long wolfSSL_ctrl(WOLFSSL* ssl, int cmd, long opt, void* pt); +WOLFSSL_API long wolfSSL_CTX_ctrl(WOLFSSL_CTX* ctx, int cmd, long opt,void* pt); + +#ifndef NO_CERTS +WOLFSSL_API int wolfSSL_check_private_key(const WOLFSSL* ssl); +WOLFSSL_API void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, + int nid, int* c, int* idx); +WOLFSSL_API int wolfSSL_X509_digest(const WOLFSSL_X509* x509, + const WOLFSSL_EVP_MD* digest, unsigned char* buf, unsigned int* len); +WOLFSSL_API int wolfSSL_use_certificate(WOLFSSL* ssl, WOLFSSL_X509* x509); +WOLFSSL_API int wolfSSL_use_certificate_ASN1(WOLFSSL* ssl, unsigned char* der, + int derSz); +WOLFSSL_API int wolfSSL_use_PrivateKey(WOLFSSL* ssl, WOLFSSL_EVP_PKEY* pkey); +WOLFSSL_API int wolfSSL_use_PrivateKey_ASN1(int pri, WOLFSSL* ssl, + unsigned char* der, long derSz); +WOLFSSL_API WOLFSSL_EVP_PKEY *wolfSSL_get_privatekey(const WOLFSSL *ssl); +#ifndef NO_RSA +WOLFSSL_API int wolfSSL_use_RSAPrivateKey_ASN1(WOLFSSL* ssl, unsigned char* der, + long derSz); +#endif +#endif /* NO_CERTS */ + +WOLFSSL_API WOLFSSL_DH *wolfSSL_DSA_dup_DH(const WOLFSSL_DSA *r); + +WOLFSSL_API int wolfSSL_SESSION_get_master_key(const WOLFSSL_SESSION* ses, + unsigned char* out, int outSz); +WOLFSSL_API int wolfSSL_SESSION_get_master_key_length(const WOLFSSL_SESSION* ses); + +WOLFSSL_API void wolfSSL_CTX_set_cert_store(WOLFSSL_CTX* ctx, + WOLFSSL_X509_STORE* str); +WOLFSSL_X509* wolfSSL_d2i_X509_bio(WOLFSSL_BIO* bio, WOLFSSL_X509** x509); +WOLFSSL_API WOLFSSL_X509_STORE* wolfSSL_CTX_get_cert_store(WOLFSSL_CTX* ctx); + +WOLFSSL_API size_t wolfSSL_BIO_ctrl_pending(WOLFSSL_BIO *b); +WOLFSSL_API size_t wolfSSL_get_server_random(const WOLFSSL *ssl, + unsigned char *out, size_t outlen); +WOLFSSL_API size_t wolfSSL_get_client_random(const WOLFSSL* ssl, + unsigned char* out, size_t outSz); +WOLFSSL_API pem_password_cb* wolfSSL_CTX_get_default_passwd_cb(WOLFSSL_CTX *ctx); +WOLFSSL_API void *wolfSSL_CTX_get_default_passwd_cb_userdata(WOLFSSL_CTX *ctx); +WOLFSSL_API int wolfSSL_CTX_use_PrivateKey(WOLFSSL_CTX *ctx, WOLFSSL_EVP_PKEY *pkey); +WOLFSSL_API WOLFSSL_X509 *wolfSSL_PEM_read_bio_X509(WOLFSSL_BIO *bp, WOLFSSL_X509 **x, pem_password_cb *cb, void *u); +WOLFSSL_API WOLFSSL_X509 *wolfSSL_PEM_read_bio_X509_AUX + (WOLFSSL_BIO *bp, WOLFSSL_X509 **x, pem_password_cb *cb, void *u); + +/*lighttp compatibility */ + +#include +struct WOLFSSL_X509_NAME_ENTRY { + WOLFSSL_ASN1_OBJECT* object; /* not defined yet */ + WOLFSSL_ASN1_STRING data; + WOLFSSL_ASN1_STRING* value; /* points to data, for lighttpd port */ + int set; + int size; +}; + +#if defined(HAVE_LIGHTY) || defined(WOLFSSL_MYSQL_COMPATIBLE) \ + || defined(HAVE_STUNNEL) \ + || defined(WOLFSSL_NGINX) \ + || defined(WOLFSSL_HAPROXY) \ + || defined(OPENSSL_EXTRA) +WOLFSSL_API void wolfSSL_X509_NAME_free(WOLFSSL_X509_NAME *name); +WOLFSSL_API char wolfSSL_CTX_use_certificate(WOLFSSL_CTX *ctx, WOLFSSL_X509 *x); +WOLFSSL_API int wolfSSL_BIO_read_filename(WOLFSSL_BIO *b, const char *name); +/* These are to be merged shortly */ +WOLFSSL_API const char * wolfSSL_OBJ_nid2sn(int n); +WOLFSSL_API int wolfSSL_OBJ_obj2nid(const WOLFSSL_ASN1_OBJECT *o); +WOLFSSL_API int wolfSSL_OBJ_sn2nid(const char *sn); +WOLFSSL_API void wolfSSL_CTX_set_verify_depth(WOLFSSL_CTX *ctx,int depth); +WOLFSSL_API void wolfSSL_set_verify_depth(WOLFSSL *ssl,int depth); +WOLFSSL_API void* wolfSSL_get_app_data( const WOLFSSL *ssl); +WOLFSSL_API int wolfSSL_set_app_data(WOLFSSL *ssl, void *arg); +WOLFSSL_API WOLFSSL_ASN1_OBJECT * wolfSSL_X509_NAME_ENTRY_get_object(WOLFSSL_X509_NAME_ENTRY *ne); +WOLFSSL_API WOLFSSL_X509_NAME_ENTRY *wolfSSL_X509_NAME_get_entry(WOLFSSL_X509_NAME *name, int loc); +WOLFSSL_API void wolfSSL_sk_X509_NAME_pop_free(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk, void f (WOLFSSL_X509_NAME*)); +WOLFSSL_API unsigned char *wolfSSL_SHA1(const unsigned char *d, size_t n, unsigned char *md); +WOLFSSL_API int wolfSSL_X509_check_private_key(WOLFSSL_X509*, WOLFSSL_EVP_PKEY*); +WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME) *wolfSSL_dup_CA_list( WOLF_STACK_OF(WOLFSSL_X509_NAME) *sk ); + +/* end lighttpd*/ +#endif +#endif + +#if defined(HAVE_STUNNEL) || defined(HAVE_LIGHTY) \ + || defined(WOLFSSL_MYSQL_COMPATIBLE) \ + || defined(WOLFSSL_HAPROXY) \ + || defined(OPENSSL_EXTRA) + +WOLFSSL_API char* wolfSSL_OBJ_nid2ln(int n); +WOLFSSL_API int wolfSSL_OBJ_txt2nid(const char *sn); +WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new_file(const char *filename, const char *mode); +WOLFSSL_API long wolfSSL_CTX_set_tmp_dh(WOLFSSL_CTX*, WOLFSSL_DH*); +WOLFSSL_API WOLFSSL_DH *wolfSSL_PEM_read_bio_DHparams(WOLFSSL_BIO *bp, + WOLFSSL_DH **x, pem_password_cb *cb, void *u); +WOLFSSL_API WOLFSSL_DSA *wolfSSL_PEM_read_bio_DSAparams(WOLFSSL_BIO *bp, + WOLFSSL_DSA **x, pem_password_cb *cb, void *u); +WOLFSSL_API int wolfSSL_PEM_write_bio_X509(WOLFSSL_BIO *bp, WOLFSSL_X509 *x); +WOLFSSL_API long wolfSSL_CTX_get_options(WOLFSSL_CTX* ctx); + + + +#endif /* HAVE_STUNNEL || HAVE_LIGHTY */ + + +#if defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) + +#include + +/* SNI received callback type */ +typedef int (*CallbackSniRecv)(WOLFSSL *ssl, int *ret, void* exArg); + +WOLFSSL_API int wolfSSL_CRYPTO_set_mem_ex_functions(void *(*m) (size_t, const char *, int), + void *(*r) (void *, size_t, const char *, int), void (*f) (void *)); + +WOLFSSL_API WOLFSSL_DH *wolfSSL_DH_generate_parameters(int prime_len, int generator, + void (*callback) (int, int, void *), void *cb_arg); + +WOLFSSL_API int wolfSSL_DH_generate_parameters_ex(WOLFSSL_DH*, int, int, + void (*callback) (int, int, void *)); + +WOLFSSL_API void wolfSSL_ERR_load_crypto_strings(void); + +WOLFSSL_API unsigned long wolfSSL_ERR_peek_last_error(void); + +WOLFSSL_API int wolfSSL_FIPS_mode(void); + +WOLFSSL_API int wolfSSL_FIPS_mode_set(int r); + +WOLFSSL_API int wolfSSL_RAND_set_rand_method(const void *meth); + +WOLFSSL_API int wolfSSL_CIPHER_get_bits(const WOLFSSL_CIPHER *c, int *alg_bits); + +WOLFSSL_API int wolfSSL_sk_X509_NAME_num(const WOLF_STACK_OF(WOLFSSL_X509_NAME) *s); + +WOLFSSL_API int wolfSSL_sk_X509_num(const WOLF_STACK_OF(WOLFSSL_X509) *s); + +WOLFSSL_API int wolfSSL_X509_NAME_print_ex(WOLFSSL_BIO*,WOLFSSL_X509_NAME*,int, + unsigned long); + +WOLFSSL_API WOLFSSL_ASN1_BIT_STRING* wolfSSL_X509_get0_pubkey_bitstr( + const WOLFSSL_X509*); + +WOLFSSL_API int wolfSSL_CTX_add_session(WOLFSSL_CTX*, WOLFSSL_SESSION*); + +WOLFSSL_API WOLFSSL_CTX* wolfSSL_get_SSL_CTX(WOLFSSL* ssl); + +WOLFSSL_API int wolfSSL_version(WOLFSSL*); + +WOLFSSL_API int wolfSSL_get_state(const WOLFSSL*); + +WOLFSSL_API void* wolfSSL_sk_X509_NAME_value(const WOLF_STACK_OF(WOLFSSL_X509_NAME)*, int); + +WOLFSSL_API void* wolfSSL_sk_X509_value(WOLF_STACK_OF(WOLFSSL_X509)*, int); + +WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_get_peer_cert_chain(const WOLFSSL*); + +WOLFSSL_API void* wolfSSL_SESSION_get_ex_data(const WOLFSSL_SESSION*, int); + +WOLFSSL_API int wolfSSL_SESSION_set_ex_data(WOLFSSL_SESSION*, int, void*); + +WOLFSSL_API int wolfSSL_SESSION_get_ex_new_index(long,void*,void*,void*, + CRYPTO_free_func*); + +WOLFSSL_API int wolfSSL_X509_NAME_get_sz(WOLFSSL_X509_NAME*); + + +WOLFSSL_API const unsigned char* wolfSSL_SESSION_get_id(WOLFSSL_SESSION*, + unsigned int*); + +WOLFSSL_API int wolfSSL_set_tlsext_host_name(WOLFSSL *, const char *); + +WOLFSSL_API const char* wolfSSL_get_servername(WOLFSSL *, unsigned char); + +WOLFSSL_API WOLFSSL_CTX* wolfSSL_set_SSL_CTX(WOLFSSL*,WOLFSSL_CTX*); + +WOLFSSL_API VerifyCallback wolfSSL_CTX_get_verify_callback(WOLFSSL_CTX*); + +WOLFSSL_API void wolfSSL_CTX_set_servername_callback(WOLFSSL_CTX *, + CallbackSniRecv); +WOLFSSL_API int wolfSSL_CTX_set_tlsext_servername_callback(WOLFSSL_CTX *, + CallbackSniRecv); + +WOLFSSL_API void wolfSSL_CTX_set_servername_arg(WOLFSSL_CTX *, void*); + +WOLFSSL_API void WOLFSSL_ERR_remove_thread_state(void*); + +#ifndef NO_FILESYSTEM +WOLFSSL_API void wolfSSL_print_all_errors_fp(XFILE *fp); +#endif + +WOLFSSL_API long wolfSSL_CTX_clear_options(WOLFSSL_CTX*, long); + +WOLFSSL_API void wolfSSL_THREADID_set_callback(void (*threadid_func)(void*)); + +WOLFSSL_API void wolfSSL_THREADID_set_numeric(void* id, unsigned long val); + +WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_X509_STORE_get1_certs( + WOLFSSL_X509_STORE_CTX*, WOLFSSL_X509_NAME*); + +WOLFSSL_API void wolfSSL_sk_X509_pop_free(WOLF_STACK_OF(WOLFSSL_X509)* sk, void f (WOLFSSL_X509*)); +#endif /* HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY */ + +#if defined(HAVE_STUNNEL) || defined(WOLFSSL_MYSQL_COMPATIBLE) \ + || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) + +WOLFSSL_API int wolfSSL_CTX_get_verify_mode(WOLFSSL_CTX* ctx); + +#endif + +#ifdef WOLFSSL_JNI +WOLFSSL_API int wolfSSL_set_jobject(WOLFSSL* ssl, void* objPtr); +WOLFSSL_API void* wolfSSL_get_jobject(WOLFSSL* ssl); +#endif /* WOLFSSL_JNI */ + + +#ifdef WOLFSSL_ASYNC_CRYPT +WOLFSSL_API int wolfSSL_AsyncPoll(WOLFSSL* ssl, WOLF_EVENT_FLAG flags); +WOLFSSL_API int wolfSSL_CTX_AsyncPoll(WOLFSSL_CTX* ctx, WOLF_EVENT** events, int maxEvents, + WOLF_EVENT_FLAG flags, int* eventCount); +#endif /* WOLFSSL_ASYNC_CRYPT */ + +#ifdef OPENSSL_EXTRA +WOLFSSL_API int wolfSSL_CTX_set1_curves_list(WOLFSSL_CTX* ctx, char* names); + +typedef void (*SSL_Msg_Cb)(int write_p, int version, int content_type, + const void *buf, size_t len, WOLFSSL *ssl, void *arg); + +WOLFSSL_API int wolfSSL_CTX_set_msg_callback(WOLFSSL_CTX *ctx, SSL_Msg_Cb cb); +WOLFSSL_API int wolfSSL_set_msg_callback(WOLFSSL *ssl, SSL_Msg_Cb cb); +WOLFSSL_API int wolfSSL_CTX_set_msg_callback_arg(WOLFSSL_CTX *ctx, void* arg); +WOLFSSL_API int wolfSSL_set_msg_callback_arg(WOLFSSL *ssl, void* arg); +#endif + +#ifdef OPENSSL_EXTRA +WOLFSSL_API unsigned long wolfSSL_ERR_peek_error_line_data(const char **file, + int *line, const char **data, int *flags); +#endif + +#if defined WOLFSSL_NGINX || defined WOLFSSL_HAPROXY +/* Not an OpenSSL API. */ +WOLFSSL_LOCAL int wolfSSL_get_ocsp_response(WOLFSSL* ssl, byte** response); +/* Not an OpenSSL API. */ +WOLFSSL_LOCAL char* wolfSSL_get_ocsp_url(WOLFSSL* ssl); +/* Not an OpenSSL API. */ +WOLFSSL_API int wolfSSL_set_ocsp_url(WOLFSSL* ssl, char* url); + +WOLFSSL_API WOLF_STACK_OF(WOLFSSL_CIPHER) *wolfSSL_get_ciphers_compat(const WOLFSSL *ssl); +WOLFSSL_API void wolfSSL_OPENSSL_config(char *config_name); +WOLFSSL_API int wolfSSL_X509_get_ex_new_index(int idx, void *arg, void *a, + void *b, void *c); +WOLFSSL_API void *wolfSSL_X509_get_ex_data(WOLFSSL_X509 *x509, int idx); +WOLFSSL_API int wolfSSL_X509_set_ex_data(WOLFSSL_X509 *x509, int idx, + void *data); + +WOLFSSL_API int wolfSSL_X509_NAME_digest(const WOLFSSL_X509_NAME *data, + const WOLFSSL_EVP_MD *type, unsigned char *md, unsigned int *len); + +WOLFSSL_API long wolfSSL_SSL_CTX_get_timeout(const WOLFSSL_CTX *ctx); +WOLFSSL_API int wolfSSL_SSL_CTX_set_tmp_ecdh(WOLFSSL_CTX *ctx, + WOLFSSL_EC_KEY *ecdh); +WOLFSSL_API int wolfSSL_SSL_CTX_remove_session(WOLFSSL_CTX *, + WOLFSSL_SESSION *c); + +WOLFSSL_API WOLFSSL_BIO *wolfSSL_SSL_get_rbio(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_in_init(WOLFSSL *a); /* #define in OpenSSL */ +#ifndef NO_SESSION_CACHE + WOLFSSL_API WOLFSSL_SESSION *wolfSSL_SSL_get0_session(const WOLFSSL *s); +#endif +WOLFSSL_API int wolfSSL_X509_check_host(WOLFSSL_X509 *x, const char *chk, + size_t chklen, unsigned int flags, char **peername); + +WOLFSSL_API int wolfSSL_i2a_ASN1_INTEGER(WOLFSSL_BIO *bp, + const WOLFSSL_ASN1_INTEGER *a); + +#ifdef HAVE_SESSION_TICKET +WOLFSSL_API int wolfSSL_CTX_set_tlsext_ticket_key_cb(WOLFSSL_CTX *, int (*)( + WOLFSSL *ssl, unsigned char *name, unsigned char *iv, + WOLFSSL_EVP_CIPHER_CTX *ectx, WOLFSSL_HMAC_CTX *hctx, int enc)); +#endif + +#ifdef HAVE_OCSP +WOLFSSL_API int wolfSSL_CTX_get_extra_chain_certs(WOLFSSL_CTX* ctx, + WOLF_STACK_OF(X509)** chain); +WOLFSSL_API int wolfSSL_CTX_set_tlsext_status_cb(WOLFSSL_CTX* ctx, + int(*)(WOLFSSL*, void*)); + +WOLFSSL_API int wolfSSL_X509_STORE_CTX_get1_issuer(WOLFSSL_X509 **issuer, + WOLFSSL_X509_STORE_CTX *ctx, WOLFSSL_X509 *x); + +WOLFSSL_API void wolfSSL_X509_email_free(WOLF_STACK_OF(WOLFSSL_STRING) *sk); +WOLFSSL_API WOLF_STACK_OF(WOLFSSL_STRING) *wolfSSL_X509_get1_ocsp(WOLFSSL_X509 *x); + +WOLFSSL_API int wolfSSL_X509_check_issued(WOLFSSL_X509 *issuer, + WOLFSSL_X509 *subject); + +WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_dup(WOLFSSL_X509 *x); + +WOLFSSL_API char* wolfSSL_sk_WOLFSSL_STRING_value( + WOLF_STACK_OF(WOLFSSL_STRING)* strings, int idx); +#endif /* HAVE_OCSP */ + +WOLFSSL_API int PEM_write_bio_WOLFSSL_X509(WOLFSSL_BIO *bio, + WOLFSSL_X509 *cert); + +#endif /* WOLFSSL_NGINX */ + +WOLFSSL_API void wolfSSL_get0_alpn_selected(const WOLFSSL *ssl, + const unsigned char **data, unsigned int *len); +WOLFSSL_API int wolfSSL_select_next_proto(unsigned char **out, + unsigned char *outlen, + const unsigned char *in, unsigned int inlen, + const unsigned char *client, + unsigned int client_len); +WOLFSSL_API void wolfSSL_CTX_set_alpn_select_cb(WOLFSSL_CTX *ctx, + int (*cb) (WOLFSSL *ssl, + const unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg), void *arg); +WOLFSSL_API void wolfSSL_CTX_set_next_protos_advertised_cb(WOLFSSL_CTX *s, + int (*cb) (WOLFSSL *ssl, + const unsigned char **out, + unsigned int *outlen, + void *arg), void *arg); +WOLFSSL_API void wolfSSL_CTX_set_next_proto_select_cb(WOLFSSL_CTX *s, + int (*cb) (WOLFSSL *ssl, + unsigned char **out, + unsigned char *outlen, + const unsigned char *in, + unsigned int inlen, + void *arg), void *arg); +WOLFSSL_API void wolfSSL_get0_next_proto_negotiated(const WOLFSSL *s, const unsigned char **data, + unsigned *len); + + +#ifdef OPENSSL_EXTRA +#if defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) +WOLFSSL_API const unsigned char *SSL_SESSION_get0_id_context( + const WOLFSSL_SESSION *sess, unsigned int *sid_ctx_length); +WOLFSSL_API size_t SSL_get_finished(const WOLFSSL *s, void *buf, size_t count); +WOLFSSL_API size_t SSL_get_peer_finished(const WOLFSSL *s, void *buf, size_t count); +#endif + +WOLFSSL_API int SSL_SESSION_set1_id(WOLFSSL_SESSION *s, const unsigned char *sid, unsigned int sid_len); +WOLFSSL_API int SSL_SESSION_set1_id_context(WOLFSSL_SESSION *s, const unsigned char *sid_ctx, unsigned int sid_ctx_len); +WOLFSSL_API void *X509_get0_tbs_sigalg(const WOLFSSL_X509 *x); +WOLFSSL_API void X509_ALGOR_get0(WOLFSSL_ASN1_OBJECT **paobj, int *pptype, const void **ppval, const void *algor); +WOLFSSL_API void *X509_get_X509_PUBKEY(void * x); +WOLFSSL_API int X509_PUBKEY_get0_param(WOLFSSL_ASN1_OBJECT **ppkalg, const unsigned char **pk, int *ppklen, void **pa, WOLFSSL_EVP_PKEY *pub); +WOLFSSL_API int EVP_PKEY_bits(WOLFSSL_EVP_PKEY *pkey); +WOLFSSL_API int i2d_X509(WOLFSSL_X509 *x, unsigned char **out); +WOLFSSL_API int i2t_ASN1_OBJECT(char *buf, int buf_len, WOLFSSL_ASN1_OBJECT *a); +WOLFSSL_API void SSL_CTX_set_tmp_dh_callback(WOLFSSL_CTX *ctx, WOLFSSL_DH *(*dh) (WOLFSSL *ssl, int is_export, int keylength)); +WOLFSSL_API WOLF_STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); +WOLFSSL_API int X509_STORE_load_locations(WOLFSSL_X509_STORE *ctx, const char *file, const char *dir); +WOLFSSL_API int wolfSSL_sk_SSL_CIPHER_num(const void * p); +WOLFSSL_API int wolfSSL_sk_SSL_COMP_zero(WOLFSSL_STACK* st); +WOLFSSL_API WOLFSSL_CIPHER* wolfSSL_sk_SSL_CIPHER_value(void *ciphers, int idx); +WOLFSSL_API void ERR_load_SSL_strings(void); +#endif /* OPENSSL_EXTRA */ + +#ifdef __cplusplus + } /* extern "C" */ +#endif + + +#endif /* WOLFSSL_SSL_H */ diff --git a/include/wolfssl/user_settings.h b/include/wolfssl/user_settings.h new file mode 100755 index 00000000..c585ed4c --- /dev/null +++ b/include/wolfssl/user_settings.h @@ -0,0 +1,70 @@ +/* + * ESPRESSIF MIT License + * + * Copyright (c) 2017 + * + * Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, + * it is free of charge, to any person obtaining a copy of this software and associated + * documentation files (the "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the Software is furnished + * to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + */ + +#ifndef __USER_SETTINGS_H__ +#define __USER_SETTINGS_H__ + +#define WOLFSSL_LWIP +#define NO_WRITEV +#define NO_WOLFSSL_DIR +#define NO_INLINE +#define NO_WOLFSSL_MEMORY +#define HAVE_PK_CALLBACKS +#define WOLFSSL_KEY_GEN +#define WOLFSSL_RIPEMD +#define ESP_PLATFORM +#define DEBUG_ESP_PLATFORM +#define USE_WOLFSSL_IO +#define WOLFSSL_STATIC_RSA +#define NO_DH +#define NO_MD4 +#define NO_MD5 +#define NO_DES3 +#define NO_DSA +#define NO_OLD_TLS +#define HAVE_ECC +#define WC_NO_HARDEN +#define FREERTOS +#define WOLFSSL_TYPES +#define NO_FILESYSTEM + +#ifdef WOLFSSL_TYPES + #ifndef byte + typedef unsigned char byte; + #endif + typedef unsigned short word16; + typedef unsigned int word32; + typedef byte word24[3]; +#endif + +#ifndef CUSTOM_RAND_GENERATE_BLOCK + + /* To use define the following:*/ + #define CUSTOM_RAND_GENERATE_BLOCK myRngFunc + extern int myRngFunc(byte* output, word32 sz); + +#endif + +#endif + diff --git a/include/wolfssl/version.h b/include/wolfssl/version.h new file mode 100644 index 00000000..075f9e4c --- /dev/null +++ b/include/wolfssl/version.h @@ -0,0 +1,40 @@ +/* wolfssl_version.h.in + * + * Copyright (C) 2006-2017 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + + +#ifndef WOLFSSL_VERSION_H +#define WOLFSSL_VERSION_H + + +#ifdef __cplusplus +extern "C" { +#endif + +#define LIBWOLFSSL_VERSION_STRING "3.12.2" +#define LIBWOLFSSL_VERSION_HEX 0x03012002 + +#ifdef __cplusplus +} +#endif + + +#endif /* WOLFSSL_VERSION_H */ + diff --git a/include/wolfssl/wolfcrypt/settings.h b/include/wolfssl/wolfcrypt/settings.h new file mode 100644 index 00000000..b23b838d --- /dev/null +++ b/include/wolfssl/wolfcrypt/settings.h @@ -0,0 +1,1573 @@ +/* settings.h + * + * Copyright (C) 2006-2017 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + + +/* Place OS specific preprocessor flags, defines, includes here, will be + included into every file because types.h includes it */ + + +#ifndef WOLF_CRYPT_SETTINGS_H +#define WOLF_CRYPT_SETTINGS_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* Uncomment next line if using IPHONE */ +/* #define IPHONE */ + +/* Uncomment next line if using ThreadX */ +/* #define THREADX */ + +/* Uncomment next line if using Micrium uC/OS-III */ +/* #define MICRIUM */ + +/* Uncomment next line if using Mbed */ +/* #define MBED */ + +/* Uncomment next line if using Microchip PIC32 ethernet starter kit */ +/* #define MICROCHIP_PIC32 */ + +/* Uncomment next line if using Microchip TCP/IP stack, version 5 */ +/* #define MICROCHIP_TCPIP_V5 */ + +/* Uncomment next line if using Microchip TCP/IP stack, version 6 or later */ +/* #define MICROCHIP_TCPIP */ + +/* Uncomment next line if using PIC32MZ Crypto Engine */ +/* #define WOLFSSL_MICROCHIP_PIC32MZ */ + +/* Uncomment next line if using FreeRTOS */ +/* #define FREERTOS */ + +/* Uncomment next line if using FreeRTOS+ TCP */ +/* #define FREERTOS_TCP */ + +/* Uncomment next line if using FreeRTOS Windows Simulator */ +/* #define FREERTOS_WINSIM */ + +/* Uncomment next line if using RTIP */ +/* #define EBSNET */ + +/* Uncomment next line if using lwip */ +/* #define WOLFSSL_LWIP */ + +/* Uncomment next line if building wolfSSL for a game console */ +/* #define WOLFSSL_GAME_BUILD */ + +/* Uncomment next line if building wolfSSL for LSR */ +/* #define WOLFSSL_LSR */ + +/* Uncomment next line if building for Freescale Classic MQX/RTCS/MFS */ +/* #define FREESCALE_MQX */ + +/* Uncomment next line if building for Freescale KSDK MQX/RTCS/MFS */ +/* #define FREESCALE_KSDK_MQX */ + +/* Uncomment next line if building for Freescale KSDK Bare Metal */ +/* #define FREESCALE_KSDK_BM */ + +/* Uncomment next line if building for Freescale KSDK FreeRTOS (old name FREESCALE_FREE_RTOS) */ +/* #define FREESCALE_KSDK_FREERTOS */ + +/* Uncomment next line if using STM32F2 */ +/* #define WOLFSSL_STM32F2 */ + +/* Uncomment next line if using STM32F4 */ +/* #define WOLFSSL_STM32F4 */ + +/* Uncomment next line if using STM32F7 */ +/* #define WOLFSSL_STM32F7 */ + +/* Uncomment next line if using QL SEP settings */ +/* #define WOLFSSL_QL */ + +/* Uncomment next line if building for EROAD */ +/* #define WOLFSSL_EROAD */ + +/* Uncomment next line if building for IAR EWARM */ +/* #define WOLFSSL_IAR_ARM */ + +/* Uncomment next line if building for Rowley CrossWorks ARM */ +/* #define WOLFSSL_ROWLEY_ARM */ + +/* Uncomment next line if using TI-RTOS settings */ +/* #define WOLFSSL_TIRTOS */ + +/* Uncomment next line if building with PicoTCP */ +/* #define WOLFSSL_PICOTCP */ + +/* Uncomment next line if building for PicoTCP demo bundle */ +/* #define WOLFSSL_PICOTCP_DEMO */ + +/* Uncomment next line if building for uITRON4 */ +/* #define WOLFSSL_uITRON4 */ + +/* Uncomment next line if building for uT-Kernel */ +/* #define WOLFSSL_uTKERNEL2 */ + +/* Uncomment next line if using Max Strength build */ +/* #define WOLFSSL_MAX_STRENGTH */ + +/* Uncomment next line if building for VxWorks */ +/* #define WOLFSSL_VXWORKS */ + +/* Uncomment next line if building for Nordic nRF5x platofrm */ +/* #define WOLFSSL_NRF5x */ + +/* Uncomment next line to enable deprecated less secure static DH suites */ +/* #define WOLFSSL_STATIC_DH */ + +/* Uncomment next line to enable deprecated less secure static RSA suites */ +/* #define WOLFSSL_STATIC_RSA */ + +/* Uncomment next line if building for ARDUINO */ +/* Uncomment both lines if building for ARDUINO on INTEL_GALILEO */ +/* #define WOLFSSL_ARDUINO */ +/* #define INTEL_GALILEO */ + +/* Uncomment next line to enable asynchronous crypto WC_PENDING_E */ +/* #define WOLFSSL_ASYNC_CRYPT */ + +/* Uncomment next line if building for uTasker */ +/* #define WOLFSSL_UTASKER */ + +/* Uncomment next line if building for embOS */ +/* #define WOLFSSL_EMBOS */ + +/* Uncomment next line if building for RIOT-OS */ +/* #define WOLFSSL_RIOT_OS */ + +/* Uncomment next line if building for using XILINX hardened crypto */ +/* #define WOLFSSL_XILINX_CRYPT */ + +/* Uncomment next line if building for using XILINX */ +/* #define WOLFSSL_XILINX */ + +#include + +#ifdef WOLFSSL_USER_SETTINGS + #include "user_settings.h" +#endif + + +/* make sure old RNG name is used with CTaoCrypt FIPS */ +#ifdef HAVE_FIPS + #define WC_RNG RNG + /* blinding adds API not available yet in FIPS mode */ + #undef WC_RSA_BLINDING +#endif + + +#if defined(_WIN32) && !defined(_M_X64) && \ + defined(HAVE_AESGCM) && defined(WOLFSSL_AESNI) + +/* The _M_X64 macro is what's used in the headers for MSC to tell if it + * has the 64-bit versions of the 128-bit integers available. If one is + * building on 32-bit Windows with AES-NI, turn off the AES-GCMloop + * unrolling. */ + + #define AES_GCM_AESNI_NO_UNROLL +#endif + +#ifdef IPHONE + #define SIZEOF_LONG_LONG 8 +#endif + +#ifdef THREADX + #define SIZEOF_LONG_LONG 8 +#endif + +#ifdef HAVE_NETX + #ifdef NEED_THREADX_TYPES + #include + #endif + #include +#endif + +#if defined(HAVE_LWIP_NATIVE) /* using LwIP native TCP socket */ + #define WOLFSSL_LWIP + #define NO_WRITEV + #define SINGLE_THREADED + #define WOLFSSL_USER_IO + #define NO_FILESYSTEM +#endif + +#if defined(WOLFSSL_IAR_ARM) || defined(WOLFSSL_ROWLEY_ARM) + #define NO_MAIN_DRIVER + #define SINGLE_THREADED + #if !defined(USE_CERT_BUFFERS_2048) && !defined(USE_CERT_BUFFERS_4096) + #define USE_CERT_BUFFERS_1024 + #endif + #define BENCH_EMBEDDED + #define NO_FILESYSTEM + #define NO_WRITEV + #define WOLFSSL_USER_IO + #define BENCH_EMBEDDED +#endif + +#ifdef MICROCHIP_PIC32 + /* #define WOLFSSL_MICROCHIP_PIC32MZ */ + #define SIZEOF_LONG_LONG 8 + #define SINGLE_THREADED + #define WOLFSSL_USER_IO + #define NO_WRITEV + #define NO_DEV_RANDOM + #define NO_FILESYSTEM + #define USE_FAST_MATH + #define TFM_TIMING_RESISTANT + #define WOLFSSL_HAVE_MIN + #define WOLFSSL_HAVE_MAX + #define NO_BIG_INT +#endif + +#ifdef WOLFSSL_MICROCHIP_PIC32MZ + #define WOLFSSL_PIC32MZ_CRYPT + #define WOLFSSL_PIC32MZ_RNG + #define WOLFSSL_PIC32MZ_HASH +#endif + +#ifdef MICROCHIP_TCPIP_V5 + /* include timer functions */ + #include "TCPIP Stack/TCPIP.h" +#endif + +#ifdef MICROCHIP_TCPIP + /* include timer, NTP functions */ + #ifdef MICROCHIP_MPLAB_HARMONY + #include "tcpip/tcpip.h" + #else + #include "system/system_services.h" + #include "tcpip/sntp.h" + #endif +#endif + +#ifdef MBED + #define WOLFSSL_USER_IO + #define NO_FILESYSTEM + #define NO_CERT + #if !defined(USE_CERT_BUFFERS_2048) && !defined(USE_CERT_BUFFERS_4096) + #define USE_CERT_BUFFERS_1024 + #endif + #define NO_WRITEV + #define NO_DEV_RANDOM + #define NO_SHA512 + #define NO_DH + /* Allows use of DH with fixed points if uncommented and NO_DH is removed */ + /* WOLFSSL_DH_CONST */ + #define NO_DSA + #define NO_HC128 + #define HAVE_ECC + #define NO_SESSION_CACHE + #define WOLFSSL_CMSIS_RTOS +#endif + + +#ifdef WOLFSSL_EROAD + #define FREESCALE_MQX + #define FREESCALE_MMCAU + #define SINGLE_THREADED + #define NO_STDIO_FILESYSTEM + #define WOLFSSL_LEANPSK + #define HAVE_NULL_CIPHER + #define NO_OLD_TLS + #define NO_ASN + #define NO_BIG_INT + #define NO_RSA + #define NO_DSA + #define NO_DH + /* Allows use of DH with fixed points if uncommented and NO_DH is removed */ + /* WOLFSSL_DH_CONST */ + #define NO_CERTS + #define NO_PWDBASED + #define NO_DES3 + #define NO_MD4 + #define NO_RC4 + #define NO_MD5 + #define NO_SESSION_CACHE + #define NO_MAIN_DRIVER +#endif + +#ifdef WOLFSSL_PICOTCP + #ifndef errno + #define errno pico_err + #endif + #include "pico_defines.h" + #include "pico_stack.h" + #include "pico_constants.h" + #include "pico_protocol.h" + #define CUSTOM_RAND_GENERATE pico_rand +#endif + +#ifdef WOLFSSL_PICOTCP_DEMO + #define WOLFSSL_STM32 + #define USE_FAST_MATH + #define TFM_TIMING_RESISTANT + #define XMALLOC(s, h, type) PICO_ZALLOC((s)) + #define XFREE(p, h, type) PICO_FREE((p)) + #define SINGLE_THREADED + #define NO_WRITEV + #define WOLFSSL_USER_IO + #define NO_DEV_RANDOM + #define NO_FILESYSTEM +#endif + +#ifdef FREERTOS_WINSIM + #define FREERTOS + #define USE_WINDOWS_API +#endif + + +#ifdef WOLFSSL_VXWORKS + /* VxWorks simulator incorrectly detects building for i386 */ + #ifdef VXWORKS_SIM + #define TFM_NO_ASM + #endif + #define WOLFSSL_PTHREADS + #define WOLFSSL_HAVE_MIN + #define WOLFSSL_HAVE_MAX + #define USE_FAST_MATH + #define TFM_TIMING_RESISTANT + #define NO_MAIN_DRIVER + #define NO_DEV_RANDOM + #define NO_WRITEV +#endif + + +#ifdef WOLFSSL_ARDUINO + #define NO_WRITEV + #define NO_WOLFSSL_DIR + #define SINGLE_THREADED + #define NO_DEV_RANDOM + #ifndef INTEL_GALILEO /* Galileo has time.h compatibility */ + #define TIME_OVERRIDES /* must define XTIME and XGMTIME externally */ + #endif + #define WOLFSSL_USER_IO + #define HAVE_ECC + #define NO_DH + #define NO_SESSION_CACHE + #define USE_SLOW_SHA + #define NO_WOLFSSL_SERVER + #define NO_ERROR_STRINGS +#endif + + +#ifdef WOLFSSL_UTASKER + /* uTasker configuration - used for fnRandom() */ + #include "config.h" + + #define SINGLE_THREADED + #define NO_WOLFSSL_DIR + #define WOLFSSL_HAVE_MIN + #define NO_WRITEV + + #define HAVE_ECC + #define ALT_ECC_SIZE + #define USE_FAST_MATH + #define TFM_TIMING_RESISTANT + #define ECC_TIMING_RESISTANT + + /* used in wolfCrypt test */ + #define NO_MAIN_DRIVER + #define USE_CERT_BUFFERS_2048 + + /* uTasker port uses RAW sockets, use I/O callbacks + * See wolfSSL uTasker example for sample callbacks */ + #define WOLFSSL_USER_IO + + /* uTasker filesystem not ported */ + #define NO_FILESYSTEM + + /* uTasker RNG is abstracted, calls HW RNG when available */ + #define CUSTOM_RAND_GENERATE fnRandom + #define CUSTOM_RAND_TYPE unsigned short + + /* user needs to define XTIME to function that provides + * seconds since Unix epoch */ + #ifndef XTIME + #error XTIME must be defined in wolfSSL settings.h + /* #define XTIME fnSecondsSinceEpoch */ + #endif + + /* use uTasker std library replacements where available */ + #define STRING_USER + #define XMEMCPY(d,s,l) uMemcpy((d),(s),(l)) + #define XMEMSET(b,c,l) uMemset((b),(c),(l)) + #define XMEMCMP(s1,s2,n) uMemcmp((s1),(s2),(n)) + #define XMEMMOVE(d,s,l) memmove((d),(s),(l)) + + #define XSTRLEN(s1) uStrlen((s1)) + #define XSTRNCPY(s1,s2,n) strncpy((s1),(s2),(n)) + #define XSTRSTR(s1,s2) strstr((s1),(s2)) + #define XSTRNSTR(s1,s2,n) mystrnstr((s1),(s2),(n)) + #define XSTRNCMP(s1,s2,n) strncmp((s1),(s2),(n)) + #define XSTRNCAT(s1,s2,n) strncat((s1),(s2),(n)) + #define XSTRNCASECMP(s1,s2,n) _strnicmp((s1),(s2),(n)) + #if defined(WOLFSSL_CERT_EXT) || defined(HAVE_ALPN) + #define XSTRTOK strtok_r + #endif +#endif + +#ifdef WOLFSSL_EMBOS + #define NO_FILESYSTEM /* Not ported at this time */ + #define USE_CERT_BUFFERS_2048 /* use when NO_FILESYSTEM */ + #define NO_MAIN_DRIVER + #define NO_RC4 + #define SINGLE_THREADED /* Not ported at this time */ +#endif + +#ifdef WOLFSSL_RIOT_OS + #define NO_WRITEV + #define TFM_NO_ASM + #define USE_FAST_MATH + #define NO_FILESYSTEM + #define USE_CERT_BUFFERS_2048 +#endif + +#ifdef WOLFSSL_NRF5x + #define SIZEOF_LONG 4 + #define SIZEOF_LONG_LONG 8 + #define NO_ASN_TIME + #define NO_DEV_RANDOM + #define NO_FILESYSTEM + #define NO_MAIN_DRIVER + #define NO_WRITEV + #define SINGLE_THREADED + #define USE_FAST_MATH + #define TFM_TIMING_RESISTANT + #define USE_WOLFSSL_MEMORY + #define WOLFSSL_NRF51 + #define WOLFSSL_USER_IO + #define NO_SESSION_CACHE +#endif + +/* Micrium will use Visual Studio for compilation but not the Win32 API */ +#if defined(_WIN32) && !defined(MICRIUM) && !defined(FREERTOS) && \ + !defined(FREERTOS_TCP) && !defined(EBSNET) && !defined(WOLFSSL_EROAD) && \ + !defined(WOLFSSL_UTASKER) && !defined(INTIME_RTOS) + #define USE_WINDOWS_API +#endif + +#if defined(WOLFSSL_uITRON4) + +#define XMALLOC_USER +#include +#define ITRON_POOL_SIZE 1024*20 +extern int uITRON4_minit(size_t poolsz) ; +extern void *uITRON4_malloc(size_t sz) ; +extern void *uITRON4_realloc(void *p, size_t sz) ; +extern void uITRON4_free(void *p) ; + +#define XMALLOC(sz, heap, type) uITRON4_malloc(sz) +#define XREALLOC(p, sz, heap, type) uITRON4_realloc(p, sz) +#define XFREE(p, heap, type) uITRON4_free(p) +#endif + +#if defined(WOLFSSL_uTKERNEL2) + #ifndef NO_TKERNEL_MEM_POOL + #define XMALLOC_OVERRIDE + int uTKernel_init_mpool(unsigned int sz); /* initializing malloc pool */ + void* uTKernel_malloc(unsigned int sz); + void* uTKernel_realloc(void *p, unsigned int sz); + void uTKernel_free(void *p); + #define XMALLOC(s, h, type) uTKernel_malloc((s)) + #define XREALLOC(p, n, h, t) uTKernel_realloc((p), (n)) + #define XFREE(p, h, type) uTKernel_free((p)) + #endif + + #ifndef NO_STDIO_FGETS_REMAP + #include + #include "tm/tmonitor.h" + + /* static char* gets(char *buff); */ + static char* fgets(char *buff, int sz, FILE *fp) { + char * p = buff; + *p = '\0'; + while (1) { + *p = tm_getchar(-1); + tm_putchar(*p); + if (*p == '\r') { + tm_putchar('\n'); + *p = '\0'; + break; + } + p++; + } + return buff; + } + #endif /* !NO_STDIO_FGETS_REMAP */ +#endif + + +#if defined(WOLFSSL_LEANPSK) && !defined(XMALLOC_USER) + #include + #define XMALLOC(s, h, type) malloc((s)) + #define XFREE(p, h, type) free((p)) + #define XREALLOC(p, n, h, t) realloc((p), (n)) +#endif + +#if defined(XMALLOC_USER) && defined(SSN_BUILDING_LIBYASSL) + #undef XMALLOC + #define XMALLOC yaXMALLOC + #undef XFREE + #define XFREE yaXFREE + #undef XREALLOC + #define XREALLOC yaXREALLOC +#endif + + +#ifdef FREERTOS + #include "FreeRTOS.h" + + /* FreeRTOS pvPortRealloc() only in AVR32_UC3 port */ + #if !defined(XMALLOC_USER) && !defined(NO_WOLFSSL_MEMORY) + #define XMALLOC(s, h, type) pvPortMalloc((s)) + #define XFREE(p, h, type) vPortFree((p)) + #endif + + #ifndef NO_WRITEV + #define NO_WRITEV + #endif + #ifndef HAVE_SHA512 + #ifndef NO_SHA512 + #define NO_SHA512 + #endif + #endif + #ifndef HAVE_DH + #ifndef NO_DH + #define NO_DH + #endif + #endif + #ifndef NO_DSA + #define NO_DSA + #endif + #ifndef NO_HC128 + #define NO_HC128 + #endif + + #ifndef SINGLE_THREADED + #include "semphr.h" + #endif +#endif + +#ifdef FREERTOS_TCP + +#if !defined(NO_WOLFSSL_MEMORY) && !defined(XMALLOC_USER) +#define XMALLOC(s, h, type) pvPortMalloc((s)) +#define XFREE(p, h, type) vPortFree((p)) +#endif + +#define WOLFSSL_GENSEED_FORTEST + +#define NO_WOLFSSL_DIR +#define NO_WRITEV +#define USE_FAST_MATH +#define TFM_TIMING_RESISTANT +#define NO_MAIN_DRIVER + +#endif + +#ifdef WOLFSSL_TIRTOS + #define SIZEOF_LONG_LONG 8 + #define NO_WRITEV + #define NO_WOLFSSL_DIR + #define USE_FAST_MATH + #define TFM_TIMING_RESISTANT + #define NO_DEV_RANDOM + #define NO_FILESYSTEM + #define USE_CERT_BUFFERS_2048 + #define NO_ERROR_STRINGS + #define USER_TIME + #define HAVE_ECC + #define HAVE_ALPN + #define HAVE_TLS_EXTENSIONS + #define HAVE_AESGCM + #define HAVE_SUPPORTED_CURVES + #define ALT_ECC_SIZE + + #ifdef __IAR_SYSTEMS_ICC__ + #pragma diag_suppress=Pa089 + #elif !defined(__GNUC__) + /* Suppress the sslpro warning */ + #pragma diag_suppress=11 + #endif + + #include +#endif + +#ifdef EBSNET + #include "rtip.h" + + /* #define DEBUG_WOLFSSL */ + #define NO_WOLFSSL_DIR /* tbd */ + + #if (POLLOS) + #define SINGLE_THREADED + #endif + + #if (RTPLATFORM) + #if (!RTP_LITTLE_ENDIAN) + #define BIG_ENDIAN_ORDER + #endif + #else + #if (!KS_LITTLE_ENDIAN) + #define BIG_ENDIAN_ORDER + #endif + #endif + + #if (WINMSP3) + #undef SIZEOF_LONG + #define SIZEOF_LONG_LONG 8 + #else + #sslpro: settings.h - please implement SIZEOF_LONG and SIZEOF_LONG_LONG + #endif + + #define XMALLOC(s, h, type) ((void *)rtp_malloc((s), SSL_PRO_MALLOC)) + #define XFREE(p, h, type) (rtp_free(p)) + #define XREALLOC(p, n, h, t) realloc((p), (n)) + +#endif /* EBSNET */ + +#ifdef WOLFSSL_GAME_BUILD + #define SIZEOF_LONG_LONG 8 + #if defined(__PPU) || defined(__XENON) + #define BIG_ENDIAN_ORDER + #endif +#endif + +#ifdef WOLFSSL_LSR + #define HAVE_WEBSERVER + #define SIZEOF_LONG_LONG 8 + #define WOLFSSL_LOW_MEMORY + #define NO_WRITEV + #define NO_SHA512 + #define NO_DH + /* Allows use of DH with fixed points if uncommented and NO_DH is removed */ + /* WOLFSSL_DH_CONST */ + #define NO_DSA + #define NO_HC128 + #define NO_DEV_RANDOM + #define NO_WOLFSSL_DIR + #define NO_RABBIT + #ifndef NO_FILESYSTEM + #define LSR_FS + #include "inc/hw_types.h" + #include "fs.h" + #endif + #define WOLFSSL_LWIP + #include /* for tcp errno */ + #define WOLFSSL_SAFERTOS + #if defined(__IAR_SYSTEMS_ICC__) + /* enum uses enum */ + #pragma diag_suppress=Pa089 + #endif +#endif + +#ifdef WOLFSSL_SAFERTOS + #ifndef SINGLE_THREADED + #include "SafeRTOS/semphr.h" + #endif + + #include "SafeRTOS/heap.h" + #define XMALLOC(s, h, type) pvPortMalloc((s)) + #define XFREE(p, h, type) vPortFree((p)) + #define XREALLOC(p, n, h, t) pvPortRealloc((p), (n)) +#endif + +#ifdef WOLFSSL_LOW_MEMORY + #undef RSA_LOW_MEM + #define RSA_LOW_MEM + #undef WOLFSSL_SMALL_STACK + #define WOLFSSL_SMALL_STACK + #undef TFM_TIMING_RESISTANT + #define TFM_TIMING_RESISTANT +#endif + +#ifdef FREESCALE_MQX + #define FREESCALE_COMMON + #include "mqx.h" + #ifndef NO_FILESYSTEM + #include "mfs.h" + #if MQX_USE_IO_OLD + #include "fio.h" + #define NO_STDIO_FILESYSTEM + #else + #include "nio.h" + #endif + #endif + #ifndef SINGLE_THREADED + #include "mutex.h" + #endif + + #define XMALLOC_OVERRIDE + #define XMALLOC(s, h, t) (void *)_mem_alloc_system((s)) + #define XFREE(p, h, t) {void* xp = (p); if ((xp)) _mem_free((xp));} + /* Note: MQX has no realloc, using fastmath above */ +#endif + +#ifdef FREESCALE_KSDK_MQX + #define FREESCALE_COMMON + #include + #ifndef NO_FILESYSTEM + #if MQX_USE_IO_OLD + #include + #else + #include + #include + #endif + #endif + #ifndef SINGLE_THREADED + #include + #endif + + #define XMALLOC(s, h, t) (void *)_mem_alloc_system((s)) + #define XFREE(p, h, t) {void* xp = (p); if ((xp)) _mem_free((xp));} + #define XREALLOC(p, n, h, t) _mem_realloc((p), (n)) /* since MQX 4.1.2 */ + + #define MQX_FILE_PTR FILE * + #define IO_SEEK_SET SEEK_SET + #define IO_SEEK_END SEEK_END +#endif /* FREESCALE_KSDK_MQX */ + +#if defined(FREESCALE_FREE_RTOS) || defined(FREESCALE_KSDK_FREERTOS) + /* Allows use of DH with fixed points if uncommented and NO_DH is removed */ + /* WOLFSSL_DH_CONST */ + /* Allows use of DH with fixed points if uncommented and NO_DH is removed */ + /* WOLFSSL_DH_CONST */ + /* Allows use of DH with fixed points if uncommented and NO_DH is removed */ + /* WOLFSSL_DH_CONST */ + #define NO_FILESYSTEM + #define WOLFSSL_CRYPT_HW_MUTEX 1 + + #if !defined(XMALLOC_USER) && !defined(NO_WOLFSSL_MEMORY) + #define XMALLOC(s, h, type) pvPortMalloc((s)) + #define XFREE(p, h, type) vPortFree((p)) + #endif + + //#define USER_TICKS + /* Allows use of DH with fixed points if uncommented and NO_DH is removed */ + /* WOLFSSL_DH_CONST */ + #define WOLFSSL_LWIP + #define FREERTOS_TCP + + #define FREESCALE_FREE_RTOS + #define FREERTOS_SOCKET_ERROR ( -1 ) + #define FREERTOS_EWOULDBLOCK ( -2 ) + #define FREERTOS_EINVAL ( -4 ) + #define FREERTOS_EADDRNOTAVAIL ( -5 ) + #define FREERTOS_EADDRINUSE ( -6 ) + #define FREERTOS_ENOBUFS ( -7 ) + #define FREERTOS_ENOPROTOOPT ( -8 ) +#endif /* FREESCALE_FREE_RTOS || FREESCALE_KSDK_FREERTOS */ + +#ifdef FREESCALE_KSDK_BM + #define FREESCALE_COMMON + #define WOLFSSL_USER_IO + #define SINGLE_THREADED + #define NO_FILESYSTEM + #ifndef TIME_OVERRIDES + #define USER_TICKS + #endif +#endif /* FREESCALE_KSDK_BM */ + +#ifdef FREESCALE_COMMON + #define SIZEOF_LONG_LONG 8 + + /* disable features */ + #undef NO_WRITEV + #define NO_WRITEV + #undef NO_DEV_RANDOM + #define NO_DEV_RANDOM + #undef NO_RABBIT + #define NO_RABBIT + #undef NO_WOLFSSL_DIR + #define NO_WOLFSSL_DIR + #undef NO_RC4 + #define NO_RC4 + + /* enable features */ + #undef USE_FAST_MATH + #define USE_FAST_MATH + + #define USE_CERT_BUFFERS_2048 + #define BENCH_EMBEDDED + + #define TFM_TIMING_RESISTANT + #define ECC_TIMING_RESISTANT + + #undef HAVE_ECC + #define HAVE_ECC + #ifndef NO_AES + #undef HAVE_AESCCM + #define HAVE_AESCCM + #undef HAVE_AESGCM + #define HAVE_AESGCM + #undef WOLFSSL_AES_COUNTER + #define WOLFSSL_AES_COUNTER + #undef WOLFSSL_AES_DIRECT + #define WOLFSSL_AES_DIRECT + #endif + + #ifdef FREESCALE_KSDK_1_3 + #include "fsl_device_registers.h" + #elif !defined(FREESCALE_MQX) + /* Classic MQX does not have fsl_common.h */ + #include "fsl_common.h" + #endif + + /* random seed */ + #define NO_OLD_RNGNAME + #if defined(FSL_FEATURE_SOC_TRNG_COUNT) && (FSL_FEATURE_SOC_TRNG_COUNT > 0) + #define FREESCALE_KSDK_2_0_TRNG + #elif defined(FSL_FEATURE_SOC_RNG_COUNT) && (FSL_FEATURE_SOC_RNG_COUNT > 0) + #ifdef FREESCALE_KSDK_1_3 + #include "fsl_rnga_driver.h" + #define FREESCALE_RNGA + #define RNGA_INSTANCE (0) + #else + #define FREESCALE_KSDK_2_0_RNGA + #endif + #elif !defined(FREESCALE_KSDK_BM) && !defined(FREESCALE_FREE_RTOS) && !defined(FREESCALE_KSDK_FREERTOS) + #define FREESCALE_RNGA + #define RNGA_INSTANCE (0) + /* defaulting to K70 RNGA, user should change if different */ + /* #define FREESCALE_K53_RNGB */ + #define FREESCALE_K70_RNGA + #endif + + /* HW crypto */ + /* automatic enable based on Kinetis feature */ + /* if case manual selection is required, for example for benchmarking purposes, + * just define FREESCALE_USE_MMCAU or FREESCALE_USE_LTC or none of these two macros (for software only) + * both can be enabled simultaneously as LTC has priority over MMCAU in source code. + */ + /* #define FSL_HW_CRYPTO_MANUAL_SELECTION */ + #ifndef FSL_HW_CRYPTO_MANUAL_SELECTION + #if defined(FSL_FEATURE_SOC_MMCAU_COUNT) && FSL_FEATURE_SOC_MMCAU_COUNT + #define FREESCALE_USE_MMCAU + #endif + + #if defined(FSL_FEATURE_SOC_LTC_COUNT) && FSL_FEATURE_SOC_LTC_COUNT + #define FREESCALE_USE_LTC + #endif + #else + /* #define FREESCALE_USE_MMCAU */ + /* #define FREESCALE_USE_LTC */ + #endif +#endif /* FREESCALE_COMMON */ + +/* Classic pre-KSDK mmCAU library */ +#ifdef FREESCALE_USE_MMCAU_CLASSIC + #define FREESCALE_USE_MMCAU + #define FREESCALE_MMCAU_CLASSIC + #define FREESCALE_MMCAU_CLASSIC_SHA +#endif + +/* KSDK mmCAU library */ +#ifdef FREESCALE_USE_MMCAU + /* AES and DES */ + #define FREESCALE_MMCAU + /* MD5, SHA-1 and SHA-256 */ + #define FREESCALE_MMCAU_SHA +#endif /* FREESCALE_USE_MMCAU */ + +#ifdef FREESCALE_USE_LTC + #if defined(FSL_FEATURE_SOC_LTC_COUNT) && FSL_FEATURE_SOC_LTC_COUNT + #define FREESCALE_LTC + #define LTC_BASE LTC0 + + #if defined(FSL_FEATURE_LTC_HAS_DES) && FSL_FEATURE_LTC_HAS_DES + #define FREESCALE_LTC_DES + #endif + + #if defined(FSL_FEATURE_LTC_HAS_GCM) && FSL_FEATURE_LTC_HAS_GCM + #define FREESCALE_LTC_AES_GCM + #endif + + #if defined(FSL_FEATURE_LTC_HAS_SHA) && FSL_FEATURE_LTC_HAS_SHA + #define FREESCALE_LTC_SHA + #endif + + #if defined(FSL_FEATURE_LTC_HAS_PKHA) && FSL_FEATURE_LTC_HAS_PKHA + #define FREESCALE_LTC_ECC + #define FREESCALE_LTC_TFM + + /* the LTC PKHA hardware limit is 2048 bits (256 bytes) for integer arithmetic. + the LTC_MAX_INT_BYTES defines the size of local variables that hold big integers. */ + #ifndef LTC_MAX_INT_BYTES + #define LTC_MAX_INT_BYTES (256) + #endif + + /* This FREESCALE_LTC_TFM_RSA_4096_ENABLE macro can be defined. + * In such a case both software and hardware algorithm + * for TFM is linked in. The decision for which algorithm is used is determined at runtime + * from size of inputs. If inputs and result can fit into LTC (see LTC_MAX_INT_BYTES) + * then we call hardware algorithm, otherwise we call software algorithm. + * + * Chinese reminder theorem is used to break RSA 4096 exponentiations (both public and private key) + * into several computations with 2048-bit modulus and exponents. + */ + /* #define FREESCALE_LTC_TFM_RSA_4096_ENABLE */ + + /* ECC-384, ECC-256, ECC-224 and ECC-192 have been enabled with LTC PKHA acceleration */ + #ifdef HAVE_ECC + #undef ECC_TIMING_RESISTANT + #define ECC_TIMING_RESISTANT + + /* the LTC PKHA hardware limit is 512 bits (64 bytes) for ECC. + the LTC_MAX_ECC_BITS defines the size of local variables that hold ECC parameters + and point coordinates */ + #ifndef LTC_MAX_ECC_BITS + #define LTC_MAX_ECC_BITS (384) + #endif + + /* Enable curves up to 384 bits */ + #if !defined(ECC_USER_CURVES) && !defined(HAVE_ALL_CURVES) + #define ECC_USER_CURVES + #define HAVE_ECC192 + #define HAVE_ECC224 + #undef NO_ECC256 + #define HAVE_ECC384 + #endif + + /* enable features */ + #undef HAVE_CURVE25519 + #define HAVE_CURVE25519 + #undef HAVE_ED25519 + #define HAVE_ED25519 + #undef WOLFSSL_SHA512 + #define WOLFSSL_SHA512 + #endif + #endif + #endif +#endif /* FREESCALE_USE_LTC */ + +#ifdef FREESCALE_LTC_TFM_RSA_4096_ENABLE + #undef USE_CERT_BUFFERS_4096 + #define USE_CERT_BUFFERS_4096 + #undef FP_MAX_BITS + #define FP_MAX_BITS (8192) + + #undef NO_DH + #define NO_DH + #undef NO_DSA + #define NO_DSA +#endif /* FREESCALE_LTC_TFM_RSA_4096_ENABLE */ + +/* if LTC has AES engine but doesn't have GCM, use software with LTC AES ECB mode */ +#if defined(FREESCALE_USE_LTC) && !defined(FREESCALE_LTC_AES_GCM) + #define GCM_TABLE +#endif + +#if defined(WOLFSSL_STM32F2) || defined(WOLFSSL_STM32F4) || \ + defined(WOLFSSL_STM32F7) + + #define SIZEOF_LONG_LONG 8 + #define NO_DEV_RANDOM + #define NO_WOLFSSL_DIR + #undef NO_RABBIT + #define NO_RABBIT + #undef NO_64BIT + #define NO_64BIT + #ifndef NO_STM32_RNG + #undef STM32_RNG + #define STM32_RNG + #endif + #ifndef NO_STM32_CRYPTO + #undef STM32_CRYPTO + #define STM32_CRYPTO + #endif + #ifndef NO_STM32_HASH + #undef STM32_HASH + #define STM32_HASH + #endif + #if !defined(__GNUC__) && !defined(__ICCARM__) + #define KEIL_INTRINSICS + #endif + #define NO_OLD_RNGNAME + #ifdef WOLFSSL_STM32_CUBEMX + #if defined(WOLFSSL_STM32F2) + #include "stm32f2xx_hal.h" + #elif defined(WOLFSSL_STM32F4) + #include "stm32f4xx_hal.h" + #elif defined(WOLFSSL_STM32F7) + #include "stm32f7xx_hal.h" + #endif + + #ifndef STM32_HAL_TIMEOUT + #define STM32_HAL_TIMEOUT 0xFF + #endif + #else + #if defined(WOLFSSL_STM32F2) + #include "stm32f2xx.h" + #ifdef STM32_CRYPTO + #include "stm32f2xx_cryp.h" + #endif + #ifdef STM32_HASH + #include "stm32f2xx_hash.h" + #endif + #elif defined(WOLFSSL_STM32F4) + #include "stm32f4xx.h" + #ifdef STM32_CRYPTO + #include "stm32f4xx_cryp.h" + #endif + #ifdef STM32_HASH + #include "stm32f4xx_hash.h" + #endif + #elif defined(WOLFSSL_STM32F7) + #include "stm32f7xx.h" + #endif + #endif /* WOLFSSL_STM32_CUBEMX */ +#endif /* WOLFSSL_STM32F2 || WOLFSSL_STM32F4 || WOLFSSL_STM32F7 */ + +#ifdef MICRIUM + #include + #include + #include + #include + #include + #include + #include + + #define USE_FAST_MATH + #define TFM_TIMING_RESISTANT + #define ECC_TIMING_RESISTANT + #define WC_RSA_BLINDING + #define HAVE_HASHDRBG + + #define HAVE_ECC + #define ALT_ECC_SIZE + #define TFM_ECC192 + #define TFM_ECC224 + #define TFM_ECC256 + #define TFM_ECC384 + #define TFM_ECC521 + + #define NO_RC4 + #define HAVE_TLS_EXTENSIONS + #define HAVE_SUPPORTED_CURVES + #define HAVE_EXTENDED_MASTER + + #define NO_WOLFSSL_DIR + #define NO_WRITEV + + #ifndef CUSTOM_RAND_GENERATE + #define CUSTOM_RAND_TYPE RAND_NBR + #define CUSTOM_RAND_GENERATE Math_Rand + #endif + + #define WOLFSSL_TYPES + typedef CPU_INT08U byte; + typedef CPU_INT16U word16; + typedef CPU_INT32U word32; + + #define STRING_USER + #define XSTRLEN(pstr) ((CPU_SIZE_T)Str_Len((CPU_CHAR *)(pstr))) + #define XSTRNCPY(pstr_dest, pstr_src, len_max) \ + ((CPU_CHAR *)Str_Copy_N((CPU_CHAR *)(pstr_dest), \ + (CPU_CHAR *)(pstr_src), (CPU_SIZE_T)(len_max))) + #define XSTRNCMP(pstr_1, pstr_2, len_max) \ + ((CPU_INT16S)Str_Cmp_N((CPU_CHAR *)(pstr_1), \ + (CPU_CHAR *)(pstr_2), (CPU_SIZE_T)(len_max))) + #define XSTRNCASECMP(pstr_1, pstr_2, len_max) \ + ((CPU_INT16S)Str_CmpIgnoreCase_N((CPU_CHAR *)(pstr_1), \ + (CPU_CHAR *)(pstr_2), (CPU_SIZE_T)(len_max))) + #define XSTRSTR(pstr, pstr_srch) \ + ((CPU_CHAR *)Str_Str((CPU_CHAR *)(pstr), \ + (CPU_CHAR *)(pstr_srch))) + #define XSTRNSTR(pstr, pstr_srch, len_max) \ + ((CPU_CHAR *)Str_Str_N((CPU_CHAR *)(pstr), \ + (CPU_CHAR *)(pstr_srch),(CPU_SIZE_T)(len_max))) + #define XSTRNCAT(pstr_dest, pstr_cat, len_max) \ + ((CPU_CHAR *)Str_Cat_N((CPU_CHAR *)(pstr_dest), \ + (const CPU_CHAR *)(pstr_cat),(CPU_SIZE_T)(len_max))) + #define XMEMSET(pmem, data_val, size) \ + ((void)Mem_Set((void *)(pmem), (CPU_INT08U) (data_val), \ + (CPU_SIZE_T)(size))) + #define XMEMCPY(pdest, psrc, size) ((void)Mem_Copy((void *)(pdest), \ + (void *)(psrc), (CPU_SIZE_T)(size))) + #define XMEMCMP(pmem_1, pmem_2, size) \ + (((CPU_BOOLEAN)Mem_Cmp((void *)(pmem_1), (void *)(pmem_2), \ + (CPU_SIZE_T)(size))) ? DEF_NO : DEF_YES) + #define XMEMMOVE XMEMCPY + + #if (OS_CFG_MUTEX_EN == DEF_DISABLED) + #define SINGLE_THREADED + #endif + + #if (CPU_CFG_ENDIAN_TYPE == CPU_ENDIAN_TYPE_BIG) + #define BIG_ENDIAN_ORDER + #else + #undef BIG_ENDIAN_ORDER + #define LITTLE_ENDIAN_ORDER + #endif +#endif /* MICRIUM */ + + +#ifdef WOLFSSL_QL + #ifndef WOLFSSL_SEP + #define WOLFSSL_SEP + #endif + #ifndef OPENSSL_EXTRA + #define OPENSSL_EXTRA + #endif + #ifndef SESSION_CERTS + #define SESSION_CERTS + #endif + #ifndef HAVE_AESCCM + #define HAVE_AESCCM + #endif + #ifndef ATOMIC_USER + #define ATOMIC_USER + #endif + #ifndef WOLFSSL_DER_LOAD + #define WOLFSSL_DER_LOAD + #endif + #ifndef KEEP_PEER_CERT + #define KEEP_PEER_CERT + #endif + #ifndef HAVE_ECC + #define HAVE_ECC + #endif + #ifndef SESSION_INDEX + #define SESSION_INDEX + #endif +#endif /* WOLFSSL_QL */ + + +#if defined(WOLFSSL_XILINX) + #define USER_TIME /* XTIME in asn.c */ + #define NO_WOLFSSL_DIR + #define NO_DEV_RANDOM + #define HAVE_AESGCM +#endif + +#if defined(WOLFSSL_XILINX_CRYPT) + #if defined(WOLFSSL_ARMASM) + #error can not use both ARMv8 instructions and XILINX hardened crypto + #endif + #if defined(WOLFSSL_SHA3) + /* only SHA3-384 is supported */ + #undef WOLFSSL_NOSHA3_224 + #undef WOLFSSL_NOSHA3_256 + #undef WOLFSSL_NOSHA3_512 + #define WOLFSSL_NOSHA3_224 + #define WOLFSSL_NOSHA3_256 + #define WOLFSSL_NOSHA3_512 + #endif +#endif /*(WOLFSSL_XILINX_CRYPT)*/ + +#if !defined(XMALLOC_USER) && !defined(MICRIUM_MALLOC) && \ + !defined(WOLFSSL_LEANPSK) && !defined(NO_WOLFSSL_MEMORY) && \ + !defined(XMALLOC_OVERRIDE) + #define USE_WOLFSSL_MEMORY +#endif + + +#if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) + #undef KEEP_PEER_CERT + #define KEEP_PEER_CERT +#endif + + +/* stream ciphers except arc4 need 32bit alignment, intel ok without */ +#ifndef XSTREAM_ALIGN + #if defined(__x86_64__) || defined(__ia64__) || defined(__i386__) + #define NO_XSTREAM_ALIGN + #else + #define XSTREAM_ALIGN + #endif +#endif + +/* write dup cannot be used with secure renegotiation because write dup + * make write side write only and read side read only */ +#if defined(HAVE_WRITE_DUP) && defined(HAVE_SECURE_RENEGOTIATION) + #error "WRITE DUP and SECURE RENEGOTIATION cannot both be on" +#endif + +#ifdef WOLFSSL_SGX + #ifdef _MSC_VER + #define WOLFCRYPT_ONLY + #define NO_RC4 + #define NO_DES3 + #define NO_SHA + #define NO_MD5 + #else + #define HAVE_ECC + #define ECC_TIMING_RESISTANT + #define TFM_TIMING_RESISTANT + #define NO_FILESYSTEM + #define NO_WRITEV + #define NO_MAIN_DRIVER + #define USER_TICKS + #define WOLFSSL_LOG_PRINTF + #define WOLFSSL_DH_CONST + #endif /* _MSC_VER */ + #ifndef NO_RSA + #define WC_RSA_BLINDING + #endif + #define SINGLE_THREADED + #define NO_ASN_TIME /* can not use headers such as windows.h */ + #define HAVE_AESGCM + #define USE_CERT_BUFFERS_2048 + #define USE_FAST_MATH +#endif /* WOLFSSL_SGX */ + +/* FreeScale MMCAU hardware crypto has 4 byte alignment. + However, KSDK fsl_mmcau.h gives API with no alignment + requirements (4 byte alignment is managed internally by fsl_mmcau.c) */ +#ifdef FREESCALE_MMCAU + #ifdef FREESCALE_MMCAU_CLASSIC + #define WOLFSSL_MMCAU_ALIGNMENT 4 + #else + #define WOLFSSL_MMCAU_ALIGNMENT 0 + #endif +#endif + +/* if using hardware crypto and have alignment requirements, specify the + requirement here. The record header of SSL/TLS will prevent easy alignment. + This hint tries to help as much as possible. */ +#ifndef WOLFSSL_GENERAL_ALIGNMENT + #ifdef WOLFSSL_AESNI + #define WOLFSSL_GENERAL_ALIGNMENT 16 + #elif defined(XSTREAM_ALIGN) + #define WOLFSSL_GENERAL_ALIGNMENT 4 + #elif defined(FREESCALE_MMCAU) || defined(FREESCALE_MMCAU_CLASSIC) + #define WOLFSSL_GENERAL_ALIGNMENT WOLFSSL_MMCAU_ALIGNMENT + #else + #define WOLFSSL_GENERAL_ALIGNMENT 0 + #endif +#endif + +#if defined(WOLFSSL_GENERAL_ALIGNMENT) && (WOLFSSL_GENERAL_ALIGNMENT > 0) + #if defined(_MSC_VER) + #define XGEN_ALIGN __declspec(align(WOLFSSL_GENERAL_ALIGNMENT)) + #elif defined(__GNUC__) + #define XGEN_ALIGN __attribute__((aligned(WOLFSSL_GENERAL_ALIGNMENT))) + #else + #define XGEN_ALIGN + #endif +#else + #define XGEN_ALIGN +#endif + +#ifdef HAVE_CRL + /* not widely supported yet */ + #undef NO_SKID + #define NO_SKID +#endif + + +#ifdef __INTEL_COMPILER + #pragma warning(disable:2259) /* explicit casts to smaller sizes, disable */ +#endif + +/* user can specify what curves they want with ECC_USER_CURVES otherwise + * all curves are on by default for now */ +#ifndef ECC_USER_CURVES + #ifndef HAVE_ALL_CURVES + #define HAVE_ALL_CURVES + #endif +#endif + +/* ECC Configs */ +#ifdef HAVE_ECC + /* By default enable Sign, Verify, DHE, Key Import and Key Export unless explicitly disabled */ + #ifndef NO_ECC_SIGN + #undef HAVE_ECC_SIGN + #define HAVE_ECC_SIGN + #endif + #ifndef NO_ECC_VERIFY + #undef HAVE_ECC_VERIFY + #define HAVE_ECC_VERIFY + #endif + #ifndef NO_ECC_DHE + #undef HAVE_ECC_DHE + #define HAVE_ECC_DHE + #endif + #ifndef NO_ECC_KEY_IMPORT + #undef HAVE_ECC_KEY_IMPORT + #define HAVE_ECC_KEY_IMPORT + #endif + #ifndef NO_ECC_KEY_EXPORT + #undef HAVE_ECC_KEY_EXPORT + #define HAVE_ECC_KEY_EXPORT + #endif +#endif /* HAVE_ECC */ + +/* Curve255519 Configs */ +#ifdef HAVE_CURVE25519 + /* By default enable shared secret, key export and import */ + #ifndef NO_CURVE25519_SHARED_SECRET + #undef HAVE_CURVE25519_SHARED_SECRET + #define HAVE_CURVE25519_SHARED_SECRET + #endif + #ifndef NO_CURVE25519_KEY_EXPORT + #undef HAVE_CURVE25519_KEY_EXPORT + #define HAVE_CURVE25519_KEY_EXPORT + #endif + #ifndef NO_CURVE25519_KEY_IMPORT + #undef HAVE_CURVE25519_KEY_IMPORT + #define HAVE_CURVE25519_KEY_IMPORT + #endif +#endif /* HAVE_CURVE25519 */ + +/* Ed255519 Configs */ +#ifdef HAVE_ED25519 + /* By default enable sign, verify, key export and import */ + #ifndef NO_ED25519_SIGN + #undef HAVE_ED25519_SIGN + #define HAVE_ED25519_SIGN + #endif + #ifndef NO_ED25519_VERIFY + #undef HAVE_ED25519_VERIFY + #define HAVE_ED25519_VERIFY + #endif + #ifndef NO_ED25519_KEY_EXPORT + #undef HAVE_ED25519_KEY_EXPORT + #define HAVE_ED25519_KEY_EXPORT + #endif + #ifndef NO_ED25519_KEY_IMPORT + #undef HAVE_ED25519_KEY_IMPORT + #define HAVE_ED25519_KEY_IMPORT + #endif +#endif /* HAVE_ED25519 */ + +/* AES Config */ +#ifndef NO_AES + /* By default enable all AES key sizes, decryption and CBC */ + #ifndef AES_MAX_KEY_SIZE + #undef AES_MAX_KEY_SIZE + #define AES_MAX_KEY_SIZE 256 + #endif + #ifndef NO_AES_DECRYPT + #undef HAVE_AES_DECRYPT + #define HAVE_AES_DECRYPT + #endif + #ifndef NO_AES_CBC + #undef HAVE_AES_CBC + #define HAVE_AES_CBC + #else + #ifndef WOLFCRYPT_ONLY + #error "AES CBC is required for TLS and can only be disabled for WOLFCRYPT_ONLY builds" + #endif + #endif + #ifdef WOLFSSL_AES_XTS + /* AES-XTS makes calls to AES direct functions */ + #ifndef WOLFSSL_AES_DIRECT + #define WOLFSSL_AES_DIRECT + #endif + #endif +#endif + +/* if desktop type system and fastmath increase default max bits */ +#ifdef WOLFSSL_X86_64_BUILD + #ifdef USE_FAST_MATH + #ifndef FP_MAX_BITS + #define FP_MAX_BITS 8192 + #endif + #endif +#endif + +/* If using the max strength build, ensure OLD TLS is disabled. */ +#ifdef WOLFSSL_MAX_STRENGTH + #undef NO_OLD_TLS + #define NO_OLD_TLS +#endif + + +/* Default AES minimum auth tag sz, allow user to override */ +#ifndef WOLFSSL_MIN_AUTH_TAG_SZ + #define WOLFSSL_MIN_AUTH_TAG_SZ 12 +#endif + + +/* sniffer requires: + * static RSA cipher suites + * session stats and peak stats + */ +#ifdef WOLFSSL_SNIFFER + #ifndef WOLFSSL_STATIC_RSA + #define WOLFSSL_STATIC_RSA + #endif + #ifndef WOLFSSL_SESSION_STATS + #define WOLFSSL_SESSION_STATS + #endif + #ifndef WOLFSSL_PEAK_SESSIONS + #define WOLFSSL_PEAK_SESSIONS + #endif +#endif + +/* Decode Public Key extras on by default, user can turn off with + * WOLFSSL_NO_DECODE_EXTRA */ +#ifndef WOLFSSL_NO_DECODE_EXTRA + #ifndef RSA_DECODE_EXTRA + #define RSA_DECODE_EXTRA + #endif + #ifndef ECC_DECODE_EXTRA + #define ECC_DECODE_EXTRA + #endif +#endif + +/* C Sharp wrapper defines */ +#ifdef HAVE_CSHARP + #ifndef WOLFSSL_DTLS + #define WOLFSSL_DTLS + #endif + #undef NO_PSK + #undef NO_SHA256 + #undef NO_DH +#endif + +/* Asynchronous Crypto */ +#ifdef WOLFSSL_ASYNC_CRYPT + /* Make sure wolf events are enabled */ + #undef HAVE_WOLF_EVENT + #define HAVE_WOLF_EVENT + + #ifdef WOLFSSL_ASYNC_CRYPT_TEST + #define WC_ASYNC_DEV_SIZE 320+24 + #else + #define WC_ASYNC_DEV_SIZE 320 + #endif + + #if !defined(HAVE_CAVIUM) && !defined(HAVE_INTEL_QA) && \ + !defined(WOLFSSL_ASYNC_CRYPT_TEST) + #error No async hardware defined with WOLFSSL_ASYNC_CRYPT! + #endif + + /* Enable ECC_CACHE_CURVE for ASYNC */ + #if !defined(ECC_CACHE_CURVE) + #define ECC_CACHE_CURVE + #endif +#endif /* WOLFSSL_ASYNC_CRYPT */ +#ifndef WC_ASYNC_DEV_SIZE + #define WC_ASYNC_DEV_SIZE 0 +#endif + +/* leantls checks */ +#ifdef WOLFSSL_LEANTLS + #ifndef HAVE_ECC + #error leantls build needs ECC + #endif +#endif /* WOLFSSL_LEANTLS*/ + +/* restriction with static memory */ +#ifdef WOLFSSL_STATIC_MEMORY + #if defined(HAVE_IO_POOL) || defined(XMALLOC_USER) || defined(NO_WOLFSSL_MEMORY) + #error static memory cannot be used with HAVE_IO_POOL, XMALLOC_USER or NO_WOLFSSL_MEMORY + #endif + #if !defined(USE_FAST_MATH) && !defined(NO_BIG_INT) + #error static memory requires fast math please define USE_FAST_MATH + #endif + #ifdef WOLFSSL_SMALL_STACK + #error static memory does not support small stack please undefine + #endif +#endif /* WOLFSSL_STATIC_MEMORY */ + +#ifdef HAVE_AES_KEYWRAP + #ifndef WOLFSSL_AES_DIRECT + #error AES key wrap requires AES direct please define WOLFSSL_AES_DIRECT + #endif +#endif + +#ifdef HAVE_PKCS7 + #ifndef HAVE_AES_KEYWRAP + #error PKCS7 requires AES key wrap please define HAVE_AES_KEYWRAP + #endif + #ifndef HAVE_X963_KDF + #error PKCS7 requires X963 KDF please define HAVE_X963_KDF + #endif +#endif + +#if !defined(WOLFCRYPT_ONLY) && !defined(NO_OLD_TLS) && \ + (defined(NO_SHA) || defined(NO_MD5)) + #error old TLS requires MD5 and SHA +#endif + +/* for backwards compatibility */ +#if defined(TEST_IPV6) && !defined(WOLFSSL_IPV6) + #define WOLFSSL_IPV6 +#endif + + +/* Place any other flags or defines here */ + +#if defined(WOLFSSL_MYSQL_COMPATIBLE) && defined(_WIN32) \ + && defined(HAVE_GMTIME_R) + #undef HAVE_GMTIME_R /* don't trust macro with windows */ +#endif /* WOLFSSL_MYSQL_COMPATIBLE */ + +#if defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) + #define SSL_OP_NO_COMPRESSION SSL_OP_NO_COMPRESSION + #define OPENSSL_NO_ENGINE + #define X509_CHECK_FLAG_ALWAYS_CHECK_SUBJECT + #ifndef OPENSSL_EXTRA + #define OPENSSL_EXTRA + #endif + #ifndef HAVE_SESSION_TICKET + #define HAVE_SESSION_TICKET + #endif + #ifndef HAVE_OCSP + #define HAVE_OCSP + #endif + #ifndef KEEP_OUR_CERT + #define KEEP_OUR_CERT + #endif + #ifndef HAVE_SNI + #define HAVE_SNI + #endif +#endif + +#if defined(WOLFSSL_NGINX) + #define SSL_CTRL_SET_TLSEXT_HOSTNAME +#endif + +/* both CURVE and ED small math should be enabled */ +#ifdef CURVED25519_SMALL + #define CURVE25519_SMALL + #define ED25519_SMALL +#endif + + +#ifndef WOLFSSL_ALERT_COUNT_MAX + #define WOLFSSL_ALERT_COUNT_MAX 5 +#endif + +/* warning for not using harden build options (default with ./configure) */ +#ifndef WC_NO_HARDEN + #if (defined(USE_FAST_MATH) && !defined(TFM_TIMING_RESISTANT)) || \ + (defined(HAVE_ECC) && !defined(ECC_TIMING_RESISTANT)) || \ + (!defined(NO_RSA) && !defined(WC_RSA_BLINDING) && !defined(HAVE_FIPS)) + + #ifndef _MSC_VER + #warning "For timing resistance / side-channel attack prevention consider using harden options" + #else + #pragma message("Warning: For timing resistance / side-channel attack prevention consider using harden options") + #endif + #endif +#endif + +#ifdef __cplusplus + } /* extern "C" */ +#endif + +#endif diff --git a/include/wolfssl/wolfcrypt/visibility.h b/include/wolfssl/wolfcrypt/visibility.h new file mode 100644 index 00000000..78191aa4 --- /dev/null +++ b/include/wolfssl/wolfcrypt/visibility.h @@ -0,0 +1,76 @@ +/* visibility.h + * + * Copyright (C) 2006-2017 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + + +/* Visibility control macros */ + +#ifndef WOLF_CRYPT_VISIBILITY_H +#define WOLF_CRYPT_VISIBILITY_H + + +/* for compatibility and so that fips is using same name of macro @wc_fips */ +#ifdef HAVE_FIPS + #include + #define WOLFSSL_API CYASSL_API + #define WOLFSSL_LOCAL CYASSL_LOCAL +#else + +/* WOLFSSL_API is used for the public API symbols. + It either imports or exports (or does nothing for static builds) + + WOLFSSL_LOCAL is used for non-API symbols (private). +*/ + +#if defined(BUILDING_WOLFSSL) + #if defined(HAVE_VISIBILITY) && HAVE_VISIBILITY + #define WOLFSSL_API __attribute__ ((visibility("default"))) + #define WOLFSSL_LOCAL __attribute__ ((visibility("hidden"))) + #elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x550) + #define WOLFSSL_API __global + #define WOLFSSL_LOCAL __hidden + #elif defined(_MSC_VER) || defined(__MINGW32__) + #if defined(WOLFSSL_DLL) + #define WOLFSSL_API __declspec(dllexport) + #else + #define WOLFSSL_API + #endif + #define WOLFSSL_LOCAL + #else + #define WOLFSSL_API + #define WOLFSSL_LOCAL + #endif /* HAVE_VISIBILITY */ +#else /* BUILDING_WOLFSSL */ + #if defined(_MSC_VER) || defined(__MINGW32__) + #if defined(WOLFSSL_DLL) + #define WOLFSSL_API __declspec(dllimport) + #else + #define WOLFSSL_API + #endif + #define WOLFSSL_LOCAL + #else + #define WOLFSSL_API + #define WOLFSSL_LOCAL + #endif +#endif /* BUILDING_WOLFSSL */ + +#endif /* HAVE_FIPS */ +#endif /* WOLF_CRYPT_VISIBILITY_H */ + diff --git a/include/wolfssl/wolfio.h b/include/wolfssl/wolfio.h new file mode 100644 index 00000000..9055a51c --- /dev/null +++ b/include/wolfssl/wolfio.h @@ -0,0 +1,432 @@ +/* io.h + * + * Copyright (C) 2006-2017 wolfSSL Inc. + * + * This file is part of wolfSSL. + * + * wolfSSL is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * wolfSSL is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA + */ + + +#ifndef WOLFSSL_IO_H +#define WOLFSSL_IO_H + +#ifdef __cplusplus + extern "C" { +#endif + +/* OCSP and CRL_IO require HTTP client */ +#if defined(HAVE_OCSP) || defined(HAVE_CRL_IO) + #ifndef HAVE_HTTP_CLIENT + #define HAVE_HTTP_CLIENT + #endif +#endif + +#if !defined(WOLFSSL_USER_IO) + /* Micrium uses NetSock I/O callbacks in wolfio.c */ + #if !defined(USE_WOLFSSL_IO) && !defined(MICRIUM) + #define USE_WOLFSSL_IO + #endif +#endif + + +#if defined(USE_WOLFSSL_IO) || defined(HAVE_HTTP_CLIENT) + +#ifdef HAVE_LIBZ + #include "zlib.h" +#endif + +#ifndef USE_WINDOWS_API + #ifdef WOLFSSL_LWIP + /* lwIP needs to be configured to use sockets API in this mode */ + /* LWIP_SOCKET 1 in lwip/opt.h or in build */ + #include "lwip/sockets.h" + #include + #ifndef LWIP_PROVIDE_ERRNO + #define LWIP_PROVIDE_ERRNO 1 + #endif + #elif defined(FREESCALE_MQX) + #include + #include + #elif defined(FREESCALE_KSDK_MQX) + #include + #elif defined(WOLFSSL_MDK_ARM) || defined(WOLFSSL_KEIL_TCP_NET) + #if !defined(WOLFSSL_MDK_ARM) + #include "cmsis_os.h" + #include "rl_net.h" + #else + #include + #endif + #include "errno.h" + #define SOCKET_T int + #elif defined(WOLFSSL_TIRTOS) + #include + #elif defined(FREERTOS_TCP) + #include "FreeRTOS_Sockets.h" + #elif defined(WOLFSSL_IAR_ARM) + /* nothing */ + #elif defined(WOLFSSL_VXWORKS) + #include + #include + #elif defined(WOLFSSL_ATMEL) + #include "socket/include/socket.h" + #elif defined(INTIME_RTOS) + #undef MIN + #undef MAX + #include + #include + #include + #include + #include + #include + /* defines these, to avoid conflict, do undef */ + #undef SOCKADDR + #undef SOCKADDR_IN + #elif defined(WOLFSSL_PRCONNECT_PRO) + #include + #include + #include + #include + #include + #include + #include + #elif defined(WOLFSSL_SGX) + #include + #elif !defined(WOLFSSL_NO_SOCK) + #include + #include + #ifndef EBSNET + #include + #endif + #include + + #if defined(HAVE_RTP_SYS) + #include + #elif defined(EBSNET) + #include "rtipapi.h" /* errno */ + #include "socket.h" + #elif !defined(DEVKITPRO) && !defined(WOLFSSL_PICOTCP) + #include + #include + #include + #include + #ifdef __PPU + #include + #else + #include + #endif + #endif + #endif +#endif /* USE_WINDOWS_API */ + +#ifdef __sun + #include +#endif + +#ifdef USE_WINDOWS_API + /* no epipe yet */ + #ifndef WSAEPIPE + #define WSAEPIPE -12345 + #endif + #define SOCKET_EWOULDBLOCK WSAEWOULDBLOCK + #define SOCKET_EAGAIN WSAETIMEDOUT + #define SOCKET_ECONNRESET WSAECONNRESET + #define SOCKET_EINTR WSAEINTR + #define SOCKET_EPIPE WSAEPIPE + #define SOCKET_ECONNREFUSED WSAENOTCONN + #define SOCKET_ECONNABORTED WSAECONNABORTED + #define close(s) closesocket(s) +#elif defined(__PPU) + #define SOCKET_EWOULDBLOCK SYS_NET_EWOULDBLOCK + #define SOCKET_EAGAIN SYS_NET_EAGAIN + #define SOCKET_ECONNRESET SYS_NET_ECONNRESET + #define SOCKET_EINTR SYS_NET_EINTR + #define SOCKET_EPIPE SYS_NET_EPIPE + #define SOCKET_ECONNREFUSED SYS_NET_ECONNREFUSED + #define SOCKET_ECONNABORTED SYS_NET_ECONNABORTED +#elif defined(FREESCALE_MQX) || defined(FREESCALE_KSDK_MQX) + #if MQX_USE_IO_OLD + /* RTCS old I/O doesn't have an EWOULDBLOCK */ + #define SOCKET_EWOULDBLOCK EAGAIN + #define SOCKET_EAGAIN EAGAIN + #define SOCKET_ECONNRESET RTCSERR_TCP_CONN_RESET + #define SOCKET_EINTR EINTR + #define SOCKET_EPIPE EPIPE + #define SOCKET_ECONNREFUSED RTCSERR_TCP_CONN_REFUSED + #define SOCKET_ECONNABORTED RTCSERR_TCP_CONN_ABORTED + #else + #define SOCKET_EWOULDBLOCK NIO_EWOULDBLOCK + #define SOCKET_EAGAIN NIO_EAGAIN + #define SOCKET_ECONNRESET NIO_ECONNRESET + #define SOCKET_EINTR NIO_EINTR + #define SOCKET_EPIPE NIO_EPIPE + #define SOCKET_ECONNREFUSED NIO_ECONNREFUSED + #define SOCKET_ECONNABORTED NIO_ECONNABORTED + #endif +#elif defined(WOLFSSL_MDK_ARM)|| defined(WOLFSSL_KEIL_TCP_NET) + #if !defined(WOLFSSL_MDK_ARM) + #define SOCKET_EWOULDBLOCK BSD_ERROR_WOULDBLOCK + #define SOCKET_EAGAIN BSD_ERROR_LOCKED + #define SOCKET_ECONNRESET BSD_ERROR_CLOSED + #define SOCKET_EINTR BSD_ERROR + #define SOCKET_EPIPE BSD_ERROR + #define SOCKET_ECONNREFUSED BSD_ERROR + #define SOCKET_ECONNABORTED BSD_ERROR + #else + #define SOCKET_EWOULDBLOCK SCK_EWOULDBLOCK + #define SOCKET_EAGAIN SCK_ELOCKED + #define SOCKET_ECONNRESET SCK_ECLOSED + #define SOCKET_EINTR SCK_ERROR + #define SOCKET_EPIPE SCK_ERROR + #define SOCKET_ECONNREFUSED SCK_ERROR + #define SOCKET_ECONNABORTED SCK_ERROR + #endif +#elif defined(WOLFSSL_PICOTCP) + #define SOCKET_EWOULDBLOCK PICO_ERR_EAGAIN + #define SOCKET_EAGAIN PICO_ERR_EAGAIN + #define SOCKET_ECONNRESET PICO_ERR_ECONNRESET + #define SOCKET_EINTR PICO_ERR_EINTR + #define SOCKET_EPIPE PICO_ERR_EIO + #define SOCKET_ECONNREFUSED PICO_ERR_ECONNREFUSED + #define SOCKET_ECONNABORTED PICO_ERR_ESHUTDOWN +#elif defined(FREERTOS_TCP) + #define SOCKET_EWOULDBLOCK FREERTOS_EWOULDBLOCK + #define SOCKET_EAGAIN FREERTOS_EWOULDBLOCK + #define SOCKET_ECONNRESET FREERTOS_SOCKET_ERROR + #define SOCKET_EINTR FREERTOS_SOCKET_ERROR + #define SOCKET_EPIPE FREERTOS_SOCKET_ERROR + #define SOCKET_ECONNREFUSED FREERTOS_SOCKET_ERROR + #define SOCKET_ECONNABORTED FREERTOS_SOCKET_ERROR +#else + #define SOCKET_EWOULDBLOCK EWOULDBLOCK + #define SOCKET_EAGAIN EAGAIN + #define SOCKET_ECONNRESET ECONNRESET + #define SOCKET_EINTR EINTR + #define SOCKET_EPIPE EPIPE + #define SOCKET_ECONNREFUSED ECONNREFUSED + #define SOCKET_ECONNABORTED ECONNABORTED +#endif /* USE_WINDOWS_API */ + + +#ifdef DEVKITPRO + /* from network.h */ + int net_send(int, const void*, int, unsigned int); + int net_recv(int, void*, int, unsigned int); + #define SEND_FUNCTION net_send + #define RECV_FUNCTION net_recv +#elif defined(WOLFSSL_LWIP) + #define SEND_FUNCTION lwip_send + #define RECV_FUNCTION lwip_recv +#elif defined(WOLFSSL_PICOTCP) + #define SEND_FUNCTION pico_send + #define RECV_FUNCTION pico_recv +#elif defined(FREERTOS_TCP) + #define RECV_FUNCTION(a,b,c,d) FreeRTOS_recv((Socket_t)(a),(void*)(b), (size_t)(c), (BaseType_t)(d)) + #define SEND_FUNCTION(a,b,c,d) FreeRTOS_send((Socket_t)(a),(void*)(b), (size_t)(c), (BaseType_t)(d)) +#elif defined(WOLFSSL_VXWORKS) + #define SEND_FUNCTION send + #define RECV_FUNCTION recv +#else + #define SEND_FUNCTION send + #define RECV_FUNCTION recv + #if !defined(HAVE_SOCKADDR) && !defined(WOLFSSL_NO_SOCK) + #define HAVE_SOCKADDR + #endif +#endif + +#ifdef USE_WINDOWS_API + typedef unsigned int SOCKET_T; +#else + typedef int SOCKET_T; +#endif + +#ifndef WOLFSSL_NO_SOCK + #ifndef XSOCKLENT + #ifdef USE_WINDOWS_API + #define XSOCKLENT int + #else + #define XSOCKLENT socklen_t + #endif + #endif + + /* Socket Addr Support */ + #ifdef HAVE_SOCKADDR + typedef struct sockaddr SOCKADDR; + typedef struct sockaddr_storage SOCKADDR_S; + typedef struct sockaddr_in SOCKADDR_IN; + #ifdef WOLFSSL_IPV6 + typedef struct sockaddr_in6 SOCKADDR_IN6; + #endif + typedef struct hostent HOSTENT; + #endif /* HAVE_SOCKADDR */ + + #ifdef HAVE_GETADDRINFO + typedef struct addrinfo ADDRINFO; + #endif +#endif /* WOLFSSL_NO_SOCK */ + + +/* IO API's */ +#ifdef HAVE_IO_TIMEOUT + WOLFSSL_API int wolfIO_SetBlockingMode(SOCKET_T sockfd, int non_blocking); + WOLFSSL_API void wolfIO_SetTimeout(int to_sec);; + WOLFSSL_API int wolfIO_Select(SOCKET_T sockfd, int to_sec); +#endif +WOLFSSL_API int wolfIO_TcpConnect(SOCKET_T* sockfd, const char* ip, + unsigned short port, int to_sec); +WOLFSSL_API int wolfIO_Send(SOCKET_T sd, char *buf, int sz, int wrFlags); +WOLFSSL_API int wolfIO_Recv(SOCKET_T sd, char *buf, int sz, int rdFlags); + +#endif /* USE_WOLFSSL_IO || HAVE_HTTP_CLIENT */ + + +#if defined(USE_WOLFSSL_IO) + /* default IO callbacks */ + WOLFSSL_API int EmbedReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx); + WOLFSSL_API int EmbedSend(WOLFSSL* ssl, char* buf, int sz, void* ctx); + + #ifdef WOLFSSL_DTLS + WOLFSSL_API int EmbedReceiveFrom(WOLFSSL* ssl, char* buf, int sz, void*); + WOLFSSL_API int EmbedSendTo(WOLFSSL* ssl, char* buf, int sz, void* ctx); + WOLFSSL_API int EmbedGenerateCookie(WOLFSSL* ssl, unsigned char* buf, + int sz, void*); + #ifdef WOLFSSL_MULTICAST + WOLFSSL_API int EmbedReceiveFromMcast(WOLFSSL* ssl, + char* buf, int sz, void*); + #endif /* WOLFSSL_MULTICAST */ + #ifdef WOLFSSL_SESSION_EXPORT + WOLFSSL_API int EmbedGetPeer(WOLFSSL* ssl, char* ip, int* ipSz, + unsigned short* port, int* fam); + WOLFSSL_API int EmbedSetPeer(WOLFSSL* ssl, char* ip, int ipSz, + unsigned short port, int fam); + #endif /* WOLFSSL_SESSION_EXPORT */ + #endif /* WOLFSSL_DTLS */ +#endif /* USE_WOLFSSL_IO */ + +#ifdef HAVE_OCSP + WOLFSSL_API int wolfIO_HttpBuildRequestOcsp(const char* domainName, + const char* path, int ocspReqSz, unsigned char* buf, int bufSize); + WOLFSSL_API int wolfIO_HttpProcessResponseOcsp(int sfd, + unsigned char** respBuf, unsigned char* httpBuf, int httpBufSz, + void* heap); + + WOLFSSL_API int EmbedOcspLookup(void*, const char*, int, unsigned char*, + int, unsigned char**); + WOLFSSL_API void EmbedOcspRespFree(void*, unsigned char*); +#endif + +#ifdef HAVE_CRL_IO + WOLFSSL_API int wolfIO_HttpBuildRequestCrl(const char* url, int urlSz, + const char* domainName, unsigned char* buf, int bufSize); + WOLFSSL_API int wolfIO_HttpProcessResponseCrl(WOLFSSL_CRL* crl, int sfd, + unsigned char* httpBuf, int httpBufSz); + + WOLFSSL_API int EmbedCrlLookup(WOLFSSL_CRL* crl, const char* url, + int urlSz); +#endif + + +#if defined(HAVE_HTTP_CLIENT) + WOLFSSL_API int wolfIO_DecodeUrl(const char* url, int urlSz, char* outName, + char* outPath, unsigned short* outPort); + + WOLFSSL_API int wolfIO_HttpBuildRequest(const char* reqType, + const char* domainName, const char* path, int pathLen, int reqSz, + const char* contentType, unsigned char* buf, int bufSize); + WOLFSSL_API int wolfIO_HttpProcessResponse(int sfd, const char* appStr, + unsigned char** respBuf, unsigned char* httpBuf, int httpBufSz, + int dynType, void* heap); +#endif /* HAVE_HTTP_CLIENT */ + + +/* I/O callbacks */ +typedef int (*CallbackIORecv)(WOLFSSL *ssl, char *buf, int sz, void *ctx); +typedef int (*CallbackIOSend)(WOLFSSL *ssl, char *buf, int sz, void *ctx); +WOLFSSL_API void wolfSSL_SetIORecv(WOLFSSL_CTX*, CallbackIORecv); +WOLFSSL_API void wolfSSL_SetIOSend(WOLFSSL_CTX*, CallbackIOSend); + +WOLFSSL_API void wolfSSL_SetIOReadCtx( WOLFSSL* ssl, void *ctx); +WOLFSSL_API void wolfSSL_SetIOWriteCtx(WOLFSSL* ssl, void *ctx); + +WOLFSSL_API void* wolfSSL_GetIOReadCtx( WOLFSSL* ssl); +WOLFSSL_API void* wolfSSL_GetIOWriteCtx(WOLFSSL* ssl); + +WOLFSSL_API void wolfSSL_SetIOReadFlags( WOLFSSL* ssl, int flags); +WOLFSSL_API void wolfSSL_SetIOWriteFlags(WOLFSSL* ssl, int flags); + + +#ifdef HAVE_NETX + WOLFSSL_LOCAL int NetX_Receive(WOLFSSL *ssl, char *buf, int sz, void *ctx); + WOLFSSL_LOCAL int NetX_Send(WOLFSSL *ssl, char *buf, int sz, void *ctx); + + WOLFSSL_API void wolfSSL_SetIO_NetX(WOLFSSL* ssl, NX_TCP_SOCKET* nxsocket, + ULONG waitoption); +#endif /* HAVE_NETX */ + +#ifdef MICRIUM + WOLFSSL_LOCAL int MicriumSend(WOLFSSL* ssl, char* buf, int sz, void* ctx); + WOLFSSL_LOCAL int MicriumReceive(WOLFSSL* ssl, char* buf, int sz, + void* ctx); + WOLFSSL_LOCAL int MicriumReceiveFrom(WOLFSSL* ssl, char* buf, int sz, + void* ctx); + WOLFSSL_LOCAL int MicriumSendTo(WOLFSSL* ssl, char* buf, int sz, void* ctx); +#endif /* MICRIUM */ + +#ifdef WOLFSSL_DTLS + typedef int (*CallbackGenCookie)(WOLFSSL* ssl, unsigned char* buf, int sz, + void* ctx); + WOLFSSL_API void wolfSSL_CTX_SetGenCookie(WOLFSSL_CTX*, CallbackGenCookie); + WOLFSSL_API void wolfSSL_SetCookieCtx(WOLFSSL* ssl, void *ctx); + WOLFSSL_API void* wolfSSL_GetCookieCtx(WOLFSSL* ssl); + + #ifdef WOLFSSL_SESSION_EXPORT + typedef int (*CallbackGetPeer)(WOLFSSL* ssl, char* ip, int* ipSz, + unsigned short* port, int* fam); + typedef int (*CallbackSetPeer)(WOLFSSL* ssl, char* ip, int ipSz, + unsigned short port, int fam); + + WOLFSSL_API void wolfSSL_CTX_SetIOGetPeer(WOLFSSL_CTX*, CallbackGetPeer); + WOLFSSL_API void wolfSSL_CTX_SetIOSetPeer(WOLFSSL_CTX*, CallbackSetPeer); + #endif /* WOLFSSL_SESSION_EXPORT */ +#endif + + + +#ifndef XINET_NTOP + #define XINET_NTOP(a,b,c,d) inet_ntop((a),(b),(c),(d)) +#endif +#ifndef XINET_PTON + #define XINET_PTON(a,b,c) inet_pton((a),(b),(c)) +#endif +#ifndef XHTONS + #define XHTONS(a) htons((a)) +#endif +#ifndef XNTOHS + #define XNTOHS(a) ntohs((a)) +#endif + +#ifndef WOLFSSL_IP4 + #define WOLFSSL_IP4 AF_INET +#endif +#ifndef WOLFSSL_IP6 + #define WOLFSSL_IP6 AF_INET6 +#endif + + +#ifdef __cplusplus + } /* extern "C" */ +#endif + +#endif /* WOLFSSL_IO_H */ diff --git a/lib/libwolfssl.a b/lib/libwolfssl.a new file mode 100644 index 0000000000000000000000000000000000000000..885d3b504fedc9cafb6aac41da54512a8b1d85c8 GIT binary patch literal 899644 zcmeF430PFs|NrlufdOPd824P78I?srhXDm#nPCwW6af*pV1Qv!HfILGr9w19(^53I z%s@-c7MC{57BM4D&80FmEj25(EVVK+9Te&y^X?Ad@AhU`VUJ>gGpCKfOLeuMg=Lu2$=~DCwtK9TKL~hjIF>RtzIs$}r)N z-2a@tjbWtcGi@2>zvutB4P-<2F#l`k$r45;IpyBD%>VDF%Y<}>JLmt%xIE}wpT@Y{ z?`%5DxcvA0kGFv$X$JG(^MBq39xm;fW@m^u;~}2W3dZ9g@f6Re-eWxfd;Yf#{vVG4 zuYTv4|FyH?F~)1wF8+M7594*eb5$ z$eb6XPc)b0+X@&+sphHW=8_yUFWcynG(FvHu@;t=aJqt0i!Gsqix4iOvL~B!Yzes( zZ79kwg@oFrSWU^6!f7U(8AU-gN^{LjT4|calv`+nFH=!MNl{@*3mqkdm*goq)(DB| zsJuL@+15Ncnu-xxC%Ux6W=4^OT+6eI3Ui#9-cy@ms$i({h9cWYQ?c2~1xQLQ&$dBt zWnwFB7E_Kb1{Gk^O+|&d5V!ze#I(X$-1Pv{&QkFtf(a7@R zY$Qi1Q_YevpJ7@l*(RGTRx_0?#av{v6;3ldHHTnBf!VSMmwWK8D)$yThdCC&Bd{m)RtmM7#1i=S}AnWU@|vU1Z8Ya4j*<{rrJs^ z=Gf@y%ovmfZA#+}-6PddpCMh#fldupV9uH1jG%1MNbpU)C?vakq{5ja`;=>7z zQyLFk)5OM5>A02>8po-irb`}U%p4IrPH1T{L@_PWIf4`yJCbi=Nz!I2&NF&P5>G|o zf)tn0PZyaPosuYI>j*mXHKZ7lgh(!9F3iQoXC_M{#URDeILS90A@ka!jzpYrp~k$m;^N>eZT&qO<|e2I9CWD z%N&WJ7?fCBP3X;G<`OZrRdj03$srCAD?~xTOI$TDUK{lhTYxfxan@$-ln$A@CAIn5QBBTGjXF~~U6YPNB=2SLt6&Y+Y+ zWtLK!+yQN7Zgx>-S!p5W*%lF|++0aSv8jxPH`$b!EBJ`ag1c0rBG)Wfe6x+OXiH@Y@DhDXjqcW2 zanH@nvy>LY#oe*Ui;ujwLucZ9$D_2I>j%e{nJlJaXXh1|EaqJFXO0E6%g4YIS_Few z65(vxW_r<>>*Y+enaKvA@`x#Jjl%T>Mr~$UdA4XC)~JRH6x`mqc@jip4@H z^NLLQjtX$VijlYtW)@(clO(o^I??$w+;#G%w=|PzMZ?14GOS#L@tDis2dF~k$_MHz zBm0MnE(B9jNs5Ga;;|41A5Hw!Bw{il=a$L%^4!CJ8Gkp)EG;Q=_z+9U-7zvPSiK0j zi4j5?NsL%wA*OjB-5n`9v{*B3rI~1FQ2~)O7DpcmX_1w*75M5%@~81F^&t%tR;4^M zxSz#ZETtA zD>1h;NGUI&H6)zduu8Ntn6fxBaOEJtHK)jIvWO8h3)%`PlvirWG0!ktN-2<2T8>); z?pvIP@)80BGeCA>3HlHn0F!)6X$5auHl41Hq(!FUGE$f;a|-Bcu@+AGi^4f1f9p^y1CaKupx z(&|Z|0pjRZE5zE(yD-m~}C&^J;zO^NdnPV!#I-=B4jJx*? zJUrkb6!z4DRBWn`B)y{Yg%F|lVCOADHSb+z_btyq!x-${+SZfRFc_N zfMG$?7|mMrbSYd@%+}I!%sSkxMjv84*+v(Z6<~vadzutwr#`jJoMYvEmKS1OOLJ{% zVLm8o{HyKs(M-mmt8#i0!ySR+~XED1*k0d(jg6JZ?ITQ)A^R5rM;o3 zsFa@PxHw#6G0~bz^363g!=$X_4>?BO#jf~}a zc}T^pxM)#>a^I_;npZ@$u;LNEB$rQW#?}q)5mIN|Ey^&>R9Hm20o+|H$z;nZh$*Fq z4z81U6LJ3}rWCirLTdqh8OsZcxV;Ff3mT0JCt(N5gql;X(Oe_&Lxoc~l5(-wDJaY< z%%MAYi*O2UP67EA>QozcOZW<5hsMN38;WQ%MA-UDHk&Q90bylgN)2VS@xo0doUwS1 zj!j9yJY=$#mSmb~J(6j4Y~M&1B)FCH1*bN!(!Pfz$hA{56}HIC7H;_=ECup0apZ8o zWYWT(CXojlaL)i%LI?E{GD|E(BP18*Op(IGHA+z-o*3iJ7LJZNIgc;9l5eOGM8Rm(l`T4k0 zM&k)a=#m(7b~&fZ95wP@%D6bjQfe!TE3CxehGgL-<8+%j#f&z!n#Yz}azph@3ysy8 ztbdp@A>$o)8&AtV>~~sirV?9pX)zxEaMQpxK(VQk z$qCilO7&q(PDp=SsfiEbq7So`qI4!M4xb_YNroodR$54lVcOLT(bMC)B*ZO35t*wm z6bvMh$kxiOkAQ;e*c`4 zoKG7mT-fov!5MSgOVaXl3P;HtA^uKCZx*;2iki!6iYqU{#ts%#e2{K?0?#cK!cIM} z7G?uX4dhSA9PXOy1*grGyr26eX`T!Bpo`nL_&S7gkm{UXsNmcUUZ@uKnDI8iv6V|D zq4@v~FgH+$nhy7W!2={`BO}nPg%PF{q~@OII5C>m+`N`XIc{d_kI96u|pj?XCFFL;#g*ir{kuExdWTv!rX_24*$3*D!55N zh~%dLA%G>SmAi#F(pqsV%fna|3@FI0N?YhEEVy?`4fCD1z#_Vli4I!mxn>l6JEO1* zA<Mc@Or7B<*ZuU)G(0kQr@33t^|8Y81poGN!Yw8_}hh`vtmi% zFtC_&ra1!Ef^u7KX$7V&(G;sc=T=KTdV^cPIpRrUqSYXt;H-Ew0=q)W3fx1vA=_Nj zyfU;dY_=d2Q@4!BbQWoZ*<2<(3W(N(b_*3*IUXjQ>vCy|2Sig-j=_61=OWHIkngAG zMi2J0Xm^-@IH7l6R5b1#So8j%1#^k~}f4ZaIGv;3EF(pN% zrrcvC|7#-A#Da;#o+Cv@D@_iK6fcWszWC%ScHc> zvG|gXh%KQjPr>d&NJw9u=LM`~ctgi{{Hkv3NeiGnceOox?>a;JwX+ zexJra%9466`;Usq(NvSs)hQSy?I=y;sCK)nO`DMAT!pNad@|Pck(8 z1%)FGO|C-Q(4$$)Xv#*67E8pL(X%Mtg9Dki zSne|G6l|H(12DR&s3_Y+3wNRMDD8vdr9Sv&&i#GdFP_?h^1!obi4CvJaKEAdlp>U% zWvnBDvM#scrP_UyJ~)=rbHkcvA`{Pwv_T~1E14-0xp}rF?n3r7^n`7fyIcq+&W(Wk zSxB8=s|zn7_|niji(-?rF~mCG&)!jbs=CyuMdc{^{-tV}_(3IlkgcOM!mSD|W##r6 z9BqsSy8AYU6*J8xnR)o+HpWDA4w}1`F~SUEF{3EXwGY{%W19_l%v2B3Wfn+oJd|Gi zj|9RD#cw7_3)9@dQQhc-Y-(!4DEzmb`^0m3a(i5kBu-UxriJ3+ zzZW#ifyM{s3EHT|{Z}%*NtBYAewfo#qIEh+=WZZ(xe?ToB)p@$^-foK6vW#FehGD# z!)B3pxxHVk;2f*!yDKXyn>)LQ*6HM4l|_QPD}~D5Q}1+z=kMlqggxo*DoqQe(*w2% z?(#soyF3U=Zm&442yY1_8}IxMGPHPj=1HOldhvCJIFPY~#l|75I5eAwL>n$$k+s?0 z;JtLBeKGRM#KsoA&UfBC(Qx!Smw!hrOz#+&RBY}oFfABSy37KEI0A&Cig%}C?mdgR zJiKS52+lNp=)F^6*W<3ZW_byBse9+uEK-_Rvk0+-LSD_{u$O?HFWN(*?F;<3R{ZZ( z^dW86j4iYkpbwmSVH?MxN0UW!n@0)aQi~5d)-L=WO;Wkdxix1f$>rXrIF$7K;RqyR zlg<$sQ{oK9;(sUR3VX^77og2)uEq(Y@VZ2Ju!QW;bNfm7&zhqgu@23>Z1CtJ8O#_4 z38Ti+j)zo>0YmPZn{vv#OgRT+8pr>)80YX3{POyIOzU_(iMtE;9{?Cfn3F8@3XzLu z`nLQdIPUM;?*F0Ji*Z@4aKFSqy$)~qi>8N!>iYF5?c1sq{`(xRq80vXPV!fEAv#?M zG~#Ff{`hmckci0s5uABetH)y#<5-qu#DirXVVog`+20Q_a)t@x3<8**j8-&dRE?MS zYCJ*?$X8$0*Iyr??cy?6xnMPW-M*7yl(INE!(JmX?v|Zlw3}1iL-uG?jXqwN9S)$! zflpp==pm>Y5AAKZF#E<-kFCcSk7EzWqRy#rE81J4w447@_we!C=IXawrntkL)*7a0 zwMB!Hyw4U54py?iQI5gN!OA3W_7cfms!u8X*T~|!GkKrOYGN6`4`p$enbD{1Q%~Dx zpSCYPV-Hp;U4rIsJz}hKKdj3 z?2qh=Ke9J`#1&!&a*s%9k-zBwe);p+>9#xauNU*r=JU7EMPFD=#i+~MEvp&GY&U9m zbwpU#Usq_1Oi`S%Gn&=*tuc-=C_M>j?n5rdB^9V~cfRkb$wQ`gp0ocrujdlkI*(`BSZ?oJNX zW#mSFiA&_UGJO1D+^tp|z|iu0SQ)`$Y)q!{&@`3N1`QglJe}>kQ|sF+Na@n#!BomJ z|FMsD*X5}6onyleE8A((>>;D< zaT6Hk$N`^tug+tlvTWH$SzTVeMZrWBl=E`7g0XxpS69@l^Xdx}m2O!Tx~ME6E-K!J zXyccxE~eh-!XN=>Wc*U5j;V)XflJmfU4mD9*Z+{`uJOVDAB^6A~>OLo3pVZzZ>1_S=ai)uxYWlDdvxB|6xUfIa z*fItWiZU2Hd%SItDb%dqo6&l+dV?~h{+8ZbHhz-U;HCAJ>kZy|S4L}St#w7DyWUl% zHF#)Up>L%>#cBrRxHrt@cZjDG*+ghG&V6t07 zFAoUGHpn8cBy1gbhTTmCc}*6edAX6@Me_5q0N<5|*_|XWlm)Q!8rTm>j^A3@b;aQ= zF}}l-3cNNpmaWv)HdF?0ADpl_zNOPYZfJ{bVH~fe;x9*Obk_(Aw;D`+)Ul}S-bYDw^ZorY1(E{ z;_aRYEuuM7CWf{zerL5zF^~x`tT3o+%gfX@?GbrYZGDusexrMUtah||lP*BHoi0`C za_tco5dpHQ+Hxqe0$?oT6i5NZB0jaYeg%?d!Dgi{pbJH<)MYsn*SaHI=1hyw7BOLf zY&(jf3kbqTnKMaQWjPdExHMT?Y+RPO@ldzys4wuO6mFGnA0QHg88sKfatcprNm0PJ<9BkLh7~EjgJ5c<^z3jMh#g}vW&i1!2 z(o!6%z$so1sp7&}0p+!$`3BkO^tZSZ=WUY@HDu7@4t89*n(^Lh4de`s%Q;)@V-Jw= ziZZTr$Y6y`<8Ci2v#D45WQm1D`7j2kc?Y2l)bn&J3>G(L5j7aOU3~iv+P}a?o&t2J z>tf!0fNb{lI~bi+bv^-$7uD$ksLQL5$)W<#r?Y>%Q&sI#7NDzC?ipRC)$OElMom2X z;+;yj#tV08kb-)&$o+yPhH8v;XuJ=vc~-q@%$$?AKl z*>eDba{=OJNnpXn9JsOdW4f>;4R6wWAnyK)G=gs~;uPj*hpKVQ5tHv(lg}ynC2mSRO;c){T_)9yD+!}9ou*%n!z`O#7uP;F zE?FIxE{nqid$qxRoZ;pjg^Fb&Mt5-uZq0sA)0DA~b53P2>#=&8{=6{#VP?fFs>cl2 zpzPI$rd1h}BID*%nM^CA36*Bk1|LKs#^9khxKO+hsh|n9p{)?4vZ_!Vh!i|VnysxM!A zf`zAztq@wY(YE%4%n_gFIb6%^JBb@A<3X?g*Wan&1DKNQpiIC$WnL{xNLQ(HbiP?}8 z&Xn~V%hjQnaZm+ZC37hn1PaOAjrkLXt&)?=F@d530tS^;+R(_juVC^-*A%#BxMgW| z$y#09)AmT;kOB5U7G>s&N2}xi~IF zNvn~NCi!GZGH%LuBtv~A$*A^7W<;_eQs(Qlt(ftllqOH7l`{zqWb3D!w-^K8l?M2V*_hfq zSUJhHivu;m?kvj>{6ODe7uL?tYswVNUieco);lH1#h4_+e3pVaEXfsaTzH zd9c@DB_=j*QpK}gYslQ3x_va3@sZSS|CYI?kw+4QLToUA7mjmTo@)VEBU+Mb46!B5ix;3+Z|N8G)-$zzI*Vq1J z*wfK5yT84#FKy;h{rX+q2mhM*tf%qj$0ObQG~@*w@3C##gtZC9PaW=QxqdCTreH<; zFJGLvf0Fs_x}vi9&jPtMhB{OUE<1cr5 zYq(eN4>Mj^vUl}w^`{3Wz2583Eqi|6F=$TeN>hj4E|0xean$cjVcVQB8s(#CkK_%1 zj7~Kh9{c#k4i7DR#DBoPDX$E?68rqauVmbOb&34@5o2!Z)Ypoqy|#GT{@R|2vOjNq z{lloQ_x1XuDyE;`GwZV7N*KTO+x*V&^<3e7G4{;PJCkJPeLq%RPMp1NdECOL8(&QM zDf1cmv#aac{XC=iqZ8v&o(-P!;g?@%Y#D)trxRlK?0tIjyj|s$)1Urh%8-ner>4H^ z|MsXeA9i@H_Hy2<>b-9c`25k1!@tX^4teN@tkBWRV;@h=K3$Q!b?)m^c66zqeP?NJ z_Zt}n@nxNE$3F99(YH(Axjr+c`xn+%&dNqu#y<1#_q|>jljj!j^EUaexB9M{`AN-7 z?%`iteKJ6|?WK>pzc*Pfn^@icQtvJY=hwYCeZ%FeZofC2EgX5^j}zvvK6F()oE>&} z{+;!^pHJ-*RzK$VwfZyjUCV#I_G08Ob38ZwmKCLVVd^8JeM&yKF<&!eu;SFR*IkF4 ziu>Tlq_-BPEq0x>dur*I3Kx63q zr*D4UGksXASq&Fj8)xn9HupNZgPBuPh z-aZG5m?^gLfS9)!%r%xFPV<5q;Nm{av^1sHmc4v4 zeyOiE_rkE<3vO+EXz1noV?mFm|F$Sp`{~GpCmRn(9KW;nvjzPUnVB%2)Snc(kKWNzUr?Gj|O9#-q~jz#kpQm9X!u`eoy)QFF{C&;Iz> zkM>RO2jAEHc)s0l$DjM@z0doX4*$~Qg^NdLZ3*1G?ZuFg?n8U&mcG=qGjDCb@b^dB z)_+!gYs;ZUr`sLd5ITH?%ay-Q{9^Dh|I45E+iQB~(hptE4B9$u#<=f}tR8B;I%fLkZ99Gx{;Boi zfxl8GY`UGro_+tRgh2s@XT9uG z*^QCkzM*tqeeTU;iyG5&O>_6nEPGr3m2F~Cym9RIL%=^7_@@H@kAeR(;J**}UjhEF z0RJVxe+=-y2K*NT|DM4A7V!TX_*Vh{XMleK@XrVSD}etQ;4cIID&W5k_%{LnpMd|f z!2f69e**Xi1OG38e<1LW0sfPLeCz&``{cLM%T0{?e_e|O-27Wj_^{=I;|8}OF{|5d>MCE$M*_-_OL?*adb zz`r-}uLJ&5@E-yEe+T}*0RKb4zXzdP{%5%?bm{+|Q?FMs!2es|zZ&>20{$l8Uk3bb zz~2b`HvoS#@P85bKLY%x0RLFvp8@>k!2c%jF9!b8fPW(J{~Gx31O73TkrbAZ1F_!k2IJ-~k+@ShI+hXDVnz<(6* ze+~G*3j7BE|KY$t1o(#n|HpxU1@M0z_}2sf-oU>A_}>QpMZo_$@c#n%%Ygqg!2cEC z9{~J!0soo6-yQfr3H)CI{*!@!HSq5O{NDurSAqXo;Qt5k{}A|R1OGd~KNa|o0sd!z z|Ifhx7vTRJ@P7gL`vCv>z+VCUU4j1xz<(j|p9K8B1pe)S|KGs>0`QLp{%e505%@m^ z{3ihaUx9xs;NKefcO(9Re+}@z1pLc@zXkZ)fqw+>{|fj=0{`Q{e?9O|1O9!0e?IX4 z3HUDq{)>VCC%|6~{6_%)hk*Zkz`qypKMnjl0Dmvw|0(d_2>f3L{+)oo8}L5`{Ih_+ zAMpPZ_zwjBj{*Nc;NJxNZvp=+!2cxhe**Yxfxj>C?*aS=1Ajg6Zvg&%fxiy;rvU%& zfq#48|1R*42mZOhe*y3x3jBkB|03W&68Ikm{%e81C-9#Q{J#bMPXqstfdBKrzYh5C z2mW!uzYXx;4*dTD{+oe+74TmI{DXnN3iz)C{*MCx9N@nL_*Vk|j==vN;J*s^mjM4C zf&W3^e;)Wh2mJd3e-Ge43;1sX{@sE9QsAEl{ND%up8@|v!2cNVUjh720RLp*e+~E_ z1^!!re-iL_0se0R|61VxFz_D@{4WCke!$-b{0+drEAT%8{L_K|FyLW4gB{4|6RcUY2cp${NDxsXMle#@K*!>&w>AU!2coOKN|R_0{>j#KLz;D2LA5A zKOXqU0{?G;|4iU-1^y#||HHt44DkOM_`e1GKLP&Xz&`-^e+2yHz`s54KM4G%1AjN* zUkLn90Do8D9|ru_1OGn2|99X&ANXGb{&RqT7Vw`6{7Znp2Kb)>{zHKOkH9|-`0ob( z3gDj%{8s?~4}gCZ@IMax&jbH?z`qml-vj(-0e>U#pG*7$|0>|$8~FPI|M9@z8~8r~ z{9gzD!N9*Y@Sh0$CjkHcz`qsn9}E0{1^&+g|DC}9B=D~Q{wm@P8cmv%ud1{PTeS-@rc__;&~Xmw^8{;2#3~bAbPH;NJxN zhXel|!2bsD4+Q>efd4k&UjzIbf&Ux8zYO><1^yR+|1IEu8Tda6{6m3%0`QLj{+|K= zFMcHsX$@NWnFe**rc!2bo{zXkZe2>gcv|CfOOTHrqt z_*Vn}MZkXp@OJ_JzX1OOz<)9DPXhkG0sl?Fe;M#U4E!ep{~+LR2L6u#{{_JRN#O4Z z{PThTH^AQq_#XxSUjzRJ;C~(Xw*mey1Ai0n?*jaX0skYw|0?ir3;aI?{(k}g+rWP? z@Q(rhn}L4;@b3Zq*8%^o!2c}p9|Zipfd59|uLS;Y0{?X2zYqB9fqxP3-~LigPSf03 zv#zhKsQ7i^%$e7`u3oi&FlEZot)->krhW3s;$)pJOU|;gm-F*Kf3$b+^iFr~{FMFm z*Khs!$}35$rcL`L_Os8PdA_>(;i$cP=RNu8qc_{#y!qSDcRaKn_pFR7X z-_JiEDD?Lqd0^YN$6qKfzu4KsL$zkkoUXQ@po~5bJrow)xpV(*B_$_+9Y6lfzw7HK zTuVuLF=^nyX{Mt`-}(HFHy)iC7??8T`|nRp?c4W}<#Xq@`7J_Uz#xC?GGnU{xWXgzJ

{4jq+WTfTW;lr1HnV7iZd`8BW;Rg>s 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 z

dA}i?uS%@s3-a1 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%0DFUm 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 literal 0 HcmV?d00001