Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of wolfSSL by
wolfssl/ssl.h@0:d92f9d21154c, 2015-06-26 (annotated)
- Committer:
- wolfSSL
- Date:
- Fri Jun 26 00:39:20 2015 +0000
- Revision:
- 0:d92f9d21154c
wolfSSL 3.6.0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wolfSSL | 0:d92f9d21154c | 1 | /* ssl.h |
wolfSSL | 0:d92f9d21154c | 2 | * |
wolfSSL | 0:d92f9d21154c | 3 | * Copyright (C) 2006-2015 wolfSSL Inc. |
wolfSSL | 0:d92f9d21154c | 4 | * |
wolfSSL | 0:d92f9d21154c | 5 | * This file is part of wolfSSL. (formerly known as CyaSSL) |
wolfSSL | 0:d92f9d21154c | 6 | * |
wolfSSL | 0:d92f9d21154c | 7 | * wolfSSL is free software; you can redistribute it and/or modify |
wolfSSL | 0:d92f9d21154c | 8 | * it under the terms of the GNU General Public License as published by |
wolfSSL | 0:d92f9d21154c | 9 | * the Free Software Foundation; either version 2 of the License, or |
wolfSSL | 0:d92f9d21154c | 10 | * (at your option) any later version. |
wolfSSL | 0:d92f9d21154c | 11 | * |
wolfSSL | 0:d92f9d21154c | 12 | * wolfSSL is distributed in the hope that it will be useful, |
wolfSSL | 0:d92f9d21154c | 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
wolfSSL | 0:d92f9d21154c | 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
wolfSSL | 0:d92f9d21154c | 15 | * GNU General Public License for more details. |
wolfSSL | 0:d92f9d21154c | 16 | * |
wolfSSL | 0:d92f9d21154c | 17 | * You should have received a copy of the GNU General Public License |
wolfSSL | 0:d92f9d21154c | 18 | * along with this program; if not, write to the Free Software |
wolfSSL | 0:d92f9d21154c | 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA |
wolfSSL | 0:d92f9d21154c | 20 | */ |
wolfSSL | 0:d92f9d21154c | 21 | |
wolfSSL | 0:d92f9d21154c | 22 | |
wolfSSL | 0:d92f9d21154c | 23 | /* wolfSSL API */ |
wolfSSL | 0:d92f9d21154c | 24 | |
wolfSSL | 0:d92f9d21154c | 25 | #ifndef WOLFSSL_SSL_H |
wolfSSL | 0:d92f9d21154c | 26 | #define WOLFSSL_SSL_H |
wolfSSL | 0:d92f9d21154c | 27 | |
wolfSSL | 0:d92f9d21154c | 28 | |
wolfSSL | 0:d92f9d21154c | 29 | /* for users not using preprocessor flags*/ |
wolfSSL | 0:d92f9d21154c | 30 | #include <wolfssl/wolfcrypt/settings.h> |
wolfSSL | 0:d92f9d21154c | 31 | #include <wolfssl/version.h> |
wolfSSL | 0:d92f9d21154c | 32 | |
wolfSSL | 0:d92f9d21154c | 33 | #ifndef NO_FILESYSTEM |
wolfSSL | 0:d92f9d21154c | 34 | #ifdef FREESCALE_MQX |
wolfSSL | 0:d92f9d21154c | 35 | #include <fio.h> |
wolfSSL | 0:d92f9d21154c | 36 | #else |
wolfSSL | 0:d92f9d21154c | 37 | #include <stdio.h> /* ERR_printf */ |
wolfSSL | 0:d92f9d21154c | 38 | #endif |
wolfSSL | 0:d92f9d21154c | 39 | #endif |
wolfSSL | 0:d92f9d21154c | 40 | |
wolfSSL | 0:d92f9d21154c | 41 | #ifdef WOLFSSL_PREFIX |
wolfSSL | 0:d92f9d21154c | 42 | #include "prefix_ssl.h" |
wolfSSL | 0:d92f9d21154c | 43 | #endif |
wolfSSL | 0:d92f9d21154c | 44 | |
wolfSSL | 0:d92f9d21154c | 45 | #ifdef LIBWOLFSSL_VERSION_STRING |
wolfSSL | 0:d92f9d21154c | 46 | #define WOLFSSL_VERSION LIBWOLFSSL_VERSION_STRING |
wolfSSL | 0:d92f9d21154c | 47 | #endif |
wolfSSL | 0:d92f9d21154c | 48 | |
wolfSSL | 0:d92f9d21154c | 49 | #ifdef _WIN32 |
wolfSSL | 0:d92f9d21154c | 50 | /* wincrypt.h clashes */ |
wolfSSL | 0:d92f9d21154c | 51 | #undef OCSP_REQUEST |
wolfSSL | 0:d92f9d21154c | 52 | #undef OCSP_RESPONSE |
wolfSSL | 0:d92f9d21154c | 53 | #endif |
wolfSSL | 0:d92f9d21154c | 54 | |
wolfSSL | 0:d92f9d21154c | 55 | |
wolfSSL | 0:d92f9d21154c | 56 | |
wolfSSL | 0:d92f9d21154c | 57 | #ifdef __cplusplus |
wolfSSL | 0:d92f9d21154c | 58 | extern "C" { |
wolfSSL | 0:d92f9d21154c | 59 | #endif |
wolfSSL | 0:d92f9d21154c | 60 | |
wolfSSL | 0:d92f9d21154c | 61 | typedef struct WOLFSSL WOLFSSL; |
wolfSSL | 0:d92f9d21154c | 62 | typedef struct WOLFSSL_SESSION WOLFSSL_SESSION; |
wolfSSL | 0:d92f9d21154c | 63 | typedef struct WOLFSSL_METHOD WOLFSSL_METHOD; |
wolfSSL | 0:d92f9d21154c | 64 | typedef struct WOLFSSL_CTX WOLFSSL_CTX; |
wolfSSL | 0:d92f9d21154c | 65 | |
wolfSSL | 0:d92f9d21154c | 66 | typedef struct WOLFSSL_X509 WOLFSSL_X509; |
wolfSSL | 0:d92f9d21154c | 67 | typedef struct WOLFSSL_X509_NAME WOLFSSL_X509_NAME; |
wolfSSL | 0:d92f9d21154c | 68 | typedef struct WOLFSSL_X509_CHAIN WOLFSSL_X509_CHAIN; |
wolfSSL | 0:d92f9d21154c | 69 | |
wolfSSL | 0:d92f9d21154c | 70 | typedef struct WOLFSSL_CERT_MANAGER WOLFSSL_CERT_MANAGER; |
wolfSSL | 0:d92f9d21154c | 71 | typedef struct WOLFSSL_SOCKADDR WOLFSSL_SOCKADDR; |
wolfSSL | 0:d92f9d21154c | 72 | |
wolfSSL | 0:d92f9d21154c | 73 | /* redeclare guard */ |
wolfSSL | 0:d92f9d21154c | 74 | #define WOLFSSL_TYPES_DEFINED |
wolfSSL | 0:d92f9d21154c | 75 | |
wolfSSL | 0:d92f9d21154c | 76 | |
wolfSSL | 0:d92f9d21154c | 77 | typedef struct WOLFSSL_RSA WOLFSSL_RSA; |
wolfSSL | 0:d92f9d21154c | 78 | typedef struct WOLFSSL_DSA WOLFSSL_DSA; |
wolfSSL | 0:d92f9d21154c | 79 | typedef struct WOLFSSL_CIPHER WOLFSSL_CIPHER; |
wolfSSL | 0:d92f9d21154c | 80 | typedef struct WOLFSSL_X509_LOOKUP WOLFSSL_X509_LOOKUP; |
wolfSSL | 0:d92f9d21154c | 81 | typedef struct WOLFSSL_X509_LOOKUP_METHOD WOLFSSL_X509_LOOKUP_METHOD; |
wolfSSL | 0:d92f9d21154c | 82 | typedef struct WOLFSSL_X509_CRL WOLFSSL_X509_CRL; |
wolfSSL | 0:d92f9d21154c | 83 | typedef struct WOLFSSL_BIO WOLFSSL_BIO; |
wolfSSL | 0:d92f9d21154c | 84 | typedef struct WOLFSSL_BIO_METHOD WOLFSSL_BIO_METHOD; |
wolfSSL | 0:d92f9d21154c | 85 | typedef struct WOLFSSL_X509_EXTENSION WOLFSSL_X509_EXTENSION; |
wolfSSL | 0:d92f9d21154c | 86 | typedef struct WOLFSSL_ASN1_TIME WOLFSSL_ASN1_TIME; |
wolfSSL | 0:d92f9d21154c | 87 | typedef struct WOLFSSL_ASN1_INTEGER WOLFSSL_ASN1_INTEGER; |
wolfSSL | 0:d92f9d21154c | 88 | typedef struct WOLFSSL_ASN1_OBJECT WOLFSSL_ASN1_OBJECT; |
wolfSSL | 0:d92f9d21154c | 89 | typedef struct WOLFSSL_ASN1_STRING WOLFSSL_ASN1_STRING; |
wolfSSL | 0:d92f9d21154c | 90 | typedef struct WOLFSSL_dynlock_value WOLFSSL_dynlock_value; |
wolfSSL | 0:d92f9d21154c | 91 | |
wolfSSL | 0:d92f9d21154c | 92 | #define WOLFSSL_ASN1_UTCTIME WOLFSSL_ASN1_TIME |
wolfSSL | 0:d92f9d21154c | 93 | |
wolfSSL | 0:d92f9d21154c | 94 | typedef struct WOLFSSL_EVP_PKEY { |
wolfSSL | 0:d92f9d21154c | 95 | int type; /* openssh dereference */ |
wolfSSL | 0:d92f9d21154c | 96 | int save_type; /* openssh dereference */ |
wolfSSL | 0:d92f9d21154c | 97 | int pkey_sz; |
wolfSSL | 0:d92f9d21154c | 98 | union { |
wolfSSL | 0:d92f9d21154c | 99 | char* ptr; |
wolfSSL | 0:d92f9d21154c | 100 | } pkey; |
wolfSSL | 0:d92f9d21154c | 101 | #ifdef HAVE_ECC |
wolfSSL | 0:d92f9d21154c | 102 | int pkey_curve; |
wolfSSL | 0:d92f9d21154c | 103 | #endif |
wolfSSL | 0:d92f9d21154c | 104 | } WOLFSSL_EVP_PKEY; |
wolfSSL | 0:d92f9d21154c | 105 | |
wolfSSL | 0:d92f9d21154c | 106 | typedef struct WOLFSSL_MD4_CTX { |
wolfSSL | 0:d92f9d21154c | 107 | int buffer[32]; /* big enough to hold, check size in Init */ |
wolfSSL | 0:d92f9d21154c | 108 | } WOLFSSL_MD4_CTX; |
wolfSSL | 0:d92f9d21154c | 109 | |
wolfSSL | 0:d92f9d21154c | 110 | |
wolfSSL | 0:d92f9d21154c | 111 | typedef struct WOLFSSL_COMP_METHOD { |
wolfSSL | 0:d92f9d21154c | 112 | int type; /* stunnel dereference */ |
wolfSSL | 0:d92f9d21154c | 113 | } WOLFSSL_COMP_METHOD; |
wolfSSL | 0:d92f9d21154c | 114 | |
wolfSSL | 0:d92f9d21154c | 115 | |
wolfSSL | 0:d92f9d21154c | 116 | typedef struct WOLFSSL_X509_STORE { |
wolfSSL | 0:d92f9d21154c | 117 | int cache; /* stunnel dereference */ |
wolfSSL | 0:d92f9d21154c | 118 | WOLFSSL_CERT_MANAGER* cm; |
wolfSSL | 0:d92f9d21154c | 119 | } WOLFSSL_X509_STORE; |
wolfSSL | 0:d92f9d21154c | 120 | |
wolfSSL | 0:d92f9d21154c | 121 | typedef struct WOLFSSL_ALERT { |
wolfSSL | 0:d92f9d21154c | 122 | int code; |
wolfSSL | 0:d92f9d21154c | 123 | int level; |
wolfSSL | 0:d92f9d21154c | 124 | } WOLFSSL_ALERT; |
wolfSSL | 0:d92f9d21154c | 125 | |
wolfSSL | 0:d92f9d21154c | 126 | typedef struct WOLFSSL_ALERT_HISTORY { |
wolfSSL | 0:d92f9d21154c | 127 | WOLFSSL_ALERT last_rx; |
wolfSSL | 0:d92f9d21154c | 128 | WOLFSSL_ALERT last_tx; |
wolfSSL | 0:d92f9d21154c | 129 | } WOLFSSL_ALERT_HISTORY; |
wolfSSL | 0:d92f9d21154c | 130 | |
wolfSSL | 0:d92f9d21154c | 131 | typedef struct WOLFSSL_X509_REVOKED { |
wolfSSL | 0:d92f9d21154c | 132 | WOLFSSL_ASN1_INTEGER* serialNumber; /* stunnel dereference */ |
wolfSSL | 0:d92f9d21154c | 133 | } WOLFSSL_X509_REVOKED; |
wolfSSL | 0:d92f9d21154c | 134 | |
wolfSSL | 0:d92f9d21154c | 135 | |
wolfSSL | 0:d92f9d21154c | 136 | typedef struct WOLFSSL_X509_OBJECT { |
wolfSSL | 0:d92f9d21154c | 137 | union { |
wolfSSL | 0:d92f9d21154c | 138 | char* ptr; |
wolfSSL | 0:d92f9d21154c | 139 | WOLFSSL_X509_CRL* crl; /* stunnel dereference */ |
wolfSSL | 0:d92f9d21154c | 140 | } data; |
wolfSSL | 0:d92f9d21154c | 141 | } WOLFSSL_X509_OBJECT; |
wolfSSL | 0:d92f9d21154c | 142 | |
wolfSSL | 0:d92f9d21154c | 143 | |
wolfSSL | 0:d92f9d21154c | 144 | typedef struct WOLFSSL_X509_STORE_CTX { |
wolfSSL | 0:d92f9d21154c | 145 | WOLFSSL_X509_STORE* store; /* Store full of a CA cert chain */ |
wolfSSL | 0:d92f9d21154c | 146 | WOLFSSL_X509* current_cert; /* stunnel dereference */ |
wolfSSL | 0:d92f9d21154c | 147 | char* domain; /* subject CN domain name */ |
wolfSSL | 0:d92f9d21154c | 148 | void* ex_data; /* external data, for fortress build */ |
wolfSSL | 0:d92f9d21154c | 149 | void* userCtx; /* user ctx */ |
wolfSSL | 0:d92f9d21154c | 150 | int error; /* current error */ |
wolfSSL | 0:d92f9d21154c | 151 | int error_depth; /* cert depth for this error */ |
wolfSSL | 0:d92f9d21154c | 152 | int discardSessionCerts; /* so verify callback can flag for discard */ |
wolfSSL | 0:d92f9d21154c | 153 | } WOLFSSL_X509_STORE_CTX; |
wolfSSL | 0:d92f9d21154c | 154 | |
wolfSSL | 0:d92f9d21154c | 155 | |
wolfSSL | 0:d92f9d21154c | 156 | /* Valid Alert types from page 16/17 */ |
wolfSSL | 0:d92f9d21154c | 157 | enum AlertDescription { |
wolfSSL | 0:d92f9d21154c | 158 | close_notify = 0, |
wolfSSL | 0:d92f9d21154c | 159 | unexpected_message = 10, |
wolfSSL | 0:d92f9d21154c | 160 | bad_record_mac = 20, |
wolfSSL | 0:d92f9d21154c | 161 | record_overflow = 22, |
wolfSSL | 0:d92f9d21154c | 162 | decompression_failure = 30, |
wolfSSL | 0:d92f9d21154c | 163 | handshake_failure = 40, |
wolfSSL | 0:d92f9d21154c | 164 | no_certificate = 41, |
wolfSSL | 0:d92f9d21154c | 165 | bad_certificate = 42, |
wolfSSL | 0:d92f9d21154c | 166 | unsupported_certificate = 43, |
wolfSSL | 0:d92f9d21154c | 167 | certificate_revoked = 44, |
wolfSSL | 0:d92f9d21154c | 168 | certificate_expired = 45, |
wolfSSL | 0:d92f9d21154c | 169 | certificate_unknown = 46, |
wolfSSL | 0:d92f9d21154c | 170 | illegal_parameter = 47, |
wolfSSL | 0:d92f9d21154c | 171 | decrypt_error = 51, |
wolfSSL | 0:d92f9d21154c | 172 | #ifdef WOLFSSL_MYSQL_COMPATIBLE |
wolfSSL | 0:d92f9d21154c | 173 | /* catch name conflict for enum protocol with MYSQL build */ |
wolfSSL | 0:d92f9d21154c | 174 | wc_protocol_version = 70, |
wolfSSL | 0:d92f9d21154c | 175 | #else |
wolfSSL | 0:d92f9d21154c | 176 | protocol_version = 70, |
wolfSSL | 0:d92f9d21154c | 177 | #endif |
wolfSSL | 0:d92f9d21154c | 178 | no_renegotiation = 100, |
wolfSSL | 0:d92f9d21154c | 179 | unrecognized_name = 112 |
wolfSSL | 0:d92f9d21154c | 180 | }; |
wolfSSL | 0:d92f9d21154c | 181 | |
wolfSSL | 0:d92f9d21154c | 182 | |
wolfSSL | 0:d92f9d21154c | 183 | enum AlertLevel { |
wolfSSL | 0:d92f9d21154c | 184 | alert_warning = 1, |
wolfSSL | 0:d92f9d21154c | 185 | alert_fatal = 2 |
wolfSSL | 0:d92f9d21154c | 186 | }; |
wolfSSL | 0:d92f9d21154c | 187 | |
wolfSSL | 0:d92f9d21154c | 188 | |
wolfSSL | 0:d92f9d21154c | 189 | WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_server_method(void); |
wolfSSL | 0:d92f9d21154c | 190 | WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_client_method(void); |
wolfSSL | 0:d92f9d21154c | 191 | WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_server_method(void); |
wolfSSL | 0:d92f9d21154c | 192 | WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_client_method(void); |
wolfSSL | 0:d92f9d21154c | 193 | WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_server_method(void); |
wolfSSL | 0:d92f9d21154c | 194 | WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_client_method(void); |
wolfSSL | 0:d92f9d21154c | 195 | WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_server_method(void); |
wolfSSL | 0:d92f9d21154c | 196 | WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_client_method(void); |
wolfSSL | 0:d92f9d21154c | 197 | |
wolfSSL | 0:d92f9d21154c | 198 | #ifdef WOLFSSL_DTLS |
wolfSSL | 0:d92f9d21154c | 199 | WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_client_method(void); |
wolfSSL | 0:d92f9d21154c | 200 | WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_server_method(void); |
wolfSSL | 0:d92f9d21154c | 201 | WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_client_method(void); |
wolfSSL | 0:d92f9d21154c | 202 | WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_server_method(void); |
wolfSSL | 0:d92f9d21154c | 203 | #endif |
wolfSSL | 0:d92f9d21154c | 204 | |
wolfSSL | 0:d92f9d21154c | 205 | #ifdef HAVE_POLY1305 |
wolfSSL | 0:d92f9d21154c | 206 | WOLFSSL_API int wolfSSL_use_old_poly(WOLFSSL*, int); |
wolfSSL | 0:d92f9d21154c | 207 | #endif |
wolfSSL | 0:d92f9d21154c | 208 | |
wolfSSL | 0:d92f9d21154c | 209 | #if !defined(NO_FILESYSTEM) && !defined(NO_CERTS) |
wolfSSL | 0:d92f9d21154c | 210 | |
wolfSSL | 0:d92f9d21154c | 211 | WOLFSSL_API int wolfSSL_CTX_use_certificate_file(WOLFSSL_CTX*, const char*, int); |
wolfSSL | 0:d92f9d21154c | 212 | WOLFSSL_API int wolfSSL_CTX_use_PrivateKey_file(WOLFSSL_CTX*, const char*, int); |
wolfSSL | 0:d92f9d21154c | 213 | WOLFSSL_API int wolfSSL_CTX_load_verify_locations(WOLFSSL_CTX*, const char*, |
wolfSSL | 0:d92f9d21154c | 214 | const char*); |
wolfSSL | 0:d92f9d21154c | 215 | WOLFSSL_API int wolfSSL_CTX_use_certificate_chain_file(WOLFSSL_CTX *, |
wolfSSL | 0:d92f9d21154c | 216 | const char *file); |
wolfSSL | 0:d92f9d21154c | 217 | WOLFSSL_API int wolfSSL_CTX_use_RSAPrivateKey_file(WOLFSSL_CTX*, const char*, int); |
wolfSSL | 0:d92f9d21154c | 218 | |
wolfSSL | 0:d92f9d21154c | 219 | WOLFSSL_API long wolfSSL_get_verify_depth(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 220 | WOLFSSL_API long wolfSSL_CTX_get_verify_depth(WOLFSSL_CTX* ctx); |
wolfSSL | 0:d92f9d21154c | 221 | WOLFSSL_API int wolfSSL_use_certificate_file(WOLFSSL*, const char*, int); |
wolfSSL | 0:d92f9d21154c | 222 | WOLFSSL_API int wolfSSL_use_PrivateKey_file(WOLFSSL*, const char*, int); |
wolfSSL | 0:d92f9d21154c | 223 | WOLFSSL_API int wolfSSL_use_certificate_chain_file(WOLFSSL*, const char *file); |
wolfSSL | 0:d92f9d21154c | 224 | WOLFSSL_API int wolfSSL_use_RSAPrivateKey_file(WOLFSSL*, const char*, int); |
wolfSSL | 0:d92f9d21154c | 225 | |
wolfSSL | 0:d92f9d21154c | 226 | #ifdef WOLFSSL_DER_LOAD |
wolfSSL | 0:d92f9d21154c | 227 | WOLFSSL_API int wolfSSL_CTX_der_load_verify_locations(WOLFSSL_CTX*, |
wolfSSL | 0:d92f9d21154c | 228 | const char*, int); |
wolfSSL | 0:d92f9d21154c | 229 | #endif |
wolfSSL | 0:d92f9d21154c | 230 | |
wolfSSL | 0:d92f9d21154c | 231 | #ifdef HAVE_NTRU |
wolfSSL | 0:d92f9d21154c | 232 | WOLFSSL_API int wolfSSL_CTX_use_NTRUPrivateKey_file(WOLFSSL_CTX*, const char*); |
wolfSSL | 0:d92f9d21154c | 233 | /* load NTRU private key blob */ |
wolfSSL | 0:d92f9d21154c | 234 | #endif |
wolfSSL | 0:d92f9d21154c | 235 | |
wolfSSL | 0:d92f9d21154c | 236 | #ifndef WOLFSSL_PEMCERT_TODER_DEFINED |
wolfSSL | 0:d92f9d21154c | 237 | WOLFSSL_API int wolfSSL_PemCertToDer(const char*, unsigned char*, int); |
wolfSSL | 0:d92f9d21154c | 238 | #define WOLFSSL_PEMCERT_TODER_DEFINED |
wolfSSL | 0:d92f9d21154c | 239 | #endif |
wolfSSL | 0:d92f9d21154c | 240 | |
wolfSSL | 0:d92f9d21154c | 241 | #endif /* !NO_FILESYSTEM && !NO_CERTS */ |
wolfSSL | 0:d92f9d21154c | 242 | |
wolfSSL | 0:d92f9d21154c | 243 | WOLFSSL_API WOLFSSL_CTX* wolfSSL_CTX_new(WOLFSSL_METHOD*); |
wolfSSL | 0:d92f9d21154c | 244 | WOLFSSL_API WOLFSSL* wolfSSL_new(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 245 | WOLFSSL_API int wolfSSL_set_fd (WOLFSSL*, int); |
wolfSSL | 0:d92f9d21154c | 246 | WOLFSSL_API char* wolfSSL_get_cipher_list(int priority); |
wolfSSL | 0:d92f9d21154c | 247 | WOLFSSL_API int wolfSSL_get_ciphers(char*, int); |
wolfSSL | 0:d92f9d21154c | 248 | WOLFSSL_API int wolfSSL_get_fd(const WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 249 | WOLFSSL_API void wolfSSL_set_using_nonblock(WOLFSSL*, int); |
wolfSSL | 0:d92f9d21154c | 250 | WOLFSSL_API int wolfSSL_get_using_nonblock(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 251 | WOLFSSL_API int wolfSSL_connect(WOLFSSL*); /* please see note at top of README |
wolfSSL | 0:d92f9d21154c | 252 | if you get an error from connect */ |
wolfSSL | 0:d92f9d21154c | 253 | WOLFSSL_API int wolfSSL_write(WOLFSSL*, const void*, int); |
wolfSSL | 0:d92f9d21154c | 254 | WOLFSSL_API int wolfSSL_read(WOLFSSL*, void*, int); |
wolfSSL | 0:d92f9d21154c | 255 | WOLFSSL_API int wolfSSL_peek(WOLFSSL*, void*, int); |
wolfSSL | 0:d92f9d21154c | 256 | WOLFSSL_API int wolfSSL_accept(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 257 | WOLFSSL_API void wolfSSL_CTX_free(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 258 | WOLFSSL_API void wolfSSL_free(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 259 | WOLFSSL_API int wolfSSL_shutdown(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 260 | WOLFSSL_API int wolfSSL_send(WOLFSSL*, const void*, int sz, int flags); |
wolfSSL | 0:d92f9d21154c | 261 | WOLFSSL_API int wolfSSL_recv(WOLFSSL*, void*, int sz, int flags); |
wolfSSL | 0:d92f9d21154c | 262 | |
wolfSSL | 0:d92f9d21154c | 263 | WOLFSSL_API void wolfSSL_CTX_set_quiet_shutdown(WOLFSSL_CTX*, int); |
wolfSSL | 0:d92f9d21154c | 264 | WOLFSSL_API void wolfSSL_set_quiet_shutdown(WOLFSSL*, int); |
wolfSSL | 0:d92f9d21154c | 265 | |
wolfSSL | 0:d92f9d21154c | 266 | WOLFSSL_API int wolfSSL_get_error(WOLFSSL*, int); |
wolfSSL | 0:d92f9d21154c | 267 | WOLFSSL_API int wolfSSL_get_alert_history(WOLFSSL*, WOLFSSL_ALERT_HISTORY *); |
wolfSSL | 0:d92f9d21154c | 268 | |
wolfSSL | 0:d92f9d21154c | 269 | WOLFSSL_API int wolfSSL_set_session(WOLFSSL* ssl,WOLFSSL_SESSION* session); |
wolfSSL | 0:d92f9d21154c | 270 | WOLFSSL_API long wolfSSL_SSL_SESSION_set_timeout(WOLFSSL_SESSION* session, long t); |
wolfSSL | 0:d92f9d21154c | 271 | WOLFSSL_API WOLFSSL_SESSION* wolfSSL_get_session(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 272 | WOLFSSL_API void wolfSSL_flush_sessions(WOLFSSL_CTX *ctx, long tm); |
wolfSSL | 0:d92f9d21154c | 273 | WOLFSSL_API int wolfSSL_SetServerID(WOLFSSL* ssl, const unsigned char*, |
wolfSSL | 0:d92f9d21154c | 274 | int, int); |
wolfSSL | 0:d92f9d21154c | 275 | |
wolfSSL | 0:d92f9d21154c | 276 | #ifdef SESSION_INDEX |
wolfSSL | 0:d92f9d21154c | 277 | WOLFSSL_API int wolfSSL_GetSessionIndex(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 278 | WOLFSSL_API int wolfSSL_GetSessionAtIndex(int index, WOLFSSL_SESSION* session); |
wolfSSL | 0:d92f9d21154c | 279 | #endif /* SESSION_INDEX */ |
wolfSSL | 0:d92f9d21154c | 280 | |
wolfSSL | 0:d92f9d21154c | 281 | #if defined(SESSION_INDEX) && defined(SESSION_CERTS) |
wolfSSL | 0:d92f9d21154c | 282 | WOLFSSL_API |
wolfSSL | 0:d92f9d21154c | 283 | WOLFSSL_X509_CHAIN* wolfSSL_SESSION_get_peer_chain(WOLFSSL_SESSION* session); |
wolfSSL | 0:d92f9d21154c | 284 | #endif /* SESSION_INDEX && SESSION_CERTS */ |
wolfSSL | 0:d92f9d21154c | 285 | |
wolfSSL | 0:d92f9d21154c | 286 | typedef int (*VerifyCallback)(int, WOLFSSL_X509_STORE_CTX*); |
wolfSSL | 0:d92f9d21154c | 287 | typedef int (*pem_password_cb)(char*, int, int, void*); |
wolfSSL | 0:d92f9d21154c | 288 | |
wolfSSL | 0:d92f9d21154c | 289 | WOLFSSL_API void wolfSSL_CTX_set_verify(WOLFSSL_CTX*, int, |
wolfSSL | 0:d92f9d21154c | 290 | VerifyCallback verify_callback); |
wolfSSL | 0:d92f9d21154c | 291 | WOLFSSL_API void wolfSSL_set_verify(WOLFSSL*, int, VerifyCallback verify_callback); |
wolfSSL | 0:d92f9d21154c | 292 | WOLFSSL_API void wolfSSL_SetCertCbCtx(WOLFSSL*, void*); |
wolfSSL | 0:d92f9d21154c | 293 | |
wolfSSL | 0:d92f9d21154c | 294 | WOLFSSL_API int wolfSSL_pending(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 295 | |
wolfSSL | 0:d92f9d21154c | 296 | WOLFSSL_API void wolfSSL_load_error_strings(void); |
wolfSSL | 0:d92f9d21154c | 297 | WOLFSSL_API int wolfSSL_library_init(void); |
wolfSSL | 0:d92f9d21154c | 298 | WOLFSSL_API long wolfSSL_CTX_set_session_cache_mode(WOLFSSL_CTX*, long); |
wolfSSL | 0:d92f9d21154c | 299 | |
wolfSSL | 0:d92f9d21154c | 300 | #ifdef HAVE_SECRET_CALLBACK |
wolfSSL | 0:d92f9d21154c | 301 | typedef int (*SessionSecretCb)(WOLFSSL* ssl, |
wolfSSL | 0:d92f9d21154c | 302 | void* secret, int* secretSz, void* ctx); |
wolfSSL | 0:d92f9d21154c | 303 | WOLFSSL_API int wolfSSL_set_session_secret_cb(WOLFSSL*, SessionSecretCb, void*); |
wolfSSL | 0:d92f9d21154c | 304 | #endif /* HAVE_SECRET_CALLBACK */ |
wolfSSL | 0:d92f9d21154c | 305 | |
wolfSSL | 0:d92f9d21154c | 306 | /* session cache persistence */ |
wolfSSL | 0:d92f9d21154c | 307 | WOLFSSL_API int wolfSSL_save_session_cache(const char*); |
wolfSSL | 0:d92f9d21154c | 308 | WOLFSSL_API int wolfSSL_restore_session_cache(const char*); |
wolfSSL | 0:d92f9d21154c | 309 | WOLFSSL_API int wolfSSL_memsave_session_cache(void*, int); |
wolfSSL | 0:d92f9d21154c | 310 | WOLFSSL_API int wolfSSL_memrestore_session_cache(const void*, int); |
wolfSSL | 0:d92f9d21154c | 311 | WOLFSSL_API int wolfSSL_get_session_cache_memsize(void); |
wolfSSL | 0:d92f9d21154c | 312 | |
wolfSSL | 0:d92f9d21154c | 313 | /* certificate cache persistence, uses ctx since certs are per ctx */ |
wolfSSL | 0:d92f9d21154c | 314 | WOLFSSL_API int wolfSSL_CTX_save_cert_cache(WOLFSSL_CTX*, const char*); |
wolfSSL | 0:d92f9d21154c | 315 | WOLFSSL_API int wolfSSL_CTX_restore_cert_cache(WOLFSSL_CTX*, const char*); |
wolfSSL | 0:d92f9d21154c | 316 | WOLFSSL_API int wolfSSL_CTX_memsave_cert_cache(WOLFSSL_CTX*, void*, int, int*); |
wolfSSL | 0:d92f9d21154c | 317 | WOLFSSL_API int wolfSSL_CTX_memrestore_cert_cache(WOLFSSL_CTX*, const void*, int); |
wolfSSL | 0:d92f9d21154c | 318 | WOLFSSL_API int wolfSSL_CTX_get_cert_cache_memsize(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 319 | |
wolfSSL | 0:d92f9d21154c | 320 | /* only supports full name from cipher_name[] delimited by : */ |
wolfSSL | 0:d92f9d21154c | 321 | WOLFSSL_API int wolfSSL_CTX_set_cipher_list(WOLFSSL_CTX*, const char*); |
wolfSSL | 0:d92f9d21154c | 322 | WOLFSSL_API int wolfSSL_set_cipher_list(WOLFSSL*, const char*); |
wolfSSL | 0:d92f9d21154c | 323 | |
wolfSSL | 0:d92f9d21154c | 324 | /* Nonblocking DTLS helper functions */ |
wolfSSL | 0:d92f9d21154c | 325 | WOLFSSL_API int wolfSSL_dtls_get_current_timeout(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 326 | WOLFSSL_API int wolfSSL_dtls_set_timeout_init(WOLFSSL* ssl, int); |
wolfSSL | 0:d92f9d21154c | 327 | WOLFSSL_API int wolfSSL_dtls_set_timeout_max(WOLFSSL* ssl, int); |
wolfSSL | 0:d92f9d21154c | 328 | WOLFSSL_API int wolfSSL_dtls_got_timeout(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 329 | WOLFSSL_API int wolfSSL_dtls(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 330 | |
wolfSSL | 0:d92f9d21154c | 331 | WOLFSSL_API int wolfSSL_dtls_set_peer(WOLFSSL*, void*, unsigned int); |
wolfSSL | 0:d92f9d21154c | 332 | WOLFSSL_API int wolfSSL_dtls_get_peer(WOLFSSL*, void*, unsigned int*); |
wolfSSL | 0:d92f9d21154c | 333 | |
wolfSSL | 0:d92f9d21154c | 334 | WOLFSSL_API int wolfSSL_ERR_GET_REASON(int err); |
wolfSSL | 0:d92f9d21154c | 335 | WOLFSSL_API char* wolfSSL_ERR_error_string(unsigned long,char*); |
wolfSSL | 0:d92f9d21154c | 336 | WOLFSSL_API void wolfSSL_ERR_error_string_n(unsigned long e, char* buf, |
wolfSSL | 0:d92f9d21154c | 337 | unsigned long sz); |
wolfSSL | 0:d92f9d21154c | 338 | WOLFSSL_API const char* wolfSSL_ERR_reason_error_string(unsigned long); |
wolfSSL | 0:d92f9d21154c | 339 | |
wolfSSL | 0:d92f9d21154c | 340 | /* extras */ |
wolfSSL | 0:d92f9d21154c | 341 | |
wolfSSL | 0:d92f9d21154c | 342 | #define STACK_OF(x) x |
wolfSSL | 0:d92f9d21154c | 343 | |
wolfSSL | 0:d92f9d21154c | 344 | WOLFSSL_API int wolfSSL_set_ex_data(WOLFSSL*, int, void*); |
wolfSSL | 0:d92f9d21154c | 345 | WOLFSSL_API int wolfSSL_get_shutdown(const WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 346 | WOLFSSL_API int wolfSSL_set_rfd(WOLFSSL*, int); |
wolfSSL | 0:d92f9d21154c | 347 | WOLFSSL_API int wolfSSL_set_wfd(WOLFSSL*, int); |
wolfSSL | 0:d92f9d21154c | 348 | WOLFSSL_API void wolfSSL_set_shutdown(WOLFSSL*, int); |
wolfSSL | 0:d92f9d21154c | 349 | WOLFSSL_API int wolfSSL_set_session_id_context(WOLFSSL*, const unsigned char*, |
wolfSSL | 0:d92f9d21154c | 350 | unsigned int); |
wolfSSL | 0:d92f9d21154c | 351 | WOLFSSL_API void wolfSSL_set_connect_state(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 352 | WOLFSSL_API void wolfSSL_set_accept_state(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 353 | WOLFSSL_API int wolfSSL_session_reused(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 354 | WOLFSSL_API void wolfSSL_SESSION_free(WOLFSSL_SESSION* session); |
wolfSSL | 0:d92f9d21154c | 355 | WOLFSSL_API int wolfSSL_is_init_finished(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 356 | |
wolfSSL | 0:d92f9d21154c | 357 | WOLFSSL_API const char* wolfSSL_get_version(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 358 | WOLFSSL_API int wolfSSL_get_current_cipher_suite(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 359 | WOLFSSL_API WOLFSSL_CIPHER* wolfSSL_get_current_cipher(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 360 | WOLFSSL_API char* wolfSSL_CIPHER_description(WOLFSSL_CIPHER*, char*, int); |
wolfSSL | 0:d92f9d21154c | 361 | WOLFSSL_API const char* wolfSSL_CIPHER_get_name(const WOLFSSL_CIPHER* cipher); |
wolfSSL | 0:d92f9d21154c | 362 | WOLFSSL_API const char* wolfSSL_get_cipher(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 363 | WOLFSSL_API WOLFSSL_SESSION* wolfSSL_get1_session(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 364 | /* what's ref count */ |
wolfSSL | 0:d92f9d21154c | 365 | |
wolfSSL | 0:d92f9d21154c | 366 | WOLFSSL_API void wolfSSL_X509_free(WOLFSSL_X509*); |
wolfSSL | 0:d92f9d21154c | 367 | WOLFSSL_API void wolfSSL_OPENSSL_free(void*); |
wolfSSL | 0:d92f9d21154c | 368 | |
wolfSSL | 0:d92f9d21154c | 369 | WOLFSSL_API int wolfSSL_OCSP_parse_url(char* url, char** host, char** port, |
wolfSSL | 0:d92f9d21154c | 370 | char** path, int* ssl); |
wolfSSL | 0:d92f9d21154c | 371 | |
wolfSSL | 0:d92f9d21154c | 372 | WOLFSSL_API WOLFSSL_METHOD* wolfSSLv23_client_method(void); |
wolfSSL | 0:d92f9d21154c | 373 | WOLFSSL_API WOLFSSL_METHOD* wolfSSLv2_client_method(void); |
wolfSSL | 0:d92f9d21154c | 374 | WOLFSSL_API WOLFSSL_METHOD* wolfSSLv2_server_method(void); |
wolfSSL | 0:d92f9d21154c | 375 | |
wolfSSL | 0:d92f9d21154c | 376 | WOLFSSL_API void wolfSSL_MD4_Init(WOLFSSL_MD4_CTX*); |
wolfSSL | 0:d92f9d21154c | 377 | WOLFSSL_API void wolfSSL_MD4_Update(WOLFSSL_MD4_CTX*, const void*, unsigned long); |
wolfSSL | 0:d92f9d21154c | 378 | WOLFSSL_API void wolfSSL_MD4_Final(unsigned char*, WOLFSSL_MD4_CTX*); |
wolfSSL | 0:d92f9d21154c | 379 | |
wolfSSL | 0:d92f9d21154c | 380 | |
wolfSSL | 0:d92f9d21154c | 381 | WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new(WOLFSSL_BIO_METHOD*); |
wolfSSL | 0:d92f9d21154c | 382 | WOLFSSL_API int wolfSSL_BIO_free(WOLFSSL_BIO*); |
wolfSSL | 0:d92f9d21154c | 383 | WOLFSSL_API int wolfSSL_BIO_free_all(WOLFSSL_BIO*); |
wolfSSL | 0:d92f9d21154c | 384 | WOLFSSL_API int wolfSSL_BIO_read(WOLFSSL_BIO*, void*, int); |
wolfSSL | 0:d92f9d21154c | 385 | WOLFSSL_API int wolfSSL_BIO_write(WOLFSSL_BIO*, const void*, int); |
wolfSSL | 0:d92f9d21154c | 386 | WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_push(WOLFSSL_BIO*, WOLFSSL_BIO* append); |
wolfSSL | 0:d92f9d21154c | 387 | WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_pop(WOLFSSL_BIO*); |
wolfSSL | 0:d92f9d21154c | 388 | WOLFSSL_API int wolfSSL_BIO_flush(WOLFSSL_BIO*); |
wolfSSL | 0:d92f9d21154c | 389 | WOLFSSL_API int wolfSSL_BIO_pending(WOLFSSL_BIO*); |
wolfSSL | 0:d92f9d21154c | 390 | |
wolfSSL | 0:d92f9d21154c | 391 | WOLFSSL_API WOLFSSL_BIO_METHOD* wolfSSL_BIO_f_buffer(void); |
wolfSSL | 0:d92f9d21154c | 392 | WOLFSSL_API long wolfSSL_BIO_set_write_buffer_size(WOLFSSL_BIO*, long size); |
wolfSSL | 0:d92f9d21154c | 393 | WOLFSSL_API WOLFSSL_BIO_METHOD* wolfSSL_BIO_f_ssl(void); |
wolfSSL | 0:d92f9d21154c | 394 | WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new_socket(int sfd, int flag); |
wolfSSL | 0:d92f9d21154c | 395 | WOLFSSL_API int wolfSSL_BIO_eof(WOLFSSL_BIO*); |
wolfSSL | 0:d92f9d21154c | 396 | |
wolfSSL | 0:d92f9d21154c | 397 | WOLFSSL_API WOLFSSL_BIO_METHOD* wolfSSL_BIO_s_mem(void); |
wolfSSL | 0:d92f9d21154c | 398 | WOLFSSL_API WOLFSSL_BIO_METHOD* wolfSSL_BIO_f_base64(void); |
wolfSSL | 0:d92f9d21154c | 399 | WOLFSSL_API void wolfSSL_BIO_set_flags(WOLFSSL_BIO*, int); |
wolfSSL | 0:d92f9d21154c | 400 | |
wolfSSL | 0:d92f9d21154c | 401 | WOLFSSL_API int wolfSSL_BIO_get_mem_data(WOLFSSL_BIO* bio,const unsigned char** p); |
wolfSSL | 0:d92f9d21154c | 402 | WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new_mem_buf(void* buf, int len); |
wolfSSL | 0:d92f9d21154c | 403 | |
wolfSSL | 0:d92f9d21154c | 404 | |
wolfSSL | 0:d92f9d21154c | 405 | WOLFSSL_API long wolfSSL_BIO_set_ssl(WOLFSSL_BIO*, WOLFSSL*, int flag); |
wolfSSL | 0:d92f9d21154c | 406 | WOLFSSL_API void wolfSSL_set_bio(WOLFSSL*, WOLFSSL_BIO* rd, WOLFSSL_BIO* wr); |
wolfSSL | 0:d92f9d21154c | 407 | |
wolfSSL | 0:d92f9d21154c | 408 | WOLFSSL_API int wolfSSL_add_all_algorithms(void); |
wolfSSL | 0:d92f9d21154c | 409 | |
wolfSSL | 0:d92f9d21154c | 410 | WOLFSSL_API void wolfSSL_RAND_screen(void); |
wolfSSL | 0:d92f9d21154c | 411 | WOLFSSL_API const char* wolfSSL_RAND_file_name(char*, unsigned long); |
wolfSSL | 0:d92f9d21154c | 412 | WOLFSSL_API int wolfSSL_RAND_write_file(const char*); |
wolfSSL | 0:d92f9d21154c | 413 | WOLFSSL_API int wolfSSL_RAND_load_file(const char*, long); |
wolfSSL | 0:d92f9d21154c | 414 | WOLFSSL_API int wolfSSL_RAND_egd(const char*); |
wolfSSL | 0:d92f9d21154c | 415 | WOLFSSL_API int wolfSSL_RAND_seed(const void*, int); |
wolfSSL | 0:d92f9d21154c | 416 | WOLFSSL_API void wolfSSL_RAND_add(const void*, int, double); |
wolfSSL | 0:d92f9d21154c | 417 | |
wolfSSL | 0:d92f9d21154c | 418 | WOLFSSL_API WOLFSSL_COMP_METHOD* wolfSSL_COMP_zlib(void); |
wolfSSL | 0:d92f9d21154c | 419 | WOLFSSL_API WOLFSSL_COMP_METHOD* wolfSSL_COMP_rle(void); |
wolfSSL | 0:d92f9d21154c | 420 | WOLFSSL_API int wolfSSL_COMP_add_compression_method(int, void*); |
wolfSSL | 0:d92f9d21154c | 421 | |
wolfSSL | 0:d92f9d21154c | 422 | WOLFSSL_API int wolfSSL_get_ex_new_index(long, void*, void*, void*, void*); |
wolfSSL | 0:d92f9d21154c | 423 | |
wolfSSL | 0:d92f9d21154c | 424 | WOLFSSL_API void wolfSSL_set_id_callback(unsigned long (*f)(void)); |
wolfSSL | 0:d92f9d21154c | 425 | WOLFSSL_API void wolfSSL_set_locking_callback(void (*f)(int, int, const char*, |
wolfSSL | 0:d92f9d21154c | 426 | int)); |
wolfSSL | 0:d92f9d21154c | 427 | WOLFSSL_API void wolfSSL_set_dynlock_create_callback(WOLFSSL_dynlock_value* (*f) |
wolfSSL | 0:d92f9d21154c | 428 | (const char*, int)); |
wolfSSL | 0:d92f9d21154c | 429 | WOLFSSL_API void wolfSSL_set_dynlock_lock_callback(void (*f)(int, |
wolfSSL | 0:d92f9d21154c | 430 | WOLFSSL_dynlock_value*, const char*, int)); |
wolfSSL | 0:d92f9d21154c | 431 | WOLFSSL_API void wolfSSL_set_dynlock_destroy_callback(void (*f) |
wolfSSL | 0:d92f9d21154c | 432 | (WOLFSSL_dynlock_value*, const char*, int)); |
wolfSSL | 0:d92f9d21154c | 433 | WOLFSSL_API int wolfSSL_num_locks(void); |
wolfSSL | 0:d92f9d21154c | 434 | |
wolfSSL | 0:d92f9d21154c | 435 | WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_STORE_CTX_get_current_cert( |
wolfSSL | 0:d92f9d21154c | 436 | WOLFSSL_X509_STORE_CTX*); |
wolfSSL | 0:d92f9d21154c | 437 | WOLFSSL_API int wolfSSL_X509_STORE_CTX_get_error(WOLFSSL_X509_STORE_CTX*); |
wolfSSL | 0:d92f9d21154c | 438 | WOLFSSL_API int wolfSSL_X509_STORE_CTX_get_error_depth(WOLFSSL_X509_STORE_CTX*); |
wolfSSL | 0:d92f9d21154c | 439 | |
wolfSSL | 0:d92f9d21154c | 440 | WOLFSSL_API char* wolfSSL_X509_NAME_oneline(WOLFSSL_X509_NAME*, char*, int); |
wolfSSL | 0:d92f9d21154c | 441 | WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_get_issuer_name(WOLFSSL_X509*); |
wolfSSL | 0:d92f9d21154c | 442 | WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_get_subject_name(WOLFSSL_X509*); |
wolfSSL | 0:d92f9d21154c | 443 | WOLFSSL_API int wolfSSL_X509_ext_isSet_by_NID(WOLFSSL_X509*, int); |
wolfSSL | 0:d92f9d21154c | 444 | WOLFSSL_API int wolfSSL_X509_ext_get_critical_by_NID(WOLFSSL_X509*, int); |
wolfSSL | 0:d92f9d21154c | 445 | WOLFSSL_API int wolfSSL_X509_get_isCA(WOLFSSL_X509*); |
wolfSSL | 0:d92f9d21154c | 446 | WOLFSSL_API int wolfSSL_X509_get_isSet_pathLength(WOLFSSL_X509*); |
wolfSSL | 0:d92f9d21154c | 447 | WOLFSSL_API unsigned int wolfSSL_X509_get_pathLength(WOLFSSL_X509*); |
wolfSSL | 0:d92f9d21154c | 448 | WOLFSSL_API unsigned int wolfSSL_X509_get_keyUsage(WOLFSSL_X509*); |
wolfSSL | 0:d92f9d21154c | 449 | WOLFSSL_API unsigned char* wolfSSL_X509_get_authorityKeyID( |
wolfSSL | 0:d92f9d21154c | 450 | WOLFSSL_X509*, unsigned char*, int*); |
wolfSSL | 0:d92f9d21154c | 451 | WOLFSSL_API unsigned char* wolfSSL_X509_get_subjectKeyID( |
wolfSSL | 0:d92f9d21154c | 452 | WOLFSSL_X509*, unsigned char*, int*); |
wolfSSL | 0:d92f9d21154c | 453 | WOLFSSL_API int wolfSSL_X509_NAME_entry_count(WOLFSSL_X509_NAME*); |
wolfSSL | 0:d92f9d21154c | 454 | WOLFSSL_API int wolfSSL_X509_NAME_get_text_by_NID( |
wolfSSL | 0:d92f9d21154c | 455 | WOLFSSL_X509_NAME*, int, char*, int); |
wolfSSL | 0:d92f9d21154c | 456 | WOLFSSL_API int wolfSSL_X509_verify_cert(WOLFSSL_X509_STORE_CTX*); |
wolfSSL | 0:d92f9d21154c | 457 | WOLFSSL_API const char* wolfSSL_X509_verify_cert_error_string(long); |
wolfSSL | 0:d92f9d21154c | 458 | WOLFSSL_API int wolfSSL_X509_get_signature_type(WOLFSSL_X509*); |
wolfSSL | 0:d92f9d21154c | 459 | WOLFSSL_API int wolfSSL_X509_get_signature(WOLFSSL_X509*, unsigned char*, int*); |
wolfSSL | 0:d92f9d21154c | 460 | |
wolfSSL | 0:d92f9d21154c | 461 | WOLFSSL_API int wolfSSL_X509_LOOKUP_add_dir(WOLFSSL_X509_LOOKUP*,const char*,long); |
wolfSSL | 0:d92f9d21154c | 462 | WOLFSSL_API int wolfSSL_X509_LOOKUP_load_file(WOLFSSL_X509_LOOKUP*, const char*, |
wolfSSL | 0:d92f9d21154c | 463 | long); |
wolfSSL | 0:d92f9d21154c | 464 | WOLFSSL_API WOLFSSL_X509_LOOKUP_METHOD* wolfSSL_X509_LOOKUP_hash_dir(void); |
wolfSSL | 0:d92f9d21154c | 465 | WOLFSSL_API WOLFSSL_X509_LOOKUP_METHOD* wolfSSL_X509_LOOKUP_file(void); |
wolfSSL | 0:d92f9d21154c | 466 | |
wolfSSL | 0:d92f9d21154c | 467 | WOLFSSL_API WOLFSSL_X509_LOOKUP* wolfSSL_X509_STORE_add_lookup(WOLFSSL_X509_STORE*, |
wolfSSL | 0:d92f9d21154c | 468 | WOLFSSL_X509_LOOKUP_METHOD*); |
wolfSSL | 0:d92f9d21154c | 469 | WOLFSSL_API WOLFSSL_X509_STORE* wolfSSL_X509_STORE_new(void); |
wolfSSL | 0:d92f9d21154c | 470 | WOLFSSL_API void wolfSSL_X509_STORE_free(WOLFSSL_X509_STORE*); |
wolfSSL | 0:d92f9d21154c | 471 | WOLFSSL_API int wolfSSL_X509_STORE_add_cert( |
wolfSSL | 0:d92f9d21154c | 472 | WOLFSSL_X509_STORE*, WOLFSSL_X509*); |
wolfSSL | 0:d92f9d21154c | 473 | WOLFSSL_API int wolfSSL_X509_STORE_set_default_paths(WOLFSSL_X509_STORE*); |
wolfSSL | 0:d92f9d21154c | 474 | WOLFSSL_API int wolfSSL_X509_STORE_get_by_subject(WOLFSSL_X509_STORE_CTX*, |
wolfSSL | 0:d92f9d21154c | 475 | int, WOLFSSL_X509_NAME*, WOLFSSL_X509_OBJECT*); |
wolfSSL | 0:d92f9d21154c | 476 | WOLFSSL_API WOLFSSL_X509_STORE_CTX* wolfSSL_X509_STORE_CTX_new(void); |
wolfSSL | 0:d92f9d21154c | 477 | WOLFSSL_API int wolfSSL_X509_STORE_CTX_init(WOLFSSL_X509_STORE_CTX*, |
wolfSSL | 0:d92f9d21154c | 478 | WOLFSSL_X509_STORE*, WOLFSSL_X509*, STACK_OF(WOLFSSL_X509)*); |
wolfSSL | 0:d92f9d21154c | 479 | WOLFSSL_API void wolfSSL_X509_STORE_CTX_free(WOLFSSL_X509_STORE_CTX*); |
wolfSSL | 0:d92f9d21154c | 480 | WOLFSSL_API void wolfSSL_X509_STORE_CTX_cleanup(WOLFSSL_X509_STORE_CTX*); |
wolfSSL | 0:d92f9d21154c | 481 | |
wolfSSL | 0:d92f9d21154c | 482 | WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_lastUpdate(WOLFSSL_X509_CRL*); |
wolfSSL | 0:d92f9d21154c | 483 | WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_nextUpdate(WOLFSSL_X509_CRL*); |
wolfSSL | 0:d92f9d21154c | 484 | |
wolfSSL | 0:d92f9d21154c | 485 | WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_X509_get_pubkey(WOLFSSL_X509*); |
wolfSSL | 0:d92f9d21154c | 486 | WOLFSSL_API int wolfSSL_X509_CRL_verify(WOLFSSL_X509_CRL*, WOLFSSL_EVP_PKEY*); |
wolfSSL | 0:d92f9d21154c | 487 | WOLFSSL_API void wolfSSL_X509_STORE_CTX_set_error(WOLFSSL_X509_STORE_CTX*, |
wolfSSL | 0:d92f9d21154c | 488 | int); |
wolfSSL | 0:d92f9d21154c | 489 | WOLFSSL_API void wolfSSL_X509_OBJECT_free_contents(WOLFSSL_X509_OBJECT*); |
wolfSSL | 0:d92f9d21154c | 490 | WOLFSSL_API void wolfSSL_EVP_PKEY_free(WOLFSSL_EVP_PKEY*); |
wolfSSL | 0:d92f9d21154c | 491 | WOLFSSL_API int wolfSSL_X509_cmp_current_time(const WOLFSSL_ASN1_TIME*); |
wolfSSL | 0:d92f9d21154c | 492 | WOLFSSL_API int wolfSSL_sk_X509_REVOKED_num(WOLFSSL_X509_REVOKED*); |
wolfSSL | 0:d92f9d21154c | 493 | |
wolfSSL | 0:d92f9d21154c | 494 | WOLFSSL_API WOLFSSL_X509_REVOKED* wolfSSL_X509_CRL_get_REVOKED(WOLFSSL_X509_CRL*); |
wolfSSL | 0:d92f9d21154c | 495 | WOLFSSL_API WOLFSSL_X509_REVOKED* wolfSSL_sk_X509_REVOKED_value( |
wolfSSL | 0:d92f9d21154c | 496 | WOLFSSL_X509_REVOKED*,int); |
wolfSSL | 0:d92f9d21154c | 497 | WOLFSSL_API WOLFSSL_ASN1_INTEGER* wolfSSL_X509_get_serialNumber(WOLFSSL_X509*); |
wolfSSL | 0:d92f9d21154c | 498 | |
wolfSSL | 0:d92f9d21154c | 499 | WOLFSSL_API int wolfSSL_ASN1_TIME_print(WOLFSSL_BIO*, const WOLFSSL_ASN1_TIME*); |
wolfSSL | 0:d92f9d21154c | 500 | |
wolfSSL | 0:d92f9d21154c | 501 | WOLFSSL_API int wolfSSL_ASN1_INTEGER_cmp(const WOLFSSL_ASN1_INTEGER*, |
wolfSSL | 0:d92f9d21154c | 502 | const WOLFSSL_ASN1_INTEGER*); |
wolfSSL | 0:d92f9d21154c | 503 | WOLFSSL_API long wolfSSL_ASN1_INTEGER_get(const WOLFSSL_ASN1_INTEGER*); |
wolfSSL | 0:d92f9d21154c | 504 | |
wolfSSL | 0:d92f9d21154c | 505 | WOLFSSL_API STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_load_client_CA_file(const char*); |
wolfSSL | 0:d92f9d21154c | 506 | |
wolfSSL | 0:d92f9d21154c | 507 | WOLFSSL_API void wolfSSL_CTX_set_client_CA_list(WOLFSSL_CTX*, |
wolfSSL | 0:d92f9d21154c | 508 | STACK_OF(WOLFSSL_X509_NAME)*); |
wolfSSL | 0:d92f9d21154c | 509 | WOLFSSL_API void* wolfSSL_X509_STORE_CTX_get_ex_data(WOLFSSL_X509_STORE_CTX*, int); |
wolfSSL | 0:d92f9d21154c | 510 | WOLFSSL_API int wolfSSL_get_ex_data_X509_STORE_CTX_idx(void); |
wolfSSL | 0:d92f9d21154c | 511 | WOLFSSL_API void* wolfSSL_get_ex_data(const WOLFSSL*, int); |
wolfSSL | 0:d92f9d21154c | 512 | |
wolfSSL | 0:d92f9d21154c | 513 | WOLFSSL_API void wolfSSL_CTX_set_default_passwd_cb_userdata(WOLFSSL_CTX*, |
wolfSSL | 0:d92f9d21154c | 514 | void* userdata); |
wolfSSL | 0:d92f9d21154c | 515 | WOLFSSL_API void wolfSSL_CTX_set_default_passwd_cb(WOLFSSL_CTX*, pem_password_cb); |
wolfSSL | 0:d92f9d21154c | 516 | |
wolfSSL | 0:d92f9d21154c | 517 | |
wolfSSL | 0:d92f9d21154c | 518 | WOLFSSL_API void wolfSSL_CTX_set_info_callback(WOLFSSL_CTX*, void (*)(void)); |
wolfSSL | 0:d92f9d21154c | 519 | |
wolfSSL | 0:d92f9d21154c | 520 | WOLFSSL_API unsigned long wolfSSL_ERR_peek_error(void); |
wolfSSL | 0:d92f9d21154c | 521 | WOLFSSL_API int wolfSSL_GET_REASON(int); |
wolfSSL | 0:d92f9d21154c | 522 | |
wolfSSL | 0:d92f9d21154c | 523 | WOLFSSL_API char* wolfSSL_alert_type_string_long(int); |
wolfSSL | 0:d92f9d21154c | 524 | WOLFSSL_API char* wolfSSL_alert_desc_string_long(int); |
wolfSSL | 0:d92f9d21154c | 525 | WOLFSSL_API char* wolfSSL_state_string_long(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 526 | |
wolfSSL | 0:d92f9d21154c | 527 | WOLFSSL_API WOLFSSL_RSA* wolfSSL_RSA_generate_key(int, unsigned long, |
wolfSSL | 0:d92f9d21154c | 528 | void(*)(int, int, void*), void*); |
wolfSSL | 0:d92f9d21154c | 529 | WOLFSSL_API void wolfSSL_CTX_set_tmp_rsa_callback(WOLFSSL_CTX*, |
wolfSSL | 0:d92f9d21154c | 530 | WOLFSSL_RSA*(*)(WOLFSSL*, int, int)); |
wolfSSL | 0:d92f9d21154c | 531 | |
wolfSSL | 0:d92f9d21154c | 532 | WOLFSSL_API int wolfSSL_PEM_def_callback(char*, int num, int w, void* key); |
wolfSSL | 0:d92f9d21154c | 533 | |
wolfSSL | 0:d92f9d21154c | 534 | WOLFSSL_API long wolfSSL_CTX_sess_accept(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 535 | WOLFSSL_API long wolfSSL_CTX_sess_connect(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 536 | WOLFSSL_API long wolfSSL_CTX_sess_accept_good(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 537 | WOLFSSL_API long wolfSSL_CTX_sess_connect_good(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 538 | WOLFSSL_API long wolfSSL_CTX_sess_accept_renegotiate(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 539 | WOLFSSL_API long wolfSSL_CTX_sess_connect_renegotiate(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 540 | WOLFSSL_API long wolfSSL_CTX_sess_hits(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 541 | WOLFSSL_API long wolfSSL_CTX_sess_cb_hits(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 542 | WOLFSSL_API long wolfSSL_CTX_sess_cache_full(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 543 | WOLFSSL_API long wolfSSL_CTX_sess_misses(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 544 | WOLFSSL_API long wolfSSL_CTX_sess_timeouts(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 545 | WOLFSSL_API long wolfSSL_CTX_sess_number(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 546 | WOLFSSL_API long wolfSSL_CTX_sess_get_cache_size(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 547 | |
wolfSSL | 0:d92f9d21154c | 548 | #define WOLFSSL_DEFAULT_CIPHER_LIST "" /* default all */ |
wolfSSL | 0:d92f9d21154c | 549 | #define WOLFSSL_RSA_F4 0x10001L |
wolfSSL | 0:d92f9d21154c | 550 | |
wolfSSL | 0:d92f9d21154c | 551 | enum { |
wolfSSL | 0:d92f9d21154c | 552 | OCSP_NOCERTS = 1, |
wolfSSL | 0:d92f9d21154c | 553 | OCSP_NOINTERN = 2, |
wolfSSL | 0:d92f9d21154c | 554 | OCSP_NOSIGS = 4, |
wolfSSL | 0:d92f9d21154c | 555 | OCSP_NOCHAIN = 8, |
wolfSSL | 0:d92f9d21154c | 556 | OCSP_NOVERIFY = 16, |
wolfSSL | 0:d92f9d21154c | 557 | OCSP_NOEXPLICIT = 32, |
wolfSSL | 0:d92f9d21154c | 558 | OCSP_NOCASIGN = 64, |
wolfSSL | 0:d92f9d21154c | 559 | OCSP_NODELEGATED = 128, |
wolfSSL | 0:d92f9d21154c | 560 | OCSP_NOCHECKS = 256, |
wolfSSL | 0:d92f9d21154c | 561 | OCSP_TRUSTOTHER = 512, |
wolfSSL | 0:d92f9d21154c | 562 | OCSP_RESPID_KEY = 1024, |
wolfSSL | 0:d92f9d21154c | 563 | OCSP_NOTIME = 2048, |
wolfSSL | 0:d92f9d21154c | 564 | |
wolfSSL | 0:d92f9d21154c | 565 | OCSP_CERTID = 2, |
wolfSSL | 0:d92f9d21154c | 566 | OCSP_REQUEST = 4, |
wolfSSL | 0:d92f9d21154c | 567 | OCSP_RESPONSE = 8, |
wolfSSL | 0:d92f9d21154c | 568 | OCSP_BASICRESP = 16, |
wolfSSL | 0:d92f9d21154c | 569 | |
wolfSSL | 0:d92f9d21154c | 570 | WOLFSSL_OCSP_URL_OVERRIDE = 1, |
wolfSSL | 0:d92f9d21154c | 571 | WOLFSSL_OCSP_NO_NONCE = 2, |
wolfSSL | 0:d92f9d21154c | 572 | WOLFSSL_OCSP_CHECKALL = 4, |
wolfSSL | 0:d92f9d21154c | 573 | |
wolfSSL | 0:d92f9d21154c | 574 | WOLFSSL_CRL_CHECKALL = 1, |
wolfSSL | 0:d92f9d21154c | 575 | |
wolfSSL | 0:d92f9d21154c | 576 | ASN1_GENERALIZEDTIME = 4, |
wolfSSL | 0:d92f9d21154c | 577 | |
wolfSSL | 0:d92f9d21154c | 578 | SSL_OP_MICROSOFT_SESS_ID_BUG = 1, |
wolfSSL | 0:d92f9d21154c | 579 | SSL_OP_NETSCAPE_CHALLENGE_BUG = 2, |
wolfSSL | 0:d92f9d21154c | 580 | SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG = 3, |
wolfSSL | 0:d92f9d21154c | 581 | SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG = 4, |
wolfSSL | 0:d92f9d21154c | 582 | SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER = 5, |
wolfSSL | 0:d92f9d21154c | 583 | SSL_OP_MSIE_SSLV2_RSA_PADDING = 6, |
wolfSSL | 0:d92f9d21154c | 584 | SSL_OP_SSLEAY_080_CLIENT_DH_BUG = 7, |
wolfSSL | 0:d92f9d21154c | 585 | SSL_OP_TLS_D5_BUG = 8, |
wolfSSL | 0:d92f9d21154c | 586 | SSL_OP_TLS_BLOCK_PADDING_BUG = 9, |
wolfSSL | 0:d92f9d21154c | 587 | SSL_OP_TLS_ROLLBACK_BUG = 10, |
wolfSSL | 0:d92f9d21154c | 588 | SSL_OP_ALL = 11, |
wolfSSL | 0:d92f9d21154c | 589 | SSL_OP_EPHEMERAL_RSA = 12, |
wolfSSL | 0:d92f9d21154c | 590 | SSL_OP_NO_SSLv3 = 13, |
wolfSSL | 0:d92f9d21154c | 591 | SSL_OP_NO_TLSv1 = 14, |
wolfSSL | 0:d92f9d21154c | 592 | SSL_OP_PKCS1_CHECK_1 = 15, |
wolfSSL | 0:d92f9d21154c | 593 | SSL_OP_PKCS1_CHECK_2 = 16, |
wolfSSL | 0:d92f9d21154c | 594 | SSL_OP_NETSCAPE_CA_DN_BUG = 17, |
wolfSSL | 0:d92f9d21154c | 595 | SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG = 18, |
wolfSSL | 0:d92f9d21154c | 596 | SSL_OP_SINGLE_DH_USE = 19, |
wolfSSL | 0:d92f9d21154c | 597 | SSL_OP_NO_TICKET = 20, |
wolfSSL | 0:d92f9d21154c | 598 | SSL_OP_DONT_INSERT_EMPTY_FRAGMENTS = 21, |
wolfSSL | 0:d92f9d21154c | 599 | SSL_OP_NO_QUERY_MTU = 22, |
wolfSSL | 0:d92f9d21154c | 600 | SSL_OP_COOKIE_EXCHANGE = 23, |
wolfSSL | 0:d92f9d21154c | 601 | SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION = 24, |
wolfSSL | 0:d92f9d21154c | 602 | SSL_OP_SINGLE_ECDH_USE = 25, |
wolfSSL | 0:d92f9d21154c | 603 | SSL_OP_CIPHER_SERVER_PREFERENCE = 26, |
wolfSSL | 0:d92f9d21154c | 604 | |
wolfSSL | 0:d92f9d21154c | 605 | SSL_MAX_SSL_SESSION_ID_LENGTH = 32, |
wolfSSL | 0:d92f9d21154c | 606 | |
wolfSSL | 0:d92f9d21154c | 607 | EVP_R_BAD_DECRYPT = 2, |
wolfSSL | 0:d92f9d21154c | 608 | |
wolfSSL | 0:d92f9d21154c | 609 | SSL_CB_LOOP = 4, |
wolfSSL | 0:d92f9d21154c | 610 | SSL_ST_CONNECT = 5, |
wolfSSL | 0:d92f9d21154c | 611 | SSL_ST_ACCEPT = 6, |
wolfSSL | 0:d92f9d21154c | 612 | SSL_CB_ALERT = 7, |
wolfSSL | 0:d92f9d21154c | 613 | SSL_CB_READ = 8, |
wolfSSL | 0:d92f9d21154c | 614 | SSL_CB_HANDSHAKE_DONE = 9, |
wolfSSL | 0:d92f9d21154c | 615 | |
wolfSSL | 0:d92f9d21154c | 616 | SSL_MODE_ENABLE_PARTIAL_WRITE = 2, |
wolfSSL | 0:d92f9d21154c | 617 | |
wolfSSL | 0:d92f9d21154c | 618 | BIO_FLAGS_BASE64_NO_NL = 1, |
wolfSSL | 0:d92f9d21154c | 619 | BIO_CLOSE = 1, |
wolfSSL | 0:d92f9d21154c | 620 | BIO_NOCLOSE = 0, |
wolfSSL | 0:d92f9d21154c | 621 | |
wolfSSL | 0:d92f9d21154c | 622 | NID_undef = 0, |
wolfSSL | 0:d92f9d21154c | 623 | |
wolfSSL | 0:d92f9d21154c | 624 | X509_FILETYPE_PEM = 8, |
wolfSSL | 0:d92f9d21154c | 625 | X509_LU_X509 = 9, |
wolfSSL | 0:d92f9d21154c | 626 | X509_LU_CRL = 12, |
wolfSSL | 0:d92f9d21154c | 627 | |
wolfSSL | 0:d92f9d21154c | 628 | X509_V_ERR_CRL_SIGNATURE_FAILURE = 13, |
wolfSSL | 0:d92f9d21154c | 629 | X509_V_ERR_ERROR_IN_CRL_NEXT_UPDATE_FIELD = 14, |
wolfSSL | 0:d92f9d21154c | 630 | X509_V_ERR_CRL_HAS_EXPIRED = 15, |
wolfSSL | 0:d92f9d21154c | 631 | X509_V_ERR_CERT_REVOKED = 16, |
wolfSSL | 0:d92f9d21154c | 632 | X509_V_ERR_CERT_CHAIN_TOO_LONG = 17, |
wolfSSL | 0:d92f9d21154c | 633 | X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT = 18, |
wolfSSL | 0:d92f9d21154c | 634 | X509_V_ERR_CERT_NOT_YET_VALID = 19, |
wolfSSL | 0:d92f9d21154c | 635 | X509_V_ERR_ERROR_IN_CERT_NOT_BEFORE_FIELD = 20, |
wolfSSL | 0:d92f9d21154c | 636 | X509_V_ERR_CERT_HAS_EXPIRED = 21, |
wolfSSL | 0:d92f9d21154c | 637 | X509_V_ERR_ERROR_IN_CERT_NOT_AFTER_FIELD = 22, |
wolfSSL | 0:d92f9d21154c | 638 | |
wolfSSL | 0:d92f9d21154c | 639 | X509_V_OK = 0, |
wolfSSL | 0:d92f9d21154c | 640 | |
wolfSSL | 0:d92f9d21154c | 641 | CRYPTO_LOCK = 1, |
wolfSSL | 0:d92f9d21154c | 642 | CRYPTO_NUM_LOCKS = 10 |
wolfSSL | 0:d92f9d21154c | 643 | }; |
wolfSSL | 0:d92f9d21154c | 644 | |
wolfSSL | 0:d92f9d21154c | 645 | /* extras end */ |
wolfSSL | 0:d92f9d21154c | 646 | |
wolfSSL | 0:d92f9d21154c | 647 | #if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) |
wolfSSL | 0:d92f9d21154c | 648 | /* wolfSSL extension, provide last error from SSL_get_error |
wolfSSL | 0:d92f9d21154c | 649 | since not using thread storage error queue */ |
wolfSSL | 0:d92f9d21154c | 650 | WOLFSSL_API void wolfSSL_ERR_print_errors_fp(FILE*, int err); |
wolfSSL | 0:d92f9d21154c | 651 | #endif |
wolfSSL | 0:d92f9d21154c | 652 | |
wolfSSL | 0:d92f9d21154c | 653 | enum { /* ssl Constants */ |
wolfSSL | 0:d92f9d21154c | 654 | SSL_ERROR_NONE = 0, /* for most functions */ |
wolfSSL | 0:d92f9d21154c | 655 | SSL_FAILURE = 0, /* for some functions */ |
wolfSSL | 0:d92f9d21154c | 656 | SSL_SUCCESS = 1, |
wolfSSL | 0:d92f9d21154c | 657 | SSL_SHUTDOWN_NOT_DONE = 2, /* call wolfSSL_shutdown again to complete */ |
wolfSSL | 0:d92f9d21154c | 658 | |
wolfSSL | 0:d92f9d21154c | 659 | SSL_BAD_CERTTYPE = -8, |
wolfSSL | 0:d92f9d21154c | 660 | SSL_BAD_STAT = -7, |
wolfSSL | 0:d92f9d21154c | 661 | SSL_BAD_PATH = -6, |
wolfSSL | 0:d92f9d21154c | 662 | SSL_BAD_FILETYPE = -5, |
wolfSSL | 0:d92f9d21154c | 663 | SSL_BAD_FILE = -4, |
wolfSSL | 0:d92f9d21154c | 664 | SSL_NOT_IMPLEMENTED = -3, |
wolfSSL | 0:d92f9d21154c | 665 | SSL_UNKNOWN = -2, |
wolfSSL | 0:d92f9d21154c | 666 | SSL_FATAL_ERROR = -1, |
wolfSSL | 0:d92f9d21154c | 667 | |
wolfSSL | 0:d92f9d21154c | 668 | SSL_FILETYPE_ASN1 = 2, |
wolfSSL | 0:d92f9d21154c | 669 | SSL_FILETYPE_PEM = 1, |
wolfSSL | 0:d92f9d21154c | 670 | SSL_FILETYPE_DEFAULT = 2, /* ASN1 */ |
wolfSSL | 0:d92f9d21154c | 671 | SSL_FILETYPE_RAW = 3, /* NTRU raw key blob */ |
wolfSSL | 0:d92f9d21154c | 672 | |
wolfSSL | 0:d92f9d21154c | 673 | SSL_VERIFY_NONE = 0, |
wolfSSL | 0:d92f9d21154c | 674 | SSL_VERIFY_PEER = 1, |
wolfSSL | 0:d92f9d21154c | 675 | SSL_VERIFY_FAIL_IF_NO_PEER_CERT = 2, |
wolfSSL | 0:d92f9d21154c | 676 | SSL_VERIFY_CLIENT_ONCE = 4, |
wolfSSL | 0:d92f9d21154c | 677 | |
wolfSSL | 0:d92f9d21154c | 678 | SSL_SESS_CACHE_OFF = 30, |
wolfSSL | 0:d92f9d21154c | 679 | SSL_SESS_CACHE_CLIENT = 31, |
wolfSSL | 0:d92f9d21154c | 680 | SSL_SESS_CACHE_SERVER = 32, |
wolfSSL | 0:d92f9d21154c | 681 | SSL_SESS_CACHE_BOTH = 33, |
wolfSSL | 0:d92f9d21154c | 682 | SSL_SESS_CACHE_NO_AUTO_CLEAR = 34, |
wolfSSL | 0:d92f9d21154c | 683 | SSL_SESS_CACHE_NO_INTERNAL_LOOKUP = 35, |
wolfSSL | 0:d92f9d21154c | 684 | |
wolfSSL | 0:d92f9d21154c | 685 | SSL_ERROR_WANT_READ = 2, |
wolfSSL | 0:d92f9d21154c | 686 | SSL_ERROR_WANT_WRITE = 3, |
wolfSSL | 0:d92f9d21154c | 687 | SSL_ERROR_WANT_CONNECT = 7, |
wolfSSL | 0:d92f9d21154c | 688 | SSL_ERROR_WANT_ACCEPT = 8, |
wolfSSL | 0:d92f9d21154c | 689 | SSL_ERROR_SYSCALL = 5, |
wolfSSL | 0:d92f9d21154c | 690 | SSL_ERROR_WANT_X509_LOOKUP = 83, |
wolfSSL | 0:d92f9d21154c | 691 | SSL_ERROR_ZERO_RETURN = 6, |
wolfSSL | 0:d92f9d21154c | 692 | SSL_ERROR_SSL = 85, |
wolfSSL | 0:d92f9d21154c | 693 | |
wolfSSL | 0:d92f9d21154c | 694 | SSL_SENT_SHUTDOWN = 1, |
wolfSSL | 0:d92f9d21154c | 695 | SSL_RECEIVED_SHUTDOWN = 2, |
wolfSSL | 0:d92f9d21154c | 696 | SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER = 4, |
wolfSSL | 0:d92f9d21154c | 697 | SSL_OP_NO_SSLv2 = 8, |
wolfSSL | 0:d92f9d21154c | 698 | |
wolfSSL | 0:d92f9d21154c | 699 | SSL_R_SSL_HANDSHAKE_FAILURE = 101, |
wolfSSL | 0:d92f9d21154c | 700 | SSL_R_TLSV1_ALERT_UNKNOWN_CA = 102, |
wolfSSL | 0:d92f9d21154c | 701 | SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN = 103, |
wolfSSL | 0:d92f9d21154c | 702 | SSL_R_SSLV3_ALERT_BAD_CERTIFICATE = 104, |
wolfSSL | 0:d92f9d21154c | 703 | |
wolfSSL | 0:d92f9d21154c | 704 | PEM_BUFSIZE = 1024 |
wolfSSL | 0:d92f9d21154c | 705 | }; |
wolfSSL | 0:d92f9d21154c | 706 | |
wolfSSL | 0:d92f9d21154c | 707 | |
wolfSSL | 0:d92f9d21154c | 708 | #ifndef NO_PSK |
wolfSSL | 0:d92f9d21154c | 709 | typedef unsigned int (*psk_client_callback)(WOLFSSL*, const char*, char*, |
wolfSSL | 0:d92f9d21154c | 710 | unsigned int, unsigned char*, unsigned int); |
wolfSSL | 0:d92f9d21154c | 711 | WOLFSSL_API void wolfSSL_CTX_set_psk_client_callback(WOLFSSL_CTX*, |
wolfSSL | 0:d92f9d21154c | 712 | psk_client_callback); |
wolfSSL | 0:d92f9d21154c | 713 | WOLFSSL_API void wolfSSL_set_psk_client_callback(WOLFSSL*,psk_client_callback); |
wolfSSL | 0:d92f9d21154c | 714 | |
wolfSSL | 0:d92f9d21154c | 715 | WOLFSSL_API const char* wolfSSL_get_psk_identity_hint(const WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 716 | WOLFSSL_API const char* wolfSSL_get_psk_identity(const WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 717 | |
wolfSSL | 0:d92f9d21154c | 718 | WOLFSSL_API int wolfSSL_CTX_use_psk_identity_hint(WOLFSSL_CTX*, const char*); |
wolfSSL | 0:d92f9d21154c | 719 | WOLFSSL_API int wolfSSL_use_psk_identity_hint(WOLFSSL*, const char*); |
wolfSSL | 0:d92f9d21154c | 720 | |
wolfSSL | 0:d92f9d21154c | 721 | typedef unsigned int (*psk_server_callback)(WOLFSSL*, const char*, |
wolfSSL | 0:d92f9d21154c | 722 | unsigned char*, unsigned int); |
wolfSSL | 0:d92f9d21154c | 723 | WOLFSSL_API void wolfSSL_CTX_set_psk_server_callback(WOLFSSL_CTX*, |
wolfSSL | 0:d92f9d21154c | 724 | psk_server_callback); |
wolfSSL | 0:d92f9d21154c | 725 | WOLFSSL_API void wolfSSL_set_psk_server_callback(WOLFSSL*,psk_server_callback); |
wolfSSL | 0:d92f9d21154c | 726 | |
wolfSSL | 0:d92f9d21154c | 727 | #define PSK_TYPES_DEFINED |
wolfSSL | 0:d92f9d21154c | 728 | #endif /* NO_PSK */ |
wolfSSL | 0:d92f9d21154c | 729 | |
wolfSSL | 0:d92f9d21154c | 730 | |
wolfSSL | 0:d92f9d21154c | 731 | #ifdef HAVE_ANON |
wolfSSL | 0:d92f9d21154c | 732 | WOLFSSL_API int wolfSSL_CTX_allow_anon_cipher(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 733 | #endif /* HAVE_ANON */ |
wolfSSL | 0:d92f9d21154c | 734 | |
wolfSSL | 0:d92f9d21154c | 735 | |
wolfSSL | 0:d92f9d21154c | 736 | /* extra begins */ |
wolfSSL | 0:d92f9d21154c | 737 | |
wolfSSL | 0:d92f9d21154c | 738 | enum { /* ERR Constants */ |
wolfSSL | 0:d92f9d21154c | 739 | ERR_TXT_STRING = 1 |
wolfSSL | 0:d92f9d21154c | 740 | }; |
wolfSSL | 0:d92f9d21154c | 741 | |
wolfSSL | 0:d92f9d21154c | 742 | WOLFSSL_API unsigned long wolfSSL_ERR_get_error_line_data(const char**, int*, |
wolfSSL | 0:d92f9d21154c | 743 | const char**, int *); |
wolfSSL | 0:d92f9d21154c | 744 | |
wolfSSL | 0:d92f9d21154c | 745 | WOLFSSL_API unsigned long wolfSSL_ERR_get_error(void); |
wolfSSL | 0:d92f9d21154c | 746 | WOLFSSL_API void wolfSSL_ERR_clear_error(void); |
wolfSSL | 0:d92f9d21154c | 747 | |
wolfSSL | 0:d92f9d21154c | 748 | |
wolfSSL | 0:d92f9d21154c | 749 | WOLFSSL_API int wolfSSL_RAND_status(void); |
wolfSSL | 0:d92f9d21154c | 750 | WOLFSSL_API int wolfSSL_RAND_bytes(unsigned char* buf, int num); |
wolfSSL | 0:d92f9d21154c | 751 | WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_server_method(void); |
wolfSSL | 0:d92f9d21154c | 752 | WOLFSSL_API long wolfSSL_CTX_set_options(WOLFSSL_CTX*, long); |
wolfSSL | 0:d92f9d21154c | 753 | #ifndef NO_CERTS |
wolfSSL | 0:d92f9d21154c | 754 | WOLFSSL_API int wolfSSL_CTX_check_private_key(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 755 | #endif /* !NO_CERTS */ |
wolfSSL | 0:d92f9d21154c | 756 | |
wolfSSL | 0:d92f9d21154c | 757 | WOLFSSL_API void wolfSSL_ERR_free_strings(void); |
wolfSSL | 0:d92f9d21154c | 758 | WOLFSSL_API void wolfSSL_ERR_remove_state(unsigned long); |
wolfSSL | 0:d92f9d21154c | 759 | WOLFSSL_API void wolfSSL_EVP_cleanup(void); |
wolfSSL | 0:d92f9d21154c | 760 | WOLFSSL_API int wolfSSL_clear(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 761 | |
wolfSSL | 0:d92f9d21154c | 762 | WOLFSSL_API void wolfSSL_cleanup_all_ex_data(void); |
wolfSSL | 0:d92f9d21154c | 763 | WOLFSSL_API long wolfSSL_CTX_set_mode(WOLFSSL_CTX* ctx, long mode); |
wolfSSL | 0:d92f9d21154c | 764 | WOLFSSL_API long wolfSSL_CTX_get_mode(WOLFSSL_CTX* ctx); |
wolfSSL | 0:d92f9d21154c | 765 | WOLFSSL_API void wolfSSL_CTX_set_default_read_ahead(WOLFSSL_CTX* ctx, int m); |
wolfSSL | 0:d92f9d21154c | 766 | WOLFSSL_API long wolfSSL_SSL_get_mode(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 767 | |
wolfSSL | 0:d92f9d21154c | 768 | WOLFSSL_API long wolfSSL_CTX_sess_set_cache_size(WOLFSSL_CTX*, long); |
wolfSSL | 0:d92f9d21154c | 769 | |
wolfSSL | 0:d92f9d21154c | 770 | WOLFSSL_API int wolfSSL_CTX_set_default_verify_paths(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 771 | WOLFSSL_API int wolfSSL_CTX_set_session_id_context(WOLFSSL_CTX*, |
wolfSSL | 0:d92f9d21154c | 772 | const unsigned char*, unsigned int); |
wolfSSL | 0:d92f9d21154c | 773 | WOLFSSL_API WOLFSSL_X509* wolfSSL_get_peer_certificate(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 774 | |
wolfSSL | 0:d92f9d21154c | 775 | WOLFSSL_API int wolfSSL_want_read(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 776 | WOLFSSL_API int wolfSSL_want_write(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 777 | |
wolfSSL | 0:d92f9d21154c | 778 | WOLFSSL_API int wolfSSL_BIO_printf(WOLFSSL_BIO*, const char*, ...); |
wolfSSL | 0:d92f9d21154c | 779 | WOLFSSL_API int wolfSSL_ASN1_UTCTIME_print(WOLFSSL_BIO*, |
wolfSSL | 0:d92f9d21154c | 780 | const WOLFSSL_ASN1_UTCTIME*); |
wolfSSL | 0:d92f9d21154c | 781 | WOLFSSL_API int wolfSSL_sk_num(WOLFSSL_X509_REVOKED*); |
wolfSSL | 0:d92f9d21154c | 782 | WOLFSSL_API void* wolfSSL_sk_value(WOLFSSL_X509_REVOKED*, int); |
wolfSSL | 0:d92f9d21154c | 783 | |
wolfSSL | 0:d92f9d21154c | 784 | /* stunnel 4.28 needs */ |
wolfSSL | 0:d92f9d21154c | 785 | WOLFSSL_API void* wolfSSL_CTX_get_ex_data(const WOLFSSL_CTX*, int); |
wolfSSL | 0:d92f9d21154c | 786 | WOLFSSL_API int wolfSSL_CTX_set_ex_data(WOLFSSL_CTX*, int, void*); |
wolfSSL | 0:d92f9d21154c | 787 | WOLFSSL_API void wolfSSL_CTX_sess_set_get_cb(WOLFSSL_CTX*, |
wolfSSL | 0:d92f9d21154c | 788 | WOLFSSL_SESSION*(*f)(WOLFSSL*, unsigned char*, int, int*)); |
wolfSSL | 0:d92f9d21154c | 789 | WOLFSSL_API void wolfSSL_CTX_sess_set_new_cb(WOLFSSL_CTX*, |
wolfSSL | 0:d92f9d21154c | 790 | int (*f)(WOLFSSL*, WOLFSSL_SESSION*)); |
wolfSSL | 0:d92f9d21154c | 791 | WOLFSSL_API void wolfSSL_CTX_sess_set_remove_cb(WOLFSSL_CTX*, |
wolfSSL | 0:d92f9d21154c | 792 | void (*f)(WOLFSSL_CTX*, WOLFSSL_SESSION*)); |
wolfSSL | 0:d92f9d21154c | 793 | |
wolfSSL | 0:d92f9d21154c | 794 | WOLFSSL_API int wolfSSL_i2d_SSL_SESSION(WOLFSSL_SESSION*,unsigned char**); |
wolfSSL | 0:d92f9d21154c | 795 | WOLFSSL_API WOLFSSL_SESSION* wolfSSL_d2i_SSL_SESSION(WOLFSSL_SESSION**, |
wolfSSL | 0:d92f9d21154c | 796 | const unsigned char**, long); |
wolfSSL | 0:d92f9d21154c | 797 | |
wolfSSL | 0:d92f9d21154c | 798 | WOLFSSL_API long wolfSSL_SESSION_get_timeout(const WOLFSSL_SESSION*); |
wolfSSL | 0:d92f9d21154c | 799 | WOLFSSL_API long wolfSSL_SESSION_get_time(const WOLFSSL_SESSION*); |
wolfSSL | 0:d92f9d21154c | 800 | WOLFSSL_API int wolfSSL_CTX_get_ex_new_index(long, void*, void*, void*, void*); |
wolfSSL | 0:d92f9d21154c | 801 | |
wolfSSL | 0:d92f9d21154c | 802 | /* extra ends */ |
wolfSSL | 0:d92f9d21154c | 803 | |
wolfSSL | 0:d92f9d21154c | 804 | |
wolfSSL | 0:d92f9d21154c | 805 | /* wolfSSL extensions */ |
wolfSSL | 0:d92f9d21154c | 806 | |
wolfSSL | 0:d92f9d21154c | 807 | /* call before SSL_connect, if verifying will add name check to |
wolfSSL | 0:d92f9d21154c | 808 | date check and signature check */ |
wolfSSL | 0:d92f9d21154c | 809 | WOLFSSL_API int wolfSSL_check_domain_name(WOLFSSL* ssl, const char* dn); |
wolfSSL | 0:d92f9d21154c | 810 | |
wolfSSL | 0:d92f9d21154c | 811 | /* need to call once to load library (session cache) */ |
wolfSSL | 0:d92f9d21154c | 812 | WOLFSSL_API int wolfSSL_Init(void); |
wolfSSL | 0:d92f9d21154c | 813 | /* call when done to cleanup/free session cache mutex / resources */ |
wolfSSL | 0:d92f9d21154c | 814 | WOLFSSL_API int wolfSSL_Cleanup(void); |
wolfSSL | 0:d92f9d21154c | 815 | |
wolfSSL | 0:d92f9d21154c | 816 | /* which library version do we have */ |
wolfSSL | 0:d92f9d21154c | 817 | WOLFSSL_API const char* wolfSSL_lib_version(void); |
wolfSSL | 0:d92f9d21154c | 818 | /* which library version do we have in hex */ |
wolfSSL | 0:d92f9d21154c | 819 | WOLFSSL_API unsigned int wolfSSL_lib_version_hex(void); |
wolfSSL | 0:d92f9d21154c | 820 | |
wolfSSL | 0:d92f9d21154c | 821 | /* turn logging on, only if compiled in */ |
wolfSSL | 0:d92f9d21154c | 822 | WOLFSSL_API int wolfSSL_Debugging_ON(void); |
wolfSSL | 0:d92f9d21154c | 823 | /* turn logging off */ |
wolfSSL | 0:d92f9d21154c | 824 | WOLFSSL_API void wolfSSL_Debugging_OFF(void); |
wolfSSL | 0:d92f9d21154c | 825 | |
wolfSSL | 0:d92f9d21154c | 826 | /* do accept or connect depedning on side */ |
wolfSSL | 0:d92f9d21154c | 827 | WOLFSSL_API int wolfSSL_negotiate(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 828 | /* turn on wolfSSL data compression */ |
wolfSSL | 0:d92f9d21154c | 829 | WOLFSSL_API int wolfSSL_set_compression(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 830 | |
wolfSSL | 0:d92f9d21154c | 831 | WOLFSSL_API int wolfSSL_set_timeout(WOLFSSL*, unsigned int); |
wolfSSL | 0:d92f9d21154c | 832 | WOLFSSL_API int wolfSSL_CTX_set_timeout(WOLFSSL_CTX*, unsigned int); |
wolfSSL | 0:d92f9d21154c | 833 | |
wolfSSL | 0:d92f9d21154c | 834 | /* get wolfSSL peer X509_CHAIN */ |
wolfSSL | 0:d92f9d21154c | 835 | WOLFSSL_API WOLFSSL_X509_CHAIN* wolfSSL_get_peer_chain(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 836 | /* peer chain count */ |
wolfSSL | 0:d92f9d21154c | 837 | WOLFSSL_API int wolfSSL_get_chain_count(WOLFSSL_X509_CHAIN* chain); |
wolfSSL | 0:d92f9d21154c | 838 | /* index cert length */ |
wolfSSL | 0:d92f9d21154c | 839 | WOLFSSL_API int wolfSSL_get_chain_length(WOLFSSL_X509_CHAIN*, int idx); |
wolfSSL | 0:d92f9d21154c | 840 | /* index cert */ |
wolfSSL | 0:d92f9d21154c | 841 | WOLFSSL_API unsigned char* wolfSSL_get_chain_cert(WOLFSSL_X509_CHAIN*, int idx); |
wolfSSL | 0:d92f9d21154c | 842 | /* index cert in X509 */ |
wolfSSL | 0:d92f9d21154c | 843 | WOLFSSL_API WOLFSSL_X509* wolfSSL_get_chain_X509(WOLFSSL_X509_CHAIN*, int idx); |
wolfSSL | 0:d92f9d21154c | 844 | /* free X509 */ |
wolfSSL | 0:d92f9d21154c | 845 | WOLFSSL_API void wolfSSL_FreeX509(WOLFSSL_X509*); |
wolfSSL | 0:d92f9d21154c | 846 | /* get index cert in PEM */ |
wolfSSL | 0:d92f9d21154c | 847 | WOLFSSL_API int wolfSSL_get_chain_cert_pem(WOLFSSL_X509_CHAIN*, int idx, |
wolfSSL | 0:d92f9d21154c | 848 | unsigned char* buffer, int inLen, int* outLen); |
wolfSSL | 0:d92f9d21154c | 849 | WOLFSSL_API const unsigned char* wolfSSL_get_sessionID(const WOLFSSL_SESSION* s); |
wolfSSL | 0:d92f9d21154c | 850 | WOLFSSL_API int wolfSSL_X509_get_serial_number(WOLFSSL_X509*,unsigned char*,int*); |
wolfSSL | 0:d92f9d21154c | 851 | WOLFSSL_API char* wolfSSL_X509_get_subjectCN(WOLFSSL_X509*); |
wolfSSL | 0:d92f9d21154c | 852 | WOLFSSL_API const unsigned char* wolfSSL_X509_get_der(WOLFSSL_X509*, int*); |
wolfSSL | 0:d92f9d21154c | 853 | WOLFSSL_API const unsigned char* wolfSSL_X509_notBefore(WOLFSSL_X509*); |
wolfSSL | 0:d92f9d21154c | 854 | WOLFSSL_API const unsigned char* wolfSSL_X509_notAfter(WOLFSSL_X509*); |
wolfSSL | 0:d92f9d21154c | 855 | WOLFSSL_API int wolfSSL_X509_version(WOLFSSL_X509*); |
wolfSSL | 0:d92f9d21154c | 856 | |
wolfSSL | 0:d92f9d21154c | 857 | WOLFSSL_API int wolfSSL_cmp_peer_cert_to_file(WOLFSSL*, const char*); |
wolfSSL | 0:d92f9d21154c | 858 | |
wolfSSL | 0:d92f9d21154c | 859 | WOLFSSL_API char* wolfSSL_X509_get_next_altname(WOLFSSL_X509*); |
wolfSSL | 0:d92f9d21154c | 860 | |
wolfSSL | 0:d92f9d21154c | 861 | WOLFSSL_API WOLFSSL_X509* |
wolfSSL | 0:d92f9d21154c | 862 | wolfSSL_X509_d2i(WOLFSSL_X509** x509, const unsigned char* in, int len); |
wolfSSL | 0:d92f9d21154c | 863 | #ifndef NO_FILESYSTEM |
wolfSSL | 0:d92f9d21154c | 864 | #ifndef NO_STDIO_FILESYSTEM |
wolfSSL | 0:d92f9d21154c | 865 | WOLFSSL_API WOLFSSL_X509* |
wolfSSL | 0:d92f9d21154c | 866 | wolfSSL_X509_d2i_fp(WOLFSSL_X509** x509, FILE* file); |
wolfSSL | 0:d92f9d21154c | 867 | #endif |
wolfSSL | 0:d92f9d21154c | 868 | WOLFSSL_API WOLFSSL_X509* |
wolfSSL | 0:d92f9d21154c | 869 | wolfSSL_X509_load_certificate_file(const char* fname, int format); |
wolfSSL | 0:d92f9d21154c | 870 | #endif |
wolfSSL | 0:d92f9d21154c | 871 | |
wolfSSL | 0:d92f9d21154c | 872 | #ifdef WOLFSSL_SEP |
wolfSSL | 0:d92f9d21154c | 873 | WOLFSSL_API unsigned char* |
wolfSSL | 0:d92f9d21154c | 874 | wolfSSL_X509_get_device_type(WOLFSSL_X509*, unsigned char*, int*); |
wolfSSL | 0:d92f9d21154c | 875 | WOLFSSL_API unsigned char* |
wolfSSL | 0:d92f9d21154c | 876 | wolfSSL_X509_get_hw_type(WOLFSSL_X509*, unsigned char*, int*); |
wolfSSL | 0:d92f9d21154c | 877 | WOLFSSL_API unsigned char* |
wolfSSL | 0:d92f9d21154c | 878 | wolfSSL_X509_get_hw_serial_number(WOLFSSL_X509*, unsigned char*, int*); |
wolfSSL | 0:d92f9d21154c | 879 | #endif |
wolfSSL | 0:d92f9d21154c | 880 | |
wolfSSL | 0:d92f9d21154c | 881 | /* connect enough to get peer cert */ |
wolfSSL | 0:d92f9d21154c | 882 | WOLFSSL_API int wolfSSL_connect_cert(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 883 | |
wolfSSL | 0:d92f9d21154c | 884 | #ifndef NO_DH |
wolfSSL | 0:d92f9d21154c | 885 | /* server Diffie-Hellman parameters */ |
wolfSSL | 0:d92f9d21154c | 886 | WOLFSSL_API int wolfSSL_SetTmpDH(WOLFSSL*, const unsigned char* p, int pSz, |
wolfSSL | 0:d92f9d21154c | 887 | const unsigned char* g, int gSz); |
wolfSSL | 0:d92f9d21154c | 888 | WOLFSSL_API int wolfSSL_SetTmpDH_buffer(WOLFSSL*, const unsigned char* b, long sz, |
wolfSSL | 0:d92f9d21154c | 889 | int format); |
wolfSSL | 0:d92f9d21154c | 890 | #ifndef NO_FILESYSTEM |
wolfSSL | 0:d92f9d21154c | 891 | WOLFSSL_API int wolfSSL_SetTmpDH_file(WOLFSSL*, const char* f, int format); |
wolfSSL | 0:d92f9d21154c | 892 | #endif |
wolfSSL | 0:d92f9d21154c | 893 | |
wolfSSL | 0:d92f9d21154c | 894 | /* server ctx Diffie-Hellman parameters */ |
wolfSSL | 0:d92f9d21154c | 895 | WOLFSSL_API int wolfSSL_CTX_SetTmpDH(WOLFSSL_CTX*, const unsigned char* p, |
wolfSSL | 0:d92f9d21154c | 896 | int pSz, const unsigned char* g, int gSz); |
wolfSSL | 0:d92f9d21154c | 897 | WOLFSSL_API int wolfSSL_CTX_SetTmpDH_buffer(WOLFSSL_CTX*, const unsigned char* b, |
wolfSSL | 0:d92f9d21154c | 898 | long sz, int format); |
wolfSSL | 0:d92f9d21154c | 899 | |
wolfSSL | 0:d92f9d21154c | 900 | #ifndef NO_FILESYSTEM |
wolfSSL | 0:d92f9d21154c | 901 | WOLFSSL_API int wolfSSL_CTX_SetTmpDH_file(WOLFSSL_CTX*, const char* f, |
wolfSSL | 0:d92f9d21154c | 902 | int format); |
wolfSSL | 0:d92f9d21154c | 903 | #endif |
wolfSSL | 0:d92f9d21154c | 904 | |
wolfSSL | 0:d92f9d21154c | 905 | WOLFSSL_API int wolfSSL_CTX_SetMinDhKey_Sz(WOLFSSL_CTX*, unsigned short); |
wolfSSL | 0:d92f9d21154c | 906 | WOLFSSL_API int wolfSSL_SetMinDhKey_Sz(WOLFSSL*, unsigned short); |
wolfSSL | 0:d92f9d21154c | 907 | WOLFSSL_API int wolfSSL_GetDhKey_Sz(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 908 | #endif /* NO_DH */ |
wolfSSL | 0:d92f9d21154c | 909 | |
wolfSSL | 0:d92f9d21154c | 910 | WOLFSSL_API int wolfSSL_SetTmpEC_DHE_Sz(WOLFSSL*, unsigned short); |
wolfSSL | 0:d92f9d21154c | 911 | WOLFSSL_API int wolfSSL_CTX_SetTmpEC_DHE_Sz(WOLFSSL_CTX*, unsigned short); |
wolfSSL | 0:d92f9d21154c | 912 | |
wolfSSL | 0:d92f9d21154c | 913 | /* keyblock size in bytes or -1 */ |
wolfSSL | 0:d92f9d21154c | 914 | /* need to call wolfSSL_KeepArrays before handshake to save keys */ |
wolfSSL | 0:d92f9d21154c | 915 | WOLFSSL_API int wolfSSL_get_keyblock_size(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 916 | WOLFSSL_API int wolfSSL_get_keys(WOLFSSL*,unsigned char** ms, unsigned int* msLen, |
wolfSSL | 0:d92f9d21154c | 917 | unsigned char** sr, unsigned int* srLen, |
wolfSSL | 0:d92f9d21154c | 918 | unsigned char** cr, unsigned int* crLen); |
wolfSSL | 0:d92f9d21154c | 919 | |
wolfSSL | 0:d92f9d21154c | 920 | /* Computes EAP-TLS and EAP-TTLS keying material from the master_secret. */ |
wolfSSL | 0:d92f9d21154c | 921 | WOLFSSL_API int wolfSSL_make_eap_keys(WOLFSSL*, void* key, unsigned int len, |
wolfSSL | 0:d92f9d21154c | 922 | const char* label); |
wolfSSL | 0:d92f9d21154c | 923 | |
wolfSSL | 0:d92f9d21154c | 924 | |
wolfSSL | 0:d92f9d21154c | 925 | #ifndef _WIN32 |
wolfSSL | 0:d92f9d21154c | 926 | #ifndef NO_WRITEV |
wolfSSL | 0:d92f9d21154c | 927 | #ifdef __PPU |
wolfSSL | 0:d92f9d21154c | 928 | #include <sys/types.h> |
wolfSSL | 0:d92f9d21154c | 929 | #include <sys/socket.h> |
wolfSSL | 0:d92f9d21154c | 930 | #elif !defined(WOLFSSL_MDK_ARM) && !defined(WOLFSSL_IAR_ARM) && !defined(WOLFSSL_PICOTCP) |
wolfSSL | 0:d92f9d21154c | 931 | #include <sys/uio.h> |
wolfSSL | 0:d92f9d21154c | 932 | #endif |
wolfSSL | 0:d92f9d21154c | 933 | /* allow writev style writing */ |
wolfSSL | 0:d92f9d21154c | 934 | WOLFSSL_API int wolfSSL_writev(WOLFSSL* ssl, const struct iovec* iov, |
wolfSSL | 0:d92f9d21154c | 935 | int iovcnt); |
wolfSSL | 0:d92f9d21154c | 936 | #endif |
wolfSSL | 0:d92f9d21154c | 937 | #endif |
wolfSSL | 0:d92f9d21154c | 938 | |
wolfSSL | 0:d92f9d21154c | 939 | |
wolfSSL | 0:d92f9d21154c | 940 | #ifndef NO_CERTS |
wolfSSL | 0:d92f9d21154c | 941 | /* SSL_CTX versions */ |
wolfSSL | 0:d92f9d21154c | 942 | WOLFSSL_API int wolfSSL_CTX_UnloadCAs(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 943 | WOLFSSL_API int wolfSSL_CTX_load_verify_buffer(WOLFSSL_CTX*, |
wolfSSL | 0:d92f9d21154c | 944 | const unsigned char*, long, int); |
wolfSSL | 0:d92f9d21154c | 945 | WOLFSSL_API int wolfSSL_CTX_use_certificate_buffer(WOLFSSL_CTX*, |
wolfSSL | 0:d92f9d21154c | 946 | const unsigned char*, long, int); |
wolfSSL | 0:d92f9d21154c | 947 | WOLFSSL_API int wolfSSL_CTX_use_PrivateKey_buffer(WOLFSSL_CTX*, |
wolfSSL | 0:d92f9d21154c | 948 | const unsigned char*, long, int); |
wolfSSL | 0:d92f9d21154c | 949 | WOLFSSL_API int wolfSSL_CTX_use_certificate_chain_buffer(WOLFSSL_CTX*, |
wolfSSL | 0:d92f9d21154c | 950 | const unsigned char*, long); |
wolfSSL | 0:d92f9d21154c | 951 | |
wolfSSL | 0:d92f9d21154c | 952 | /* SSL versions */ |
wolfSSL | 0:d92f9d21154c | 953 | WOLFSSL_API int wolfSSL_use_certificate_buffer(WOLFSSL*, const unsigned char*, |
wolfSSL | 0:d92f9d21154c | 954 | long, int); |
wolfSSL | 0:d92f9d21154c | 955 | WOLFSSL_API int wolfSSL_use_PrivateKey_buffer(WOLFSSL*, const unsigned char*, |
wolfSSL | 0:d92f9d21154c | 956 | long, int); |
wolfSSL | 0:d92f9d21154c | 957 | WOLFSSL_API int wolfSSL_use_certificate_chain_buffer(WOLFSSL*, |
wolfSSL | 0:d92f9d21154c | 958 | const unsigned char*, long); |
wolfSSL | 0:d92f9d21154c | 959 | WOLFSSL_API int wolfSSL_UnloadCertsKeys(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 960 | #endif |
wolfSSL | 0:d92f9d21154c | 961 | |
wolfSSL | 0:d92f9d21154c | 962 | WOLFSSL_API int wolfSSL_CTX_set_group_messages(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 963 | WOLFSSL_API int wolfSSL_set_group_messages(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 964 | |
wolfSSL | 0:d92f9d21154c | 965 | /* I/O callbacks */ |
wolfSSL | 0:d92f9d21154c | 966 | typedef int (*CallbackIORecv)(WOLFSSL *ssl, char *buf, int sz, void *ctx); |
wolfSSL | 0:d92f9d21154c | 967 | typedef int (*CallbackIOSend)(WOLFSSL *ssl, char *buf, int sz, void *ctx); |
wolfSSL | 0:d92f9d21154c | 968 | |
wolfSSL | 0:d92f9d21154c | 969 | #ifdef HAVE_FUZZER |
wolfSSL | 0:d92f9d21154c | 970 | enum fuzzer_type { |
wolfSSL | 0:d92f9d21154c | 971 | FUZZ_HMAC = 0, |
wolfSSL | 0:d92f9d21154c | 972 | FUZZ_ENCRYPT = 1, |
wolfSSL | 0:d92f9d21154c | 973 | FUZZ_SIGNATURE = 2, |
wolfSSL | 0:d92f9d21154c | 974 | FUZZ_HASH = 3, |
wolfSSL | 0:d92f9d21154c | 975 | FUZZ_HEAD = 4 |
wolfSSL | 0:d92f9d21154c | 976 | }; |
wolfSSL | 0:d92f9d21154c | 977 | |
wolfSSL | 0:d92f9d21154c | 978 | typedef int (*CallbackFuzzer)(WOLFSSL* ssl, const unsigned char* buf, int sz, |
wolfSSL | 0:d92f9d21154c | 979 | int type, void* fuzzCtx); |
wolfSSL | 0:d92f9d21154c | 980 | |
wolfSSL | 0:d92f9d21154c | 981 | WOLFSSL_API void wolfSSL_SetFuzzerCb(WOLFSSL* ssl, CallbackFuzzer cbf, void* fCtx); |
wolfSSL | 0:d92f9d21154c | 982 | #endif |
wolfSSL | 0:d92f9d21154c | 983 | |
wolfSSL | 0:d92f9d21154c | 984 | WOLFSSL_API void wolfSSL_SetIORecv(WOLFSSL_CTX*, CallbackIORecv); |
wolfSSL | 0:d92f9d21154c | 985 | WOLFSSL_API void wolfSSL_SetIOSend(WOLFSSL_CTX*, CallbackIOSend); |
wolfSSL | 0:d92f9d21154c | 986 | |
wolfSSL | 0:d92f9d21154c | 987 | WOLFSSL_API void wolfSSL_SetIOReadCtx( WOLFSSL* ssl, void *ctx); |
wolfSSL | 0:d92f9d21154c | 988 | WOLFSSL_API void wolfSSL_SetIOWriteCtx(WOLFSSL* ssl, void *ctx); |
wolfSSL | 0:d92f9d21154c | 989 | |
wolfSSL | 0:d92f9d21154c | 990 | WOLFSSL_API void* wolfSSL_GetIOReadCtx( WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 991 | WOLFSSL_API void* wolfSSL_GetIOWriteCtx(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 992 | |
wolfSSL | 0:d92f9d21154c | 993 | WOLFSSL_API void wolfSSL_SetIOReadFlags( WOLFSSL* ssl, int flags); |
wolfSSL | 0:d92f9d21154c | 994 | WOLFSSL_API void wolfSSL_SetIOWriteFlags(WOLFSSL* ssl, int flags); |
wolfSSL | 0:d92f9d21154c | 995 | |
wolfSSL | 0:d92f9d21154c | 996 | |
wolfSSL | 0:d92f9d21154c | 997 | #ifndef WOLFSSL_USER_IO |
wolfSSL | 0:d92f9d21154c | 998 | /* default IO callbacks */ |
wolfSSL | 0:d92f9d21154c | 999 | WOLFSSL_API int EmbedReceive(WOLFSSL* ssl, char* buf, int sz, void* ctx); |
wolfSSL | 0:d92f9d21154c | 1000 | WOLFSSL_API int EmbedSend(WOLFSSL* ssl, char* buf, int sz, void* ctx); |
wolfSSL | 0:d92f9d21154c | 1001 | |
wolfSSL | 0:d92f9d21154c | 1002 | #ifdef HAVE_OCSP |
wolfSSL | 0:d92f9d21154c | 1003 | WOLFSSL_API int EmbedOcspLookup(void*, const char*, int, unsigned char*, |
wolfSSL | 0:d92f9d21154c | 1004 | int, unsigned char**); |
wolfSSL | 0:d92f9d21154c | 1005 | WOLFSSL_API void EmbedOcspRespFree(void*, unsigned char*); |
wolfSSL | 0:d92f9d21154c | 1006 | #endif |
wolfSSL | 0:d92f9d21154c | 1007 | |
wolfSSL | 0:d92f9d21154c | 1008 | #ifdef WOLFSSL_DTLS |
wolfSSL | 0:d92f9d21154c | 1009 | WOLFSSL_API int EmbedReceiveFrom(WOLFSSL* ssl, char* buf, int sz, void*); |
wolfSSL | 0:d92f9d21154c | 1010 | WOLFSSL_API int EmbedSendTo(WOLFSSL* ssl, char* buf, int sz, void* ctx); |
wolfSSL | 0:d92f9d21154c | 1011 | WOLFSSL_API int EmbedGenerateCookie(WOLFSSL* ssl, unsigned char* buf, |
wolfSSL | 0:d92f9d21154c | 1012 | int sz, void*); |
wolfSSL | 0:d92f9d21154c | 1013 | #endif /* WOLFSSL_DTLS */ |
wolfSSL | 0:d92f9d21154c | 1014 | #endif /* WOLFSSL_USER_IO */ |
wolfSSL | 0:d92f9d21154c | 1015 | |
wolfSSL | 0:d92f9d21154c | 1016 | |
wolfSSL | 0:d92f9d21154c | 1017 | #ifdef HAVE_NETX |
wolfSSL | 0:d92f9d21154c | 1018 | WOLFSSL_API void wolfSSL_SetIO_NetX(WOLFSSL* ssl, NX_TCP_SOCKET* nxsocket, |
wolfSSL | 0:d92f9d21154c | 1019 | ULONG waitoption); |
wolfSSL | 0:d92f9d21154c | 1020 | #endif |
wolfSSL | 0:d92f9d21154c | 1021 | |
wolfSSL | 0:d92f9d21154c | 1022 | typedef int (*CallbackGenCookie)(WOLFSSL* ssl, unsigned char* buf, int sz, |
wolfSSL | 0:d92f9d21154c | 1023 | void* ctx); |
wolfSSL | 0:d92f9d21154c | 1024 | WOLFSSL_API void wolfSSL_CTX_SetGenCookie(WOLFSSL_CTX*, CallbackGenCookie); |
wolfSSL | 0:d92f9d21154c | 1025 | WOLFSSL_API void wolfSSL_SetCookieCtx(WOLFSSL* ssl, void *ctx); |
wolfSSL | 0:d92f9d21154c | 1026 | WOLFSSL_API void* wolfSSL_GetCookieCtx(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 1027 | |
wolfSSL | 0:d92f9d21154c | 1028 | |
wolfSSL | 0:d92f9d21154c | 1029 | /* I/O Callback default errors */ |
wolfSSL | 0:d92f9d21154c | 1030 | enum IOerrors { |
wolfSSL | 0:d92f9d21154c | 1031 | WOLFSSL_CBIO_ERR_GENERAL = -1, /* general unexpected err */ |
wolfSSL | 0:d92f9d21154c | 1032 | WOLFSSL_CBIO_ERR_WANT_READ = -2, /* need to call read again */ |
wolfSSL | 0:d92f9d21154c | 1033 | WOLFSSL_CBIO_ERR_WANT_WRITE = -2, /* need to call write again */ |
wolfSSL | 0:d92f9d21154c | 1034 | WOLFSSL_CBIO_ERR_CONN_RST = -3, /* connection reset */ |
wolfSSL | 0:d92f9d21154c | 1035 | WOLFSSL_CBIO_ERR_ISR = -4, /* interrupt */ |
wolfSSL | 0:d92f9d21154c | 1036 | WOLFSSL_CBIO_ERR_CONN_CLOSE = -5, /* connection closed or epipe */ |
wolfSSL | 0:d92f9d21154c | 1037 | WOLFSSL_CBIO_ERR_TIMEOUT = -6 /* socket timeout */ |
wolfSSL | 0:d92f9d21154c | 1038 | }; |
wolfSSL | 0:d92f9d21154c | 1039 | |
wolfSSL | 0:d92f9d21154c | 1040 | |
wolfSSL | 0:d92f9d21154c | 1041 | /* CA cache callbacks */ |
wolfSSL | 0:d92f9d21154c | 1042 | enum { |
wolfSSL | 0:d92f9d21154c | 1043 | WOLFSSL_SSLV3 = 0, |
wolfSSL | 0:d92f9d21154c | 1044 | WOLFSSL_TLSV1 = 1, |
wolfSSL | 0:d92f9d21154c | 1045 | WOLFSSL_TLSV1_1 = 2, |
wolfSSL | 0:d92f9d21154c | 1046 | WOLFSSL_TLSV1_2 = 3, |
wolfSSL | 0:d92f9d21154c | 1047 | WOLFSSL_USER_CA = 1, /* user added as trusted */ |
wolfSSL | 0:d92f9d21154c | 1048 | WOLFSSL_CHAIN_CA = 2 /* added to cache from trusted chain */ |
wolfSSL | 0:d92f9d21154c | 1049 | }; |
wolfSSL | 0:d92f9d21154c | 1050 | |
wolfSSL | 0:d92f9d21154c | 1051 | WOLFSSL_API int wolfSSL_CTX_SetMinVersion(WOLFSSL_CTX* ctx, int version); |
wolfSSL | 0:d92f9d21154c | 1052 | WOLFSSL_API int wolfSSL_SetMinVersion(WOLFSSL* ssl, int version); |
wolfSSL | 0:d92f9d21154c | 1053 | WOLFSSL_API int wolfSSL_GetObjectSize(void); /* object size based on build */ |
wolfSSL | 0:d92f9d21154c | 1054 | WOLFSSL_API int wolfSSL_SetVersion(WOLFSSL* ssl, int version); |
wolfSSL | 0:d92f9d21154c | 1055 | WOLFSSL_API int wolfSSL_KeyPemToDer(const unsigned char*, int sz, unsigned char*, |
wolfSSL | 0:d92f9d21154c | 1056 | int, const char*); |
wolfSSL | 0:d92f9d21154c | 1057 | WOLFSSL_API int wolfSSL_CertPemToDer(const unsigned char*, int sz, unsigned char*, |
wolfSSL | 0:d92f9d21154c | 1058 | int, int); |
wolfSSL | 0:d92f9d21154c | 1059 | |
wolfSSL | 0:d92f9d21154c | 1060 | typedef void (*CallbackCACache)(unsigned char* der, int sz, int type); |
wolfSSL | 0:d92f9d21154c | 1061 | typedef void (*CbMissingCRL)(const char* url); |
wolfSSL | 0:d92f9d21154c | 1062 | typedef int (*CbOCSPIO)(void*, const char*, int, |
wolfSSL | 0:d92f9d21154c | 1063 | unsigned char*, int, unsigned char**); |
wolfSSL | 0:d92f9d21154c | 1064 | typedef void (*CbOCSPRespFree)(void*,unsigned char*); |
wolfSSL | 0:d92f9d21154c | 1065 | |
wolfSSL | 0:d92f9d21154c | 1066 | /* User Atomic Record Layer CallBacks */ |
wolfSSL | 0:d92f9d21154c | 1067 | typedef int (*CallbackMacEncrypt)(WOLFSSL* ssl, unsigned char* macOut, |
wolfSSL | 0:d92f9d21154c | 1068 | const unsigned char* macIn, unsigned int macInSz, int macContent, |
wolfSSL | 0:d92f9d21154c | 1069 | int macVerify, unsigned char* encOut, const unsigned char* encIn, |
wolfSSL | 0:d92f9d21154c | 1070 | unsigned int encSz, void* ctx); |
wolfSSL | 0:d92f9d21154c | 1071 | WOLFSSL_API void wolfSSL_CTX_SetMacEncryptCb(WOLFSSL_CTX*, CallbackMacEncrypt); |
wolfSSL | 0:d92f9d21154c | 1072 | WOLFSSL_API void wolfSSL_SetMacEncryptCtx(WOLFSSL* ssl, void *ctx); |
wolfSSL | 0:d92f9d21154c | 1073 | WOLFSSL_API void* wolfSSL_GetMacEncryptCtx(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 1074 | |
wolfSSL | 0:d92f9d21154c | 1075 | typedef int (*CallbackDecryptVerify)(WOLFSSL* ssl, |
wolfSSL | 0:d92f9d21154c | 1076 | unsigned char* decOut, const unsigned char* decIn, |
wolfSSL | 0:d92f9d21154c | 1077 | unsigned int decSz, int content, int verify, unsigned int* padSz, |
wolfSSL | 0:d92f9d21154c | 1078 | void* ctx); |
wolfSSL | 0:d92f9d21154c | 1079 | WOLFSSL_API void wolfSSL_CTX_SetDecryptVerifyCb(WOLFSSL_CTX*, |
wolfSSL | 0:d92f9d21154c | 1080 | CallbackDecryptVerify); |
wolfSSL | 0:d92f9d21154c | 1081 | WOLFSSL_API void wolfSSL_SetDecryptVerifyCtx(WOLFSSL* ssl, void *ctx); |
wolfSSL | 0:d92f9d21154c | 1082 | WOLFSSL_API void* wolfSSL_GetDecryptVerifyCtx(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 1083 | |
wolfSSL | 0:d92f9d21154c | 1084 | WOLFSSL_API const unsigned char* wolfSSL_GetMacSecret(WOLFSSL*, int); |
wolfSSL | 0:d92f9d21154c | 1085 | WOLFSSL_API const unsigned char* wolfSSL_GetClientWriteKey(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 1086 | WOLFSSL_API const unsigned char* wolfSSL_GetClientWriteIV(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 1087 | WOLFSSL_API const unsigned char* wolfSSL_GetServerWriteKey(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 1088 | WOLFSSL_API const unsigned char* wolfSSL_GetServerWriteIV(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 1089 | WOLFSSL_API int wolfSSL_GetKeySize(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 1090 | WOLFSSL_API int wolfSSL_GetIVSize(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 1091 | WOLFSSL_API int wolfSSL_GetSide(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 1092 | WOLFSSL_API int wolfSSL_IsTLSv1_1(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 1093 | WOLFSSL_API int wolfSSL_GetBulkCipher(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 1094 | WOLFSSL_API int wolfSSL_GetCipherBlockSize(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 1095 | WOLFSSL_API int wolfSSL_GetAeadMacSize(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 1096 | WOLFSSL_API int wolfSSL_GetHmacSize(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 1097 | WOLFSSL_API int wolfSSL_GetHmacType(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 1098 | WOLFSSL_API int wolfSSL_GetCipherType(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 1099 | WOLFSSL_API int wolfSSL_SetTlsHmacInner(WOLFSSL*, unsigned char*, |
wolfSSL | 0:d92f9d21154c | 1100 | unsigned int, int, int); |
wolfSSL | 0:d92f9d21154c | 1101 | |
wolfSSL | 0:d92f9d21154c | 1102 | /* Atomic User Needs */ |
wolfSSL | 0:d92f9d21154c | 1103 | enum { |
wolfSSL | 0:d92f9d21154c | 1104 | WOLFSSL_SERVER_END = 0, |
wolfSSL | 0:d92f9d21154c | 1105 | WOLFSSL_CLIENT_END = 1, |
wolfSSL | 0:d92f9d21154c | 1106 | WOLFSSL_BLOCK_TYPE = 2, |
wolfSSL | 0:d92f9d21154c | 1107 | WOLFSSL_STREAM_TYPE = 3, |
wolfSSL | 0:d92f9d21154c | 1108 | WOLFSSL_AEAD_TYPE = 4, |
wolfSSL | 0:d92f9d21154c | 1109 | WOLFSSL_TLS_HMAC_INNER_SZ = 13 /* SEQ_SZ + ENUM + VERSION_SZ + LEN_SZ */ |
wolfSSL | 0:d92f9d21154c | 1110 | }; |
wolfSSL | 0:d92f9d21154c | 1111 | |
wolfSSL | 0:d92f9d21154c | 1112 | /* for GetBulkCipher and internal use */ |
wolfSSL | 0:d92f9d21154c | 1113 | enum BulkCipherAlgorithm { |
wolfSSL | 0:d92f9d21154c | 1114 | wolfssl_cipher_null, |
wolfSSL | 0:d92f9d21154c | 1115 | wolfssl_rc4, |
wolfSSL | 0:d92f9d21154c | 1116 | wolfssl_rc2, |
wolfSSL | 0:d92f9d21154c | 1117 | wolfssl_des, |
wolfSSL | 0:d92f9d21154c | 1118 | wolfssl_triple_des, /* leading 3 (3des) not valid identifier */ |
wolfSSL | 0:d92f9d21154c | 1119 | wolfssl_des40, |
wolfSSL | 0:d92f9d21154c | 1120 | wolfssl_idea, |
wolfSSL | 0:d92f9d21154c | 1121 | wolfssl_aes, |
wolfSSL | 0:d92f9d21154c | 1122 | wolfssl_aes_gcm, |
wolfSSL | 0:d92f9d21154c | 1123 | wolfssl_aes_ccm, |
wolfSSL | 0:d92f9d21154c | 1124 | wolfssl_chacha, |
wolfSSL | 0:d92f9d21154c | 1125 | wolfssl_camellia, |
wolfSSL | 0:d92f9d21154c | 1126 | wolfssl_hc128, /* wolfSSL extensions */ |
wolfSSL | 0:d92f9d21154c | 1127 | wolfssl_rabbit |
wolfSSL | 0:d92f9d21154c | 1128 | }; |
wolfSSL | 0:d92f9d21154c | 1129 | |
wolfSSL | 0:d92f9d21154c | 1130 | |
wolfSSL | 0:d92f9d21154c | 1131 | /* for KDF TLS 1.2 mac types */ |
wolfSSL | 0:d92f9d21154c | 1132 | enum KDF_MacAlgorithm { |
wolfSSL | 0:d92f9d21154c | 1133 | wolfssl_sha256 = 4, /* needs to match internal MACAlgorithm */ |
wolfSSL | 0:d92f9d21154c | 1134 | wolfssl_sha384, |
wolfSSL | 0:d92f9d21154c | 1135 | wolfssl_sha512 |
wolfSSL | 0:d92f9d21154c | 1136 | }; |
wolfSSL | 0:d92f9d21154c | 1137 | |
wolfSSL | 0:d92f9d21154c | 1138 | |
wolfSSL | 0:d92f9d21154c | 1139 | /* Public Key Callback support */ |
wolfSSL | 0:d92f9d21154c | 1140 | typedef int (*CallbackEccSign)(WOLFSSL* ssl, |
wolfSSL | 0:d92f9d21154c | 1141 | const unsigned char* in, unsigned int inSz, |
wolfSSL | 0:d92f9d21154c | 1142 | unsigned char* out, unsigned int* outSz, |
wolfSSL | 0:d92f9d21154c | 1143 | const unsigned char* keyDer, unsigned int keySz, |
wolfSSL | 0:d92f9d21154c | 1144 | void* ctx); |
wolfSSL | 0:d92f9d21154c | 1145 | WOLFSSL_API void wolfSSL_CTX_SetEccSignCb(WOLFSSL_CTX*, CallbackEccSign); |
wolfSSL | 0:d92f9d21154c | 1146 | WOLFSSL_API void wolfSSL_SetEccSignCtx(WOLFSSL* ssl, void *ctx); |
wolfSSL | 0:d92f9d21154c | 1147 | WOLFSSL_API void* wolfSSL_GetEccSignCtx(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 1148 | |
wolfSSL | 0:d92f9d21154c | 1149 | typedef int (*CallbackEccVerify)(WOLFSSL* ssl, |
wolfSSL | 0:d92f9d21154c | 1150 | const unsigned char* sig, unsigned int sigSz, |
wolfSSL | 0:d92f9d21154c | 1151 | const unsigned char* hash, unsigned int hashSz, |
wolfSSL | 0:d92f9d21154c | 1152 | const unsigned char* keyDer, unsigned int keySz, |
wolfSSL | 0:d92f9d21154c | 1153 | int* result, void* ctx); |
wolfSSL | 0:d92f9d21154c | 1154 | WOLFSSL_API void wolfSSL_CTX_SetEccVerifyCb(WOLFSSL_CTX*, CallbackEccVerify); |
wolfSSL | 0:d92f9d21154c | 1155 | WOLFSSL_API void wolfSSL_SetEccVerifyCtx(WOLFSSL* ssl, void *ctx); |
wolfSSL | 0:d92f9d21154c | 1156 | WOLFSSL_API void* wolfSSL_GetEccVerifyCtx(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 1157 | |
wolfSSL | 0:d92f9d21154c | 1158 | typedef int (*CallbackRsaSign)(WOLFSSL* ssl, |
wolfSSL | 0:d92f9d21154c | 1159 | const unsigned char* in, unsigned int inSz, |
wolfSSL | 0:d92f9d21154c | 1160 | unsigned char* out, unsigned int* outSz, |
wolfSSL | 0:d92f9d21154c | 1161 | const unsigned char* keyDer, unsigned int keySz, |
wolfSSL | 0:d92f9d21154c | 1162 | void* ctx); |
wolfSSL | 0:d92f9d21154c | 1163 | WOLFSSL_API void wolfSSL_CTX_SetRsaSignCb(WOLFSSL_CTX*, CallbackRsaSign); |
wolfSSL | 0:d92f9d21154c | 1164 | WOLFSSL_API void wolfSSL_SetRsaSignCtx(WOLFSSL* ssl, void *ctx); |
wolfSSL | 0:d92f9d21154c | 1165 | WOLFSSL_API void* wolfSSL_GetRsaSignCtx(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 1166 | |
wolfSSL | 0:d92f9d21154c | 1167 | typedef int (*CallbackRsaVerify)(WOLFSSL* ssl, |
wolfSSL | 0:d92f9d21154c | 1168 | unsigned char* sig, unsigned int sigSz, |
wolfSSL | 0:d92f9d21154c | 1169 | unsigned char** out, |
wolfSSL | 0:d92f9d21154c | 1170 | const unsigned char* keyDer, unsigned int keySz, |
wolfSSL | 0:d92f9d21154c | 1171 | void* ctx); |
wolfSSL | 0:d92f9d21154c | 1172 | WOLFSSL_API void wolfSSL_CTX_SetRsaVerifyCb(WOLFSSL_CTX*, CallbackRsaVerify); |
wolfSSL | 0:d92f9d21154c | 1173 | WOLFSSL_API void wolfSSL_SetRsaVerifyCtx(WOLFSSL* ssl, void *ctx); |
wolfSSL | 0:d92f9d21154c | 1174 | WOLFSSL_API void* wolfSSL_GetRsaVerifyCtx(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 1175 | |
wolfSSL | 0:d92f9d21154c | 1176 | /* RSA Public Encrypt cb */ |
wolfSSL | 0:d92f9d21154c | 1177 | typedef int (*CallbackRsaEnc)(WOLFSSL* ssl, |
wolfSSL | 0:d92f9d21154c | 1178 | const unsigned char* in, unsigned int inSz, |
wolfSSL | 0:d92f9d21154c | 1179 | unsigned char* out, unsigned int* outSz, |
wolfSSL | 0:d92f9d21154c | 1180 | const unsigned char* keyDer, unsigned int keySz, |
wolfSSL | 0:d92f9d21154c | 1181 | void* ctx); |
wolfSSL | 0:d92f9d21154c | 1182 | WOLFSSL_API void wolfSSL_CTX_SetRsaEncCb(WOLFSSL_CTX*, CallbackRsaEnc); |
wolfSSL | 0:d92f9d21154c | 1183 | WOLFSSL_API void wolfSSL_SetRsaEncCtx(WOLFSSL* ssl, void *ctx); |
wolfSSL | 0:d92f9d21154c | 1184 | WOLFSSL_API void* wolfSSL_GetRsaEncCtx(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 1185 | |
wolfSSL | 0:d92f9d21154c | 1186 | /* RSA Private Decrypt cb */ |
wolfSSL | 0:d92f9d21154c | 1187 | typedef int (*CallbackRsaDec)(WOLFSSL* ssl, |
wolfSSL | 0:d92f9d21154c | 1188 | unsigned char* in, unsigned int inSz, |
wolfSSL | 0:d92f9d21154c | 1189 | unsigned char** out, |
wolfSSL | 0:d92f9d21154c | 1190 | const unsigned char* keyDer, unsigned int keySz, |
wolfSSL | 0:d92f9d21154c | 1191 | void* ctx); |
wolfSSL | 0:d92f9d21154c | 1192 | WOLFSSL_API void wolfSSL_CTX_SetRsaDecCb(WOLFSSL_CTX*, CallbackRsaDec); |
wolfSSL | 0:d92f9d21154c | 1193 | WOLFSSL_API void wolfSSL_SetRsaDecCtx(WOLFSSL* ssl, void *ctx); |
wolfSSL | 0:d92f9d21154c | 1194 | WOLFSSL_API void* wolfSSL_GetRsaDecCtx(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 1195 | |
wolfSSL | 0:d92f9d21154c | 1196 | |
wolfSSL | 0:d92f9d21154c | 1197 | #ifndef NO_CERTS |
wolfSSL | 0:d92f9d21154c | 1198 | WOLFSSL_API void wolfSSL_CTX_SetCACb(WOLFSSL_CTX*, CallbackCACache); |
wolfSSL | 0:d92f9d21154c | 1199 | |
wolfSSL | 0:d92f9d21154c | 1200 | WOLFSSL_API WOLFSSL_CERT_MANAGER* wolfSSL_CertManagerNew(void); |
wolfSSL | 0:d92f9d21154c | 1201 | WOLFSSL_API void wolfSSL_CertManagerFree(WOLFSSL_CERT_MANAGER*); |
wolfSSL | 0:d92f9d21154c | 1202 | |
wolfSSL | 0:d92f9d21154c | 1203 | WOLFSSL_API int wolfSSL_CertManagerLoadCA(WOLFSSL_CERT_MANAGER*, const char* f, |
wolfSSL | 0:d92f9d21154c | 1204 | const char* d); |
wolfSSL | 0:d92f9d21154c | 1205 | WOLFSSL_API int wolfSSL_CertManagerUnloadCAs(WOLFSSL_CERT_MANAGER* cm); |
wolfSSL | 0:d92f9d21154c | 1206 | WOLFSSL_API int wolfSSL_CertManagerVerify(WOLFSSL_CERT_MANAGER*, const char* f, |
wolfSSL | 0:d92f9d21154c | 1207 | int format); |
wolfSSL | 0:d92f9d21154c | 1208 | WOLFSSL_API int wolfSSL_CertManagerVerifyBuffer(WOLFSSL_CERT_MANAGER* cm, |
wolfSSL | 0:d92f9d21154c | 1209 | const unsigned char* buff, long sz, int format); |
wolfSSL | 0:d92f9d21154c | 1210 | WOLFSSL_API int wolfSSL_CertManagerCheckCRL(WOLFSSL_CERT_MANAGER*, |
wolfSSL | 0:d92f9d21154c | 1211 | unsigned char*, int sz); |
wolfSSL | 0:d92f9d21154c | 1212 | WOLFSSL_API int wolfSSL_CertManagerEnableCRL(WOLFSSL_CERT_MANAGER*, |
wolfSSL | 0:d92f9d21154c | 1213 | int options); |
wolfSSL | 0:d92f9d21154c | 1214 | WOLFSSL_API int wolfSSL_CertManagerDisableCRL(WOLFSSL_CERT_MANAGER*); |
wolfSSL | 0:d92f9d21154c | 1215 | WOLFSSL_API int wolfSSL_CertManagerLoadCRL(WOLFSSL_CERT_MANAGER*, const char*, |
wolfSSL | 0:d92f9d21154c | 1216 | int, int); |
wolfSSL | 0:d92f9d21154c | 1217 | WOLFSSL_API int wolfSSL_CertManagerSetCRL_Cb(WOLFSSL_CERT_MANAGER*, |
wolfSSL | 0:d92f9d21154c | 1218 | CbMissingCRL); |
wolfSSL | 0:d92f9d21154c | 1219 | WOLFSSL_API int wolfSSL_CertManagerCheckOCSP(WOLFSSL_CERT_MANAGER*, |
wolfSSL | 0:d92f9d21154c | 1220 | unsigned char*, int sz); |
wolfSSL | 0:d92f9d21154c | 1221 | WOLFSSL_API int wolfSSL_CertManagerEnableOCSP(WOLFSSL_CERT_MANAGER*, |
wolfSSL | 0:d92f9d21154c | 1222 | int options); |
wolfSSL | 0:d92f9d21154c | 1223 | WOLFSSL_API int wolfSSL_CertManagerDisableOCSP(WOLFSSL_CERT_MANAGER*); |
wolfSSL | 0:d92f9d21154c | 1224 | WOLFSSL_API int wolfSSL_CertManagerSetOCSPOverrideURL(WOLFSSL_CERT_MANAGER*, |
wolfSSL | 0:d92f9d21154c | 1225 | const char*); |
wolfSSL | 0:d92f9d21154c | 1226 | WOLFSSL_API int wolfSSL_CertManagerSetOCSP_Cb(WOLFSSL_CERT_MANAGER*, |
wolfSSL | 0:d92f9d21154c | 1227 | CbOCSPIO, CbOCSPRespFree, void*); |
wolfSSL | 0:d92f9d21154c | 1228 | |
wolfSSL | 0:d92f9d21154c | 1229 | WOLFSSL_API int wolfSSL_EnableCRL(WOLFSSL* ssl, int options); |
wolfSSL | 0:d92f9d21154c | 1230 | WOLFSSL_API int wolfSSL_DisableCRL(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 1231 | WOLFSSL_API int wolfSSL_LoadCRL(WOLFSSL*, const char*, int, int); |
wolfSSL | 0:d92f9d21154c | 1232 | WOLFSSL_API int wolfSSL_SetCRL_Cb(WOLFSSL*, CbMissingCRL); |
wolfSSL | 0:d92f9d21154c | 1233 | WOLFSSL_API int wolfSSL_EnableOCSP(WOLFSSL*, int options); |
wolfSSL | 0:d92f9d21154c | 1234 | WOLFSSL_API int wolfSSL_DisableOCSP(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 1235 | WOLFSSL_API int wolfSSL_SetOCSP_OverrideURL(WOLFSSL*, const char*); |
wolfSSL | 0:d92f9d21154c | 1236 | WOLFSSL_API int wolfSSL_SetOCSP_Cb(WOLFSSL*, CbOCSPIO, CbOCSPRespFree, void*); |
wolfSSL | 0:d92f9d21154c | 1237 | |
wolfSSL | 0:d92f9d21154c | 1238 | WOLFSSL_API int wolfSSL_CTX_EnableCRL(WOLFSSL_CTX* ctx, int options); |
wolfSSL | 0:d92f9d21154c | 1239 | WOLFSSL_API int wolfSSL_CTX_DisableCRL(WOLFSSL_CTX* ctx); |
wolfSSL | 0:d92f9d21154c | 1240 | WOLFSSL_API int wolfSSL_CTX_LoadCRL(WOLFSSL_CTX*, const char*, int, int); |
wolfSSL | 0:d92f9d21154c | 1241 | WOLFSSL_API int wolfSSL_CTX_SetCRL_Cb(WOLFSSL_CTX*, CbMissingCRL); |
wolfSSL | 0:d92f9d21154c | 1242 | WOLFSSL_API int wolfSSL_CTX_EnableOCSP(WOLFSSL_CTX*, int options); |
wolfSSL | 0:d92f9d21154c | 1243 | WOLFSSL_API int wolfSSL_CTX_DisableOCSP(WOLFSSL_CTX*); |
wolfSSL | 0:d92f9d21154c | 1244 | WOLFSSL_API int wolfSSL_CTX_SetOCSP_OverrideURL(WOLFSSL_CTX*, const char*); |
wolfSSL | 0:d92f9d21154c | 1245 | WOLFSSL_API int wolfSSL_CTX_SetOCSP_Cb(WOLFSSL_CTX*, |
wolfSSL | 0:d92f9d21154c | 1246 | CbOCSPIO, CbOCSPRespFree, void*); |
wolfSSL | 0:d92f9d21154c | 1247 | #endif /* !NO_CERTS */ |
wolfSSL | 0:d92f9d21154c | 1248 | |
wolfSSL | 0:d92f9d21154c | 1249 | /* end of handshake frees temporary arrays, if user needs for get_keys or |
wolfSSL | 0:d92f9d21154c | 1250 | psk hints, call KeepArrays before handshake and then FreeArrays when done |
wolfSSL | 0:d92f9d21154c | 1251 | if don't want to wait for object free */ |
wolfSSL | 0:d92f9d21154c | 1252 | WOLFSSL_API void wolfSSL_KeepArrays(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 1253 | WOLFSSL_API void wolfSSL_FreeArrays(WOLFSSL*); |
wolfSSL | 0:d92f9d21154c | 1254 | |
wolfSSL | 0:d92f9d21154c | 1255 | |
wolfSSL | 0:d92f9d21154c | 1256 | /* cavium additions */ |
wolfSSL | 0:d92f9d21154c | 1257 | WOLFSSL_API int wolfSSL_UseCavium(WOLFSSL*, int devId); |
wolfSSL | 0:d92f9d21154c | 1258 | WOLFSSL_API int wolfSSL_CTX_UseCavium(WOLFSSL_CTX*, int devId); |
wolfSSL | 0:d92f9d21154c | 1259 | |
wolfSSL | 0:d92f9d21154c | 1260 | /* TLS Extensions */ |
wolfSSL | 0:d92f9d21154c | 1261 | |
wolfSSL | 0:d92f9d21154c | 1262 | /* Server Name Indication */ |
wolfSSL | 0:d92f9d21154c | 1263 | #ifdef HAVE_SNI |
wolfSSL | 0:d92f9d21154c | 1264 | |
wolfSSL | 0:d92f9d21154c | 1265 | /* SNI types */ |
wolfSSL | 0:d92f9d21154c | 1266 | enum { |
wolfSSL | 0:d92f9d21154c | 1267 | WOLFSSL_SNI_HOST_NAME = 0 |
wolfSSL | 0:d92f9d21154c | 1268 | }; |
wolfSSL | 0:d92f9d21154c | 1269 | |
wolfSSL | 0:d92f9d21154c | 1270 | WOLFSSL_API int wolfSSL_UseSNI(WOLFSSL* ssl, unsigned char type, const void* data, |
wolfSSL | 0:d92f9d21154c | 1271 | unsigned short size); |
wolfSSL | 0:d92f9d21154c | 1272 | WOLFSSL_API int wolfSSL_CTX_UseSNI(WOLFSSL_CTX* ctx, unsigned char type, |
wolfSSL | 0:d92f9d21154c | 1273 | const void* data, unsigned short size); |
wolfSSL | 0:d92f9d21154c | 1274 | |
wolfSSL | 0:d92f9d21154c | 1275 | #ifndef NO_WOLFSSL_SERVER |
wolfSSL | 0:d92f9d21154c | 1276 | |
wolfSSL | 0:d92f9d21154c | 1277 | /* SNI options */ |
wolfSSL | 0:d92f9d21154c | 1278 | enum { |
wolfSSL | 0:d92f9d21154c | 1279 | WOLFSSL_SNI_CONTINUE_ON_MISMATCH = 0x01, /* do not abort on mismatch flag */ |
wolfSSL | 0:d92f9d21154c | 1280 | WOLFSSL_SNI_ANSWER_ON_MISMATCH = 0x02 /* fake match on mismatch flag */ |
wolfSSL | 0:d92f9d21154c | 1281 | }; |
wolfSSL | 0:d92f9d21154c | 1282 | |
wolfSSL | 0:d92f9d21154c | 1283 | WOLFSSL_API void wolfSSL_SNI_SetOptions(WOLFSSL* ssl, unsigned char type, |
wolfSSL | 0:d92f9d21154c | 1284 | unsigned char options); |
wolfSSL | 0:d92f9d21154c | 1285 | WOLFSSL_API void wolfSSL_CTX_SNI_SetOptions(WOLFSSL_CTX* ctx, unsigned char type, |
wolfSSL | 0:d92f9d21154c | 1286 | unsigned char options); |
wolfSSL | 0:d92f9d21154c | 1287 | |
wolfSSL | 0:d92f9d21154c | 1288 | /* SNI status */ |
wolfSSL | 0:d92f9d21154c | 1289 | enum { |
wolfSSL | 0:d92f9d21154c | 1290 | WOLFSSL_SNI_NO_MATCH = 0, |
wolfSSL | 0:d92f9d21154c | 1291 | WOLFSSL_SNI_FAKE_MATCH = 1, /* if WOLFSSL_SNI_ANSWER_ON_MISMATCH is enabled */ |
wolfSSL | 0:d92f9d21154c | 1292 | WOLFSSL_SNI_REAL_MATCH = 2 |
wolfSSL | 0:d92f9d21154c | 1293 | }; |
wolfSSL | 0:d92f9d21154c | 1294 | |
wolfSSL | 0:d92f9d21154c | 1295 | WOLFSSL_API unsigned char wolfSSL_SNI_Status(WOLFSSL* ssl, unsigned char type); |
wolfSSL | 0:d92f9d21154c | 1296 | |
wolfSSL | 0:d92f9d21154c | 1297 | WOLFSSL_API unsigned short wolfSSL_SNI_GetRequest(WOLFSSL *ssl, unsigned char type, |
wolfSSL | 0:d92f9d21154c | 1298 | void** data); |
wolfSSL | 0:d92f9d21154c | 1299 | WOLFSSL_API int wolfSSL_SNI_GetFromBuffer( |
wolfSSL | 0:d92f9d21154c | 1300 | const unsigned char* clientHello, unsigned int helloSz, |
wolfSSL | 0:d92f9d21154c | 1301 | unsigned char type, unsigned char* sni, unsigned int* inOutSz); |
wolfSSL | 0:d92f9d21154c | 1302 | |
wolfSSL | 0:d92f9d21154c | 1303 | #endif |
wolfSSL | 0:d92f9d21154c | 1304 | #endif |
wolfSSL | 0:d92f9d21154c | 1305 | |
wolfSSL | 0:d92f9d21154c | 1306 | /* Maximum Fragment Length */ |
wolfSSL | 0:d92f9d21154c | 1307 | #ifdef HAVE_MAX_FRAGMENT |
wolfSSL | 0:d92f9d21154c | 1308 | |
wolfSSL | 0:d92f9d21154c | 1309 | /* Fragment lengths */ |
wolfSSL | 0:d92f9d21154c | 1310 | enum { |
wolfSSL | 0:d92f9d21154c | 1311 | WOLFSSL_MFL_2_9 = 1, /* 512 bytes */ |
wolfSSL | 0:d92f9d21154c | 1312 | WOLFSSL_MFL_2_10 = 2, /* 1024 bytes */ |
wolfSSL | 0:d92f9d21154c | 1313 | WOLFSSL_MFL_2_11 = 3, /* 2048 bytes */ |
wolfSSL | 0:d92f9d21154c | 1314 | WOLFSSL_MFL_2_12 = 4, /* 4096 bytes */ |
wolfSSL | 0:d92f9d21154c | 1315 | WOLFSSL_MFL_2_13 = 5 /* 8192 bytes *//* wolfSSL ONLY!!! */ |
wolfSSL | 0:d92f9d21154c | 1316 | }; |
wolfSSL | 0:d92f9d21154c | 1317 | |
wolfSSL | 0:d92f9d21154c | 1318 | #ifndef NO_WOLFSSL_CLIENT |
wolfSSL | 0:d92f9d21154c | 1319 | |
wolfSSL | 0:d92f9d21154c | 1320 | WOLFSSL_API int wolfSSL_UseMaxFragment(WOLFSSL* ssl, unsigned char mfl); |
wolfSSL | 0:d92f9d21154c | 1321 | WOLFSSL_API int wolfSSL_CTX_UseMaxFragment(WOLFSSL_CTX* ctx, unsigned char mfl); |
wolfSSL | 0:d92f9d21154c | 1322 | |
wolfSSL | 0:d92f9d21154c | 1323 | #endif |
wolfSSL | 0:d92f9d21154c | 1324 | #endif |
wolfSSL | 0:d92f9d21154c | 1325 | |
wolfSSL | 0:d92f9d21154c | 1326 | /* Truncated HMAC */ |
wolfSSL | 0:d92f9d21154c | 1327 | #ifdef HAVE_TRUNCATED_HMAC |
wolfSSL | 0:d92f9d21154c | 1328 | #ifndef NO_WOLFSSL_CLIENT |
wolfSSL | 0:d92f9d21154c | 1329 | |
wolfSSL | 0:d92f9d21154c | 1330 | WOLFSSL_API int wolfSSL_UseTruncatedHMAC(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 1331 | WOLFSSL_API int wolfSSL_CTX_UseTruncatedHMAC(WOLFSSL_CTX* ctx); |
wolfSSL | 0:d92f9d21154c | 1332 | |
wolfSSL | 0:d92f9d21154c | 1333 | #endif |
wolfSSL | 0:d92f9d21154c | 1334 | #endif |
wolfSSL | 0:d92f9d21154c | 1335 | |
wolfSSL | 0:d92f9d21154c | 1336 | /* Elliptic Curves */ |
wolfSSL | 0:d92f9d21154c | 1337 | enum { |
wolfSSL | 0:d92f9d21154c | 1338 | WOLFSSL_ECC_SECP160R1 = 0x10, |
wolfSSL | 0:d92f9d21154c | 1339 | WOLFSSL_ECC_SECP192R1 = 0x13, |
wolfSSL | 0:d92f9d21154c | 1340 | WOLFSSL_ECC_SECP224R1 = 0x15, |
wolfSSL | 0:d92f9d21154c | 1341 | WOLFSSL_ECC_SECP256R1 = 0x17, |
wolfSSL | 0:d92f9d21154c | 1342 | WOLFSSL_ECC_SECP384R1 = 0x18, |
wolfSSL | 0:d92f9d21154c | 1343 | WOLFSSL_ECC_SECP521R1 = 0x19 |
wolfSSL | 0:d92f9d21154c | 1344 | }; |
wolfSSL | 0:d92f9d21154c | 1345 | |
wolfSSL | 0:d92f9d21154c | 1346 | #ifdef HAVE_SUPPORTED_CURVES |
wolfSSL | 0:d92f9d21154c | 1347 | #ifndef NO_WOLFSSL_CLIENT |
wolfSSL | 0:d92f9d21154c | 1348 | |
wolfSSL | 0:d92f9d21154c | 1349 | WOLFSSL_API int wolfSSL_UseSupportedCurve(WOLFSSL* ssl, unsigned short name); |
wolfSSL | 0:d92f9d21154c | 1350 | WOLFSSL_API int wolfSSL_CTX_UseSupportedCurve(WOLFSSL_CTX* ctx, |
wolfSSL | 0:d92f9d21154c | 1351 | unsigned short name); |
wolfSSL | 0:d92f9d21154c | 1352 | |
wolfSSL | 0:d92f9d21154c | 1353 | #endif |
wolfSSL | 0:d92f9d21154c | 1354 | #endif |
wolfSSL | 0:d92f9d21154c | 1355 | |
wolfSSL | 0:d92f9d21154c | 1356 | /* Secure Renegotiation */ |
wolfSSL | 0:d92f9d21154c | 1357 | #ifdef HAVE_SECURE_RENEGOTIATION |
wolfSSL | 0:d92f9d21154c | 1358 | |
wolfSSL | 0:d92f9d21154c | 1359 | WOLFSSL_API int wolfSSL_UseSecureRenegotiation(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 1360 | WOLFSSL_API int wolfSSL_Rehandshake(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 1361 | |
wolfSSL | 0:d92f9d21154c | 1362 | #endif |
wolfSSL | 0:d92f9d21154c | 1363 | |
wolfSSL | 0:d92f9d21154c | 1364 | /* Session Ticket */ |
wolfSSL | 0:d92f9d21154c | 1365 | #ifdef HAVE_SESSION_TICKET |
wolfSSL | 0:d92f9d21154c | 1366 | |
wolfSSL | 0:d92f9d21154c | 1367 | #ifndef NO_WOLFSSL_CLIENT |
wolfSSL | 0:d92f9d21154c | 1368 | WOLFSSL_API int wolfSSL_UseSessionTicket(WOLFSSL* ssl); |
wolfSSL | 0:d92f9d21154c | 1369 | WOLFSSL_API int wolfSSL_CTX_UseSessionTicket(WOLFSSL_CTX* ctx); |
wolfSSL | 0:d92f9d21154c | 1370 | WOLFSSL_API int wolfSSL_get_SessionTicket(WOLFSSL*, unsigned char*, unsigned int*); |
wolfSSL | 0:d92f9d21154c | 1371 | WOLFSSL_API int wolfSSL_set_SessionTicket(WOLFSSL*, unsigned char*, unsigned int); |
wolfSSL | 0:d92f9d21154c | 1372 | typedef int (*CallbackSessionTicket)(WOLFSSL*, const unsigned char*, int, void*); |
wolfSSL | 0:d92f9d21154c | 1373 | WOLFSSL_API int wolfSSL_set_SessionTicket_cb(WOLFSSL*, |
wolfSSL | 0:d92f9d21154c | 1374 | CallbackSessionTicket, void*); |
wolfSSL | 0:d92f9d21154c | 1375 | #endif /* NO_WOLFSSL_CLIENT */ |
wolfSSL | 0:d92f9d21154c | 1376 | |
wolfSSL | 0:d92f9d21154c | 1377 | #ifndef NO_WOLFSSL_SERVER |
wolfSSL | 0:d92f9d21154c | 1378 | |
wolfSSL | 0:d92f9d21154c | 1379 | #define WOLFSSL_TICKET_NAME_SZ 16 |
wolfSSL | 0:d92f9d21154c | 1380 | #define WOLFSSL_TICKET_IV_SZ 16 |
wolfSSL | 0:d92f9d21154c | 1381 | #define WOLFSSL_TICKET_MAC_SZ 32 |
wolfSSL | 0:d92f9d21154c | 1382 | |
wolfSSL | 0:d92f9d21154c | 1383 | enum TicketEncRet { |
wolfSSL | 0:d92f9d21154c | 1384 | WOLFSSL_TICKET_RET_FATAL = -1, /* fatal error, don't use ticket */ |
wolfSSL | 0:d92f9d21154c | 1385 | WOLFSSL_TICKET_RET_OK = 0, /* ok, use ticket */ |
wolfSSL | 0:d92f9d21154c | 1386 | WOLFSSL_TICKET_RET_REJECT, /* don't use ticket, but not fatal */ |
wolfSSL | 0:d92f9d21154c | 1387 | WOLFSSL_TICKET_RET_CREATE /* existing ticket ok and create new one */ |
wolfSSL | 0:d92f9d21154c | 1388 | }; |
wolfSSL | 0:d92f9d21154c | 1389 | |
wolfSSL | 0:d92f9d21154c | 1390 | typedef int (*SessionTicketEncCb)(WOLFSSL*, |
wolfSSL | 0:d92f9d21154c | 1391 | unsigned char key_name[WOLFSSL_TICKET_NAME_SZ], |
wolfSSL | 0:d92f9d21154c | 1392 | unsigned char iv[WOLFSSL_TICKET_IV_SZ], |
wolfSSL | 0:d92f9d21154c | 1393 | unsigned char mac[WOLFSSL_TICKET_MAC_SZ], |
wolfSSL | 0:d92f9d21154c | 1394 | int enc, unsigned char*, int, int*, void*); |
wolfSSL | 0:d92f9d21154c | 1395 | WOLFSSL_API int wolfSSL_CTX_set_TicketEncCb(WOLFSSL_CTX* ctx, |
wolfSSL | 0:d92f9d21154c | 1396 | SessionTicketEncCb); |
wolfSSL | 0:d92f9d21154c | 1397 | WOLFSSL_API int wolfSSL_CTX_set_TicketHint(WOLFSSL_CTX* ctx, int); |
wolfSSL | 0:d92f9d21154c | 1398 | WOLFSSL_API int wolfSSL_CTX_set_TicketEncCtx(WOLFSSL_CTX* ctx, void*); |
wolfSSL | 0:d92f9d21154c | 1399 | |
wolfSSL | 0:d92f9d21154c | 1400 | #endif /* NO_WOLFSSL_SERVER */ |
wolfSSL | 0:d92f9d21154c | 1401 | |
wolfSSL | 0:d92f9d21154c | 1402 | #endif /* HAVE_SESSION_TICKET */ |
wolfSSL | 0:d92f9d21154c | 1403 | |
wolfSSL | 0:d92f9d21154c | 1404 | #define WOLFSSL_CRL_MONITOR 0x01 /* monitor this dir flag */ |
wolfSSL | 0:d92f9d21154c | 1405 | #define WOLFSSL_CRL_START_MON 0x02 /* start monitoring flag */ |
wolfSSL | 0:d92f9d21154c | 1406 | |
wolfSSL | 0:d92f9d21154c | 1407 | |
wolfSSL | 0:d92f9d21154c | 1408 | /* notify user the hanshake is done */ |
wolfSSL | 0:d92f9d21154c | 1409 | typedef int (*HandShakeDoneCb)(WOLFSSL*, void*); |
wolfSSL | 0:d92f9d21154c | 1410 | WOLFSSL_API int wolfSSL_SetHsDoneCb(WOLFSSL*, HandShakeDoneCb, void*); |
wolfSSL | 0:d92f9d21154c | 1411 | |
wolfSSL | 0:d92f9d21154c | 1412 | |
wolfSSL | 0:d92f9d21154c | 1413 | WOLFSSL_API int wolfSSL_PrintSessionStats(void); |
wolfSSL | 0:d92f9d21154c | 1414 | WOLFSSL_API int wolfSSL_get_session_stats(unsigned int* active, |
wolfSSL | 0:d92f9d21154c | 1415 | unsigned int* total, |
wolfSSL | 0:d92f9d21154c | 1416 | unsigned int* peak, |
wolfSSL | 0:d92f9d21154c | 1417 | unsigned int* maxSessions); |
wolfSSL | 0:d92f9d21154c | 1418 | /* External facing KDF */ |
wolfSSL | 0:d92f9d21154c | 1419 | WOLFSSL_API |
wolfSSL | 0:d92f9d21154c | 1420 | int wolfSSL_MakeTlsMasterSecret(unsigned char* ms, unsigned int msLen, |
wolfSSL | 0:d92f9d21154c | 1421 | const unsigned char* pms, unsigned int pmsLen, |
wolfSSL | 0:d92f9d21154c | 1422 | const unsigned char* cr, const unsigned char* sr, |
wolfSSL | 0:d92f9d21154c | 1423 | int tls1_2, int hash_type); |
wolfSSL | 0:d92f9d21154c | 1424 | |
wolfSSL | 0:d92f9d21154c | 1425 | WOLFSSL_API |
wolfSSL | 0:d92f9d21154c | 1426 | int wolfSSL_DeriveTlsKeys(unsigned char* key_data, unsigned int keyLen, |
wolfSSL | 0:d92f9d21154c | 1427 | const unsigned char* ms, unsigned int msLen, |
wolfSSL | 0:d92f9d21154c | 1428 | const unsigned char* sr, const unsigned char* cr, |
wolfSSL | 0:d92f9d21154c | 1429 | int tls1_2, int hash_type); |
wolfSSL | 0:d92f9d21154c | 1430 | |
wolfSSL | 0:d92f9d21154c | 1431 | #ifdef WOLFSSL_CALLBACKS |
wolfSSL | 0:d92f9d21154c | 1432 | |
wolfSSL | 0:d92f9d21154c | 1433 | /* used internally by wolfSSL while OpenSSL types aren't */ |
wolfSSL | 0:d92f9d21154c | 1434 | #include <wolfssl/callbacks.h> |
wolfSSL | 0:d92f9d21154c | 1435 | |
wolfSSL | 0:d92f9d21154c | 1436 | typedef int (*HandShakeCallBack)(HandShakeInfo*); |
wolfSSL | 0:d92f9d21154c | 1437 | typedef int (*TimeoutCallBack)(TimeoutInfo*); |
wolfSSL | 0:d92f9d21154c | 1438 | |
wolfSSL | 0:d92f9d21154c | 1439 | /* wolfSSL connect extension allowing HandShakeCallBack and/or TimeoutCallBack |
wolfSSL | 0:d92f9d21154c | 1440 | for diagnostics */ |
wolfSSL | 0:d92f9d21154c | 1441 | WOLFSSL_API int wolfSSL_connect_ex(WOLFSSL*, HandShakeCallBack, TimeoutCallBack, |
wolfSSL | 0:d92f9d21154c | 1442 | Timeval); |
wolfSSL | 0:d92f9d21154c | 1443 | WOLFSSL_API int wolfSSL_accept_ex(WOLFSSL*, HandShakeCallBack, TimeoutCallBack, |
wolfSSL | 0:d92f9d21154c | 1444 | Timeval); |
wolfSSL | 0:d92f9d21154c | 1445 | |
wolfSSL | 0:d92f9d21154c | 1446 | #endif /* WOLFSSL_CALLBACKS */ |
wolfSSL | 0:d92f9d21154c | 1447 | |
wolfSSL | 0:d92f9d21154c | 1448 | |
wolfSSL | 0:d92f9d21154c | 1449 | #ifdef WOLFSSL_HAVE_WOLFSCEP |
wolfSSL | 0:d92f9d21154c | 1450 | WOLFSSL_API void wolfSSL_wolfSCEP(void); |
wolfSSL | 0:d92f9d21154c | 1451 | #endif /* WOLFSSL_HAVE_WOLFSCEP */ |
wolfSSL | 0:d92f9d21154c | 1452 | |
wolfSSL | 0:d92f9d21154c | 1453 | #ifdef WOLFSSL_HAVE_CERT_SERVICE |
wolfSSL | 0:d92f9d21154c | 1454 | WOLFSSL_API void wolfSSL_cert_service(void); |
wolfSSL | 0:d92f9d21154c | 1455 | #endif |
wolfSSL | 0:d92f9d21154c | 1456 | |
wolfSSL | 0:d92f9d21154c | 1457 | |
wolfSSL | 0:d92f9d21154c | 1458 | #ifdef __cplusplus |
wolfSSL | 0:d92f9d21154c | 1459 | } /* extern "C" */ |
wolfSSL | 0:d92f9d21154c | 1460 | #endif |
wolfSSL | 0:d92f9d21154c | 1461 | |
wolfSSL | 0:d92f9d21154c | 1462 | |
wolfSSL | 0:d92f9d21154c | 1463 | #endif /* WOLFSSL_SSL_H */ |
wolfSSL | 0:d92f9d21154c | 1464 | |
wolfSSL | 0:d92f9d21154c | 1465 |