Changeset 372 for asp3_tinet_ecnl_rx/trunk/wolfssl-3.12.2/wolfssl/ssl.h
- Timestamp:
- Feb 7, 2019, 8:36:33 AM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
asp3_tinet_ecnl_rx/trunk/wolfssl-3.12.2/wolfssl/ssl.h
r337 r372 19 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA 20 20 */ 21 22 21 /*! 22 \file ../wolfssl/ssl.h 23 \brief Header file containing key wolfSSL API 24 */ 23 25 24 26 /* wolfSSL API */ … … 31 33 #include <wolfssl/wolfcrypt/settings.h> 32 34 #include <wolfssl/version.h> 35 #include <wolfssl/wolfcrypt/logging.h> 36 #include <wolfssl/wolfcrypt/asn_public.h> 33 37 34 38 #ifdef HAVE_WOLF_EVENT … … 84 88 #endif 85 89 86 #elif defined(OPENSSL_EXTRA)90 #elif (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) 87 91 #include <wolfssl/openssl/bn.h> 88 92 #include <wolfssl/openssl/hmac.h> … … 118 122 typedef struct WOLFSSL_X509_NAME_ENTRY WOLFSSL_X509_NAME_ENTRY; 119 123 typedef struct WOLFSSL_X509_CHAIN WOLFSSL_X509_CHAIN; 124 typedef struct WC_PKCS12 WOLFSSL_X509_PKCS12; 120 125 121 126 typedef struct WOLFSSL_CERT_MANAGER WOLFSSL_CERT_MANAGER; 122 127 typedef struct WOLFSSL_SOCKADDR WOLFSSL_SOCKADDR; 123 128 typedef struct WOLFSSL_CRL WOLFSSL_CRL; 129 130 typedef void *WOLFSSL_X509_STORE_CTX_verify_cb; /* verify callback */ 124 131 125 132 /* redeclare guard */ … … 159 166 typedef struct WOLFSSL_X509_LOOKUP WOLFSSL_X509_LOOKUP; 160 167 typedef struct WOLFSSL_X509_LOOKUP_METHOD WOLFSSL_X509_LOOKUP_METHOD; 161 typedef struct WOLFSSL_ X509_CRLWOLFSSL_X509_CRL;168 typedef struct WOLFSSL_CRL WOLFSSL_X509_CRL; 162 169 typedef struct WOLFSSL_X509_STORE WOLFSSL_X509_STORE; 170 typedef struct WOLFSSL_X509_VERIFY_PARAM WOLFSSL_X509_VERIFY_PARAM; 163 171 typedef struct WOLFSSL_BIO WOLFSSL_BIO; 164 172 typedef struct WOLFSSL_BIO_METHOD WOLFSSL_BIO_METHOD; … … 172 180 typedef struct WOLFSSL_DH WOLFSSL_DH; 173 181 typedef struct WOLFSSL_ASN1_BIT_STRING WOLFSSL_ASN1_BIT_STRING; 174 typedef unsigned char* WOLFSSL_BUF_MEM;175 182 176 183 #define WOLFSSL_ASN1_UTCTIME WOLFSSL_ASN1_TIME 177 184 #define WOLFSSL_ASN1_GENERALIZEDTIME WOLFSSL_ASN1_TIME 178 185 186 #define WOLFSSL_ASN1_INTEGER_MAX 20 179 187 struct WOLFSSL_ASN1_INTEGER { 180 188 /* size can be increased set at 20 for tag, length then to hold at least 16 181 189 * byte type */ 182 unsigned char data[20];190 unsigned char intData[WOLFSSL_ASN1_INTEGER_MAX]; 183 191 /* ASN_INTEGER | LENGTH | hex of number */ 192 unsigned char negative; /* negative number flag */ 193 194 unsigned char* data; 195 unsigned int dataMax; /* max size of data buffer */ 196 unsigned int isDynamic:1; /* flag for if data pointer dynamic (1 is yes 0 is no) */ 184 197 }; 185 198 … … 190 203 }; 191 204 192 #ifndef WOLFSSL_EVP_PKEY_TYPE_DEFINED /* guard on redeclaration */ 205 struct WOLFSSL_ASN1_STRING { 206 int length; 207 int type; /* type of string i.e. CTC_UTF8 */ 208 char* data; 209 long flags; 210 }; 211 212 #define WOLFSSL_MAX_SNAME 40 213 struct WOLFSSL_ASN1_OBJECT { 214 void* heap; 215 const unsigned char* obj; 216 /* sName is short name i.e sha256 rather than oid (null terminated) */ 217 char sName[WOLFSSL_MAX_SNAME]; 218 int type; /* oid */ 219 int grp; /* type of OID, i.e. oidCertPolicyType */ 220 int nid; 221 unsigned int objSz; 222 unsigned char dynamic; /* if 1 then obj was dynamiclly created, 0 otherwise */ 223 #define WOLFSSL_ASN1_DYNAMIC 0x1 224 #define WOLFSSL_ASN1_DYNAMIC_DATA 0x2 225 struct d { /* derefrenced */ 226 WOLFSSL_ASN1_STRING ia5_internal; 227 WOLFSSL_ASN1_STRING* ia5; /* points to ia5_internal */ 228 WOLFSSL_ASN1_STRING* dNSName; 229 WOLFSSL_ASN1_STRING* iPAddress; 230 } d; 231 }; 232 233 struct WOLFSSL_EVP_PKEY { 234 void* heap; 235 int type; /* openssh dereference */ 236 int save_type; /* openssh dereference */ 237 int pkey_sz; 238 union { 239 char* ptr; /* der format of key / or raw for NTRU */ 240 } pkey; 241 #if (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL)) 242 #ifndef NO_RSA 243 WOLFSSL_RSA* rsa; 244 byte ownRsa; /* if struct owns RSA and should free it */ 245 #endif 246 #ifdef HAVE_ECC 247 WOLFSSL_EC_KEY* ecc; 248 byte ownEcc; /* if struct owns ECC and should free it */ 249 #endif 250 WC_RNG rng; 251 #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ 252 #ifdef HAVE_ECC 253 int pkey_curve; 254 #endif 255 }; 256 typedef struct WOLFSSL_EVP_PKEY WOLFSSL_PKCS8_PRIV_KEY_INFO; 257 258 #ifndef WOLFSSL_EVP_TYPE_DEFINED /* guard on redeclaration */ 193 259 typedef struct WOLFSSL_EVP_PKEY WOLFSSL_EVP_PKEY; 194 #define WOLFSSL_EVP_PKEY_TYPE_DEFINED 195 #endif 196 197 typedef struct WOLFSSL_MD4_CTX { 198 int buffer[32]; /* big enough to hold, check size in Init */ 199 } WOLFSSL_MD4_CTX; 200 260 typedef char WOLFSSL_EVP_MD; 261 #define WOLFSSL_EVP_TYPE_DEFINED 262 #endif 263 264 #define WOLFSSL_EVP_PKEY_DEFAULT EVP_PKEY_RSA /* default key type */ 265 266 267 enum BIO_TYPE { 268 WOLFSSL_BIO_BUFFER = 1, 269 WOLFSSL_BIO_SOCKET = 2, 270 WOLFSSL_BIO_SSL = 3, 271 WOLFSSL_BIO_MEMORY = 4, 272 WOLFSSL_BIO_BIO = 5, 273 WOLFSSL_BIO_FILE = 6, 274 WOLFSSL_BIO_BASE64 = 7 275 }; 276 277 enum BIO_FLAGS { 278 WOLFSSL_BIO_FLAG_BASE64_NO_NL = 0x01, 279 WOLFSSL_BIO_FLAG_READ = 0x02, 280 WOLFSSL_BIO_FLAG_WRITE = 0x04, 281 WOLFSSL_BIO_FLAG_IO_SPECIAL = 0x08, 282 WOLFSSL_BIO_FLAG_RETRY = 0x10 283 }; 284 285 typedef struct WOLFSSL_BUF_MEM { 286 char* data; /* dereferenced */ 287 size_t length; /* current length */ 288 size_t max; /* maximum length */ 289 } WOLFSSL_BUF_MEM; 201 290 202 291 typedef struct WOLFSSL_COMP_METHOD { … … 219 308 int isDynamic; 220 309 #endif 221 }; 310 #if defined(OPENSSL_EXTRA) && defined(HAVE_CRL) 311 WOLFSSL_X509_CRL *crl; 312 #endif 313 }; 314 315 #ifdef OPENSSL_EXTRA 316 #define WOLFSSL_USE_CHECK_TIME 0x2 317 #define WOLFSSL_NO_CHECK_TIME 0x200000 318 #define WOLFSSL_NO_WILDCARDS 0x4 319 struct WOLFSSL_X509_VERIFY_PARAM { 320 time_t check_time; 321 unsigned long flags; 322 }; 323 #endif 222 324 223 325 typedef struct WOLFSSL_ALERT { … … 251 353 typedef struct WOLFSSL_X509_STORE_CTX { 252 354 WOLFSSL_X509_STORE* store; /* Store full of a CA cert chain */ 253 WOLFSSL_X509* current_cert; /* stunnel dereference */ 355 WOLFSSL_X509* current_cert; /* current X509 (OPENSSL_EXTRA) */ 356 #ifdef WOLFSSL_ASIO 357 WOLFSSL_X509* current_issuer; /* asio dereference */ 358 #endif 359 WOLFSSL_X509_CHAIN* sesChain; /* pointer to WOLFSSL_SESSION peer chain */ 254 360 WOLFSSL_STACK* chain; 361 #ifdef OPENSSL_EXTRA 362 WOLFSSL_X509_VERIFY_PARAM* param; /* certificate validation parameter */ 363 #endif 255 364 char* domain; /* subject CN domain name */ 256 365 void* ex_data; /* external data, for fortress build */ 257 366 void* userCtx; /* user ctx */ 258 367 int error; /* current error */ 259 int error_depth; /* cert depth for this error */368 int error_depth; /* index of cert depth for this error */ 260 369 int discardSessionCerts; /* so verify callback can flag for discard */ 261 370 int totalCerts; /* number of peer cert buffers */ 262 371 WOLFSSL_BUFFER_INFO* certs; /* peer certs */ 372 WOLFSSL_X509_STORE_CTX_verify_cb verify_cb; /* verify callback */ 263 373 } WOLFSSL_X509_STORE_CTX; 264 374 265 375 typedef char* WOLFSSL_STRING; 266 376 267 /* Valid Alert types from page 16/17 */ 377 /* Valid Alert types from page 16/17 378 * Add alert string to the function wolfSSL_alert_type_string_long in src/ssl.c 379 */ 268 380 enum AlertDescription { 269 381 close_notify = 0, … … 289 401 #endif 290 402 no_renegotiation = 100, 403 unsupported_extension = 110, /**< RFC 5246, section 7.2.2 */ 291 404 unrecognized_name = 112, /**< RFC 6066, section 3 */ 292 405 bad_certificate_status_response = 113, /**< RFC 6066, section 8 */ 406 unknown_psk_identity = 115, /**< RFC 4279, section 2 */ 293 407 no_application_protocol = 120 294 408 }; … … 302 416 /* Maximum master key length (SECRET_LEN) */ 303 417 #define WOLFSSL_MAX_MASTER_KEY_LENGTH 48 418 /* Maximum number of groups that can be set */ 419 #define WOLFSSL_MAX_GROUP_COUNT 10 304 420 305 421 typedef WOLFSSL_METHOD* (*wolfSSL_method_func)(void* heap); 422 423 /* CTX Method EX Constructor Functions */ 306 424 WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_server_method_ex(void* heap); 307 425 WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_client_method_ex(void* heap); 426 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_method_ex(void* heap); 308 427 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_server_method_ex(void* heap); 309 428 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_client_method_ex(void* heap); 429 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_method_ex(void* heap); 310 430 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_server_method_ex(void* heap); 311 431 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_client_method_ex(void* heap); 432 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_method_ex(void* heap); 312 433 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_server_method_ex(void* heap); 313 434 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_client_method_ex(void* heap); 314 435 #ifdef WOLFSSL_TLS13 436 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_method_ex(void* heap); 315 437 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_server_method_ex(void* heap); 316 438 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_client_method_ex(void* heap); 317 439 #endif 440 441 WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_method_ex(void* heap); 318 442 WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_server_method_ex(void* heap); 319 443 WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_client_method_ex(void* heap); 320 444 321 445 #ifdef WOLFSSL_DTLS 446 WOLFSSL_API WOLFSSL_METHOD *wolfDTLS_method_ex(void* heap); 447 WOLFSSL_API WOLFSSL_METHOD *wolfDTLS_client_method_ex(void* heap); 448 WOLFSSL_API WOLFSSL_METHOD *wolfDTLS_server_method_ex(void* heap); 449 WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_method_ex(void* heap); 322 450 WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_client_method_ex(void* heap); 323 451 WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_server_method_ex(void* heap); 452 WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_method_ex(void* heap); 324 453 WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_client_method_ex(void* heap); 325 454 WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_server_method_ex(void* heap); 326 455 #endif 456 457 /* CTX Method Constructor Functions */ 327 458 WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_method(void); 328 459 WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_server_method(void); 329 460 WOLFSSL_API WOLFSSL_METHOD *wolfSSLv3_client_method(void); 461 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_method(void); 330 462 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_server_method(void); 331 463 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_client_method(void); 464 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_method(void); 332 465 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_server_method(void); 333 466 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_client_method(void); 467 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_method(void); 334 468 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_server_method(void); 335 469 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_client_method(void); … … 340 474 341 475 #ifdef WOLFSSL_DTLS 476 WOLFSSL_API WOLFSSL_METHOD *wolfDTLS_method(void); 477 WOLFSSL_API WOLFSSL_METHOD *wolfDTLS_server_method(void); 478 WOLFSSL_API WOLFSSL_METHOD *wolfDTLS_client_method(void); 479 WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_method(void); 342 480 WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_client_method(void); 343 481 WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_server_method(void); 482 WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_method(void); 344 483 WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_client_method(void); 345 484 WOLFSSL_API WOLFSSL_METHOD *wolfDTLSv1_2_server_method(void); … … 352 491 #ifdef WOLFSSL_SESSION_EXPORT 353 492 #ifdef WOLFSSL_DTLS 493 494 #ifndef WOLFSSL_DTLS_EXPORT_TYPES 354 495 typedef int (*wc_dtls_export)(WOLFSSL* ssl, 355 496 unsigned char* exportBuffer, unsigned int sz, void* userCtx); 497 #define WOLFSSL_DTLS_EXPORT_TYPES 498 #endif /* WOLFSSL_DTLS_EXPORT_TYPES */ 499 356 500 WOLFSSL_API int wolfSSL_dtls_import(WOLFSSL* ssl, unsigned char* buf, 357 501 unsigned int sz); … … 384 528 WOLFSSL_API int wolfSSL_CTX_use_certificate_file(WOLFSSL_CTX*, const char*, int); 385 529 WOLFSSL_API int wolfSSL_CTX_use_PrivateKey_file(WOLFSSL_CTX*, const char*, int); 530 531 #define WOLFSSL_LOAD_FLAG_NONE 0x00000000 532 #define WOLFSSL_LOAD_FLAG_IGNORE_ERR 0x00000001 533 #define WOLFSSL_LOAD_FLAG_DATE_ERR_OKAY 0x00000002 534 #define WOLFSSL_LOAD_FLAG_PEM_CA_ONLY 0x00000004 535 WOLFSSL_API int wolfSSL_CTX_load_verify_locations_ex(WOLFSSL_CTX*, const char*, 536 const char*, unsigned int); 386 537 WOLFSSL_API int wolfSSL_CTX_load_verify_locations(WOLFSSL_CTX*, const char*, 387 538 const char*); … … 391 542 WOLFSSL_API int wolfSSL_CTX_use_certificate_chain_file(WOLFSSL_CTX *, 392 543 const char *file); 544 WOLFSSL_API int wolfSSL_CTX_use_certificate_chain_file_format(WOLFSSL_CTX *, 545 const char *file, int format); 393 546 WOLFSSL_API int wolfSSL_CTX_use_RSAPrivateKey_file(WOLFSSL_CTX*, const char*, int); 394 547 395 548 WOLFSSL_API long wolfSSL_get_verify_depth(WOLFSSL* ssl); 396 549 WOLFSSL_API long wolfSSL_CTX_get_verify_depth(WOLFSSL_CTX* ctx); 550 WOLFSSL_API void wolfSSL_CTX_set_verify_depth(WOLFSSL_CTX *ctx,int depth); 397 551 WOLFSSL_API int wolfSSL_use_certificate_file(WOLFSSL*, const char*, int); 398 552 WOLFSSL_API int wolfSSL_use_PrivateKey_file(WOLFSSL*, const char*, int); 399 553 WOLFSSL_API int wolfSSL_use_certificate_chain_file(WOLFSSL*, const char *file); 554 WOLFSSL_API int wolfSSL_use_certificate_chain_file_format(WOLFSSL*, 555 const char *file, int format); 400 556 WOLFSSL_API int wolfSSL_use_RSAPrivateKey_file(WOLFSSL*, const char*, int); 401 557 … … 410 566 #endif 411 567 412 #ifndef WOLFSSL_PEMCERT_TODER_DEFINED413 WOLFSSL_API int wolfSSL_PemCertToDer(const char*, unsigned char*, int);414 #define WOLFSSL_PEMCERT_TODER_DEFINED415 #endif416 417 568 #endif /* !NO_FILESYSTEM && !NO_CERTS */ 418 569 419 570 WOLFSSL_API WOLFSSL_CTX* wolfSSL_CTX_new(WOLFSSL_METHOD*); 420 571 WOLFSSL_API WOLFSSL* wolfSSL_new(WOLFSSL_CTX*); 572 WOLFSSL_API WOLFSSL_CTX* wolfSSL_get_SSL_CTX(WOLFSSL* ssl); 421 573 WOLFSSL_API int wolfSSL_is_server(WOLFSSL*); 422 574 WOLFSSL_API WOLFSSL* wolfSSL_write_dup(WOLFSSL*); … … 428 580 WOLFSSL_API int wolfSSL_get_ciphers(char*, int); 429 581 WOLFSSL_API const char* wolfSSL_get_cipher_name(WOLFSSL* ssl); 582 WOLFSSL_API const char* wolfSSL_get_cipher_name_from_suite(const unsigned char, 583 const unsigned char); 430 584 WOLFSSL_API const char* wolfSSL_get_shared_ciphers(WOLFSSL* ssl, char* buf, 431 585 int len); 432 586 WOLFSSL_API const char* wolfSSL_get_curve_name(WOLFSSL* ssl); 433 587 WOLFSSL_API int wolfSSL_get_fd(const WOLFSSL*); 434 WOLFSSL_API void wolfSSL_set_using_nonblock(WOLFSSL*, int);435 WOLFSSL_API int wolfSSL_get_using_nonblock(WOLFSSL*);436 588 /* please see note at top of README if you get an error from connect */ 437 589 WOLFSSL_API int wolfSSL_connect(WOLFSSL*); … … 452 604 WOLFSSL_API int wolfSSL_request_certificate(WOLFSSL* ssl); 453 605 606 WOLFSSL_API int wolfSSL_preferred_group(WOLFSSL* ssl); 607 WOLFSSL_API int wolfSSL_CTX_set_groups(WOLFSSL_CTX* ctx, int* groups, 608 int count); 609 WOLFSSL_API int wolfSSL_set_groups(WOLFSSL* ssl, int* groups, int count); 610 454 611 WOLFSSL_API int wolfSSL_connect_TLSv13(WOLFSSL*); 455 612 WOLFSSL_API int wolfSSL_accept_TLSv13(WOLFSSL*); … … 475 632 WOLFSSL_API int wolfSSL_get_alert_history(WOLFSSL*, WOLFSSL_ALERT_HISTORY *); 476 633 477 WOLFSSL_API int wolfSSL_set_session(WOLFSSL* ssl,WOLFSSL_SESSION* session); 478 WOLFSSL_API long wolfSSL_SSL_SESSION_set_timeout(WOLFSSL_SESSION* session, long t); 479 WOLFSSL_API WOLFSSL_SESSION* wolfSSL_get_session(WOLFSSL* ssl); 480 WOLFSSL_API void wolfSSL_flush_sessions(WOLFSSL_CTX *ctx, long tm); 481 WOLFSSL_API int wolfSSL_SetServerID(WOLFSSL* ssl, const unsigned char*, 482 int, int); 634 WOLFSSL_API int wolfSSL_set_session(WOLFSSL*, WOLFSSL_SESSION*); 635 WOLFSSL_API long wolfSSL_SSL_SESSION_set_timeout(WOLFSSL_SESSION*, long); 636 WOLFSSL_API WOLFSSL_SESSION* wolfSSL_get_session(WOLFSSL*); 637 WOLFSSL_API void wolfSSL_flush_sessions(WOLFSSL_CTX*, long); 638 WOLFSSL_API int wolfSSL_SetServerID(WOLFSSL*, const unsigned char*, int, int); 639 640 #if defined(OPENSSL_ALL) || defined(WOLFSSL_ASIO) 641 WOLFSSL_API int wolfSSL_BIO_new_bio_pair(WOLFSSL_BIO**, size_t, 642 WOLFSSL_BIO**, size_t); 643 644 WOLFSSL_API WOLFSSL_RSA* wolfSSL_d2i_RSAPrivateKey_bio(WOLFSSL_BIO*, WOLFSSL_RSA**); 645 WOLFSSL_API int wolfSSL_CTX_use_certificate_ASN1(WOLFSSL_CTX*, 646 int, const unsigned char*); 647 WOLFSSL_API int wolfSSL_CTX_use_RSAPrivateKey(WOLFSSL_CTX*, WOLFSSL_RSA*); 648 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PrivateKey_bio(WOLFSSL_BIO*, WOLFSSL_EVP_PKEY**); 649 #endif /* OPENSSL_ALL || WOLFSSL_ASIO */ 483 650 484 651 #ifdef SESSION_INDEX … … 493 660 494 661 typedef int (*VerifyCallback)(int, WOLFSSL_X509_STORE_CTX*); 495 typedef int (pem_password_cb)(char*, int, int, void*); 662 #ifdef OPENSSL_EXTRA 663 typedef void (CallbackInfoState)(const WOLFSSL*, int, int); 664 665 typedef struct WOLFSSL_CRYPTO_EX_DATA { 666 WOLFSSL_STACK* data; 667 } WOLFSSL_CRYPTO_EX_DATA; 668 669 typedef int (WOLFSSL_CRYPTO_EX_new)(void* p, void* ptr, 670 WOLFSSL_CRYPTO_EX_DATA* a, int idx, long argValue, void* arg); 671 typedef int (WOLFSSL_CRYPTO_EX_dup)(WOLFSSL_CRYPTO_EX_DATA* out, 672 WOLFSSL_CRYPTO_EX_DATA* in, void* inPtr, int idx, long argV, void* arg); 673 typedef void (WOLFSSL_CRYPTO_EX_free)(void* p, void* ptr, 674 WOLFSSL_CRYPTO_EX_DATA* a, int idx, long argValue, void* arg); 675 676 WOLFSSL_API int wolfSSL_get_ex_new_index(long argValue, void* arg, 677 WOLFSSL_CRYPTO_EX_new* a, WOLFSSL_CRYPTO_EX_dup* b, 678 WOLFSSL_CRYPTO_EX_free* c); 679 #endif 496 680 497 681 WOLFSSL_API void wolfSSL_CTX_set_verify(WOLFSSL_CTX*, int, … … 531 715 532 716 /* Nonblocking DTLS helper functions */ 717 WOLFSSL_API void wolfSSL_dtls_set_using_nonblock(WOLFSSL*, int); 718 WOLFSSL_API int wolfSSL_dtls_get_using_nonblock(WOLFSSL*); 719 #define wolfSSL_set_using_nonblock wolfSSL_dtls_set_using_nonblock 720 #define wolfSSL_get_using_nonblock wolfSSL_dtls_get_using_nonblock 721 /* The old names are deprecated. */ 533 722 WOLFSSL_API int wolfSSL_dtls_get_current_timeout(WOLFSSL* ssl); 534 723 WOLFSSL_API int wolfSSL_dtls_set_timeout_init(WOLFSSL* ssl, int); … … 585 774 WOLFSSL_API WOLFSSL_X509* wolfSSL_sk_X509_pop(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk); 586 775 WOLFSSL_API void wolfSSL_sk_X509_free(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk); 776 WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_sk_GENERAL_NAME_value( 777 WOLFSSL_STACK* sk, int i); 778 WOLFSSL_API int wolfSSL_sk_GENERAL_NAME_num(WOLFSSL_STACK* sk); 779 WOLFSSL_API void wolfSSL_sk_GENERAL_NAME_pop_free(WOLFSSL_STACK* sk, 780 void f (WOLFSSL_ASN1_OBJECT*)); 587 781 WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_ASN1_OBJECT_new(void); 588 782 WOLFSSL_API void wolfSSL_ASN1_OBJECT_free(WOLFSSL_ASN1_OBJECT* obj); … … 617 811 /* what's ref count */ 618 812 619 WOLFSSL_API void wolfSSL_X509_free(WOLFSSL_X509*); 620 WOLFSSL_API void wolfSSL_OPENSSL_free(void*); 813 WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_new(void); 621 814 622 815 WOLFSSL_API int wolfSSL_OCSP_parse_url(char* url, char** host, char** port, … … 627 820 WOLFSSL_API WOLFSSL_METHOD* wolfSSLv2_server_method(void); 628 821 629 WOLFSSL_API void wolfSSL_MD4_Init(WOLFSSL_MD4_CTX*);630 WOLFSSL_API void wolfSSL_MD4_Update(WOLFSSL_MD4_CTX*, const void*, unsigned long);631 WOLFSSL_API void wolfSSL_MD4_Final(unsigned char*, WOLFSSL_MD4_CTX*);632 633 634 822 WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new(WOLFSSL_BIO_METHOD*); 635 823 WOLFSSL_API int wolfSSL_BIO_free(WOLFSSL_BIO*); 636 824 WOLFSSL_API int wolfSSL_BIO_free_all(WOLFSSL_BIO*); 825 WOLFSSL_API int wolfSSL_BIO_gets(WOLFSSL_BIO* bio, char* buf, int sz); 826 WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_next(WOLFSSL_BIO* bio); 827 WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_find_type(WOLFSSL_BIO* bio, int type); 637 828 WOLFSSL_API int wolfSSL_BIO_read(WOLFSSL_BIO*, void*, int); 638 829 WOLFSSL_API int wolfSSL_BIO_write(WOLFSSL_BIO*, const void*, int); … … 659 850 WOLFSSL_API long wolfSSL_BIO_set_fd(WOLFSSL_BIO* b, int fd, int flag); 660 851 WOLFSSL_API void wolfSSL_set_bio(WOLFSSL*, WOLFSSL_BIO* rd, WOLFSSL_BIO* wr); 661 WOLFSSL_API int wolfSSL_add_all_algorithms(void);662 852 663 853 #ifndef NO_FILESYSTEM … … 690 880 WOLFSSL_API int wolfSSL_RAND_egd(const char*); 691 881 WOLFSSL_API int wolfSSL_RAND_seed(const void*, int); 882 WOLFSSL_API void wolfSSL_RAND_Cleanup(void); 692 883 WOLFSSL_API void wolfSSL_RAND_add(const void*, int, double); 884 WOLFSSL_API int wolfSSL_RAND_poll(void); 693 885 694 886 WOLFSSL_API WOLFSSL_COMP_METHOD* wolfSSL_COMP_zlib(void); … … 696 888 WOLFSSL_API int wolfSSL_COMP_add_compression_method(int, void*); 697 889 698 WOLFSSL_API int wolfSSL_get_ex_new_index(long, void*, void*, void*, void*); 699 890 WOLFSSL_API unsigned long wolfSSL_thread_id(void); 700 891 WOLFSSL_API void wolfSSL_set_id_callback(unsigned long (*f)(void)); 701 892 WOLFSSL_API void wolfSSL_set_locking_callback(void (*f)(int, int, const char*, … … 714 905 WOLFSSL_API int wolfSSL_X509_STORE_CTX_get_error_depth(WOLFSSL_X509_STORE_CTX*); 715 906 907 WOLFSSL_API void wolfSSL_X509_STORE_CTX_set_verify_cb(WOLFSSL_X509_STORE_CTX *ctx, 908 WOLFSSL_X509_STORE_CTX_verify_cb verify_cb); 909 WOLFSSL_API int wolfSSL_i2d_X509_NAME(WOLFSSL_X509_NAME* n, 910 unsigned char** out); 911 WOLFSSL_API int wolfSSL_X509_print(WOLFSSL_BIO* bio, WOLFSSL_X509* x509); 716 912 WOLFSSL_API char* wolfSSL_X509_NAME_oneline(WOLFSSL_X509_NAME*, char*, int); 717 913 WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_get_issuer_name(WOLFSSL_X509*); … … 727 923 WOLFSSL_API unsigned char* wolfSSL_X509_get_subjectKeyID( 728 924 WOLFSSL_X509*, unsigned char*, int*); 925 926 WOLFSSL_API int wolfSSL_X509_set_subject_name(WOLFSSL_X509*, 927 WOLFSSL_X509_NAME*); 928 WOLFSSL_API int wolfSSL_X509_set_pubkey(WOLFSSL_X509*, WOLFSSL_EVP_PKEY*); 929 729 930 WOLFSSL_API int wolfSSL_X509_NAME_entry_count(WOLFSSL_X509_NAME*); 730 931 WOLFSSL_API int wolfSSL_X509_NAME_get_text_by_NID( … … 733 934 WOLFSSL_X509_NAME*, int, int); 734 935 WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_X509_NAME_ENTRY_get_data(WOLFSSL_X509_NAME_ENTRY*); 735 WOLFSSL_API char* wolfSSL_ASN1_STRING_data(WOLFSSL_ASN1_STRING*); 936 937 WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_ASN1_STRING_new(void); 938 WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_ASN1_STRING_type_new(int type); 939 WOLFSSL_API void wolfSSL_ASN1_STRING_free(WOLFSSL_ASN1_STRING* asn1); 940 WOLFSSL_API int wolfSSL_ASN1_STRING_set(WOLFSSL_ASN1_STRING* asn1, 941 const void* data, int dataSz); 942 WOLFSSL_API unsigned char* wolfSSL_ASN1_STRING_data(WOLFSSL_ASN1_STRING*); 736 943 WOLFSSL_API int wolfSSL_ASN1_STRING_length(WOLFSSL_ASN1_STRING*); 737 944 WOLFSSL_API int wolfSSL_X509_verify_cert(WOLFSSL_X509_STORE_CTX*); … … 770 977 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_X509_get_pubkey(WOLFSSL_X509*); 771 978 WOLFSSL_API int wolfSSL_X509_CRL_verify(WOLFSSL_X509_CRL*, WOLFSSL_EVP_PKEY*); 772 WOLFSSL_API void wolfSSL_X509_STORE_CTX_set_error(WOLFSSL_X509_STORE_CTX*,773 int);774 979 WOLFSSL_API void wolfSSL_X509_OBJECT_free_contents(WOLFSSL_X509_OBJECT*); 980 WOLFSSL_API WOLFSSL_PKCS8_PRIV_KEY_INFO* wolfSSL_d2i_PKCS8_PKEY_bio( 981 WOLFSSL_BIO* bio, WOLFSSL_PKCS8_PRIV_KEY_INFO** pkey); 982 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PUBKEY_bio(WOLFSSL_BIO* bio, 983 WOLFSSL_EVP_PKEY** out); 984 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PUBKEY(WOLFSSL_EVP_PKEY** key, 985 unsigned char** in, long inSz); 775 986 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PrivateKey(int type, 776 987 WOLFSSL_EVP_PKEY** out, const unsigned char **in, long inSz); 988 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PrivateKey_EVP(WOLFSSL_EVP_PKEY** key, 989 unsigned char** in, long inSz); 990 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_PKEY_new_ex(void* heap); 777 991 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_PKEY_new(void); 778 WOLFSSL_API void wolfSSL_EVP_PKEY_free(WOLFSSL_EVP_PKEY*);779 992 WOLFSSL_API int wolfSSL_X509_cmp_current_time(const WOLFSSL_ASN1_TIME*); 780 993 WOLFSSL_API int wolfSSL_sk_X509_REVOKED_num(WOLFSSL_X509_REVOKED*); 781 994 #ifdef OPENSSL_EXTRA 995 WOLFSSL_API void wolfSSL_X509_STORE_CTX_set_time(WOLFSSL_X509_STORE_CTX*, 996 unsigned long flags, 997 time_t t); 998 #endif 782 999 WOLFSSL_API WOLFSSL_X509_REVOKED* wolfSSL_X509_CRL_get_REVOKED(WOLFSSL_X509_CRL*); 783 1000 WOLFSSL_API WOLFSSL_X509_REVOKED* wolfSSL_sk_X509_REVOKED_value( 784 1001 WOLFSSL_X509_REVOKED*,int); 785 1002 WOLFSSL_API WOLFSSL_ASN1_INTEGER* wolfSSL_X509_get_serialNumber(WOLFSSL_X509*); 1003 WOLFSSL_API void wolfSSL_ASN1_INTEGER_free(WOLFSSL_ASN1_INTEGER*); 1004 WOLFSSL_API WOLFSSL_ASN1_INTEGER* wolfSSL_ASN1_INTEGER_new(void); 786 1005 787 1006 WOLFSSL_API int wolfSSL_ASN1_TIME_print(WOLFSSL_BIO*, const WOLFSSL_ASN1_TIME*); 788 1007 1008 WOLFSSL_API char* wolfSSL_ASN1_TIME_to_string(WOLFSSL_ASN1_TIME* t, 1009 char* buf, int len); 789 1010 WOLFSSL_API int wolfSSL_ASN1_INTEGER_cmp(const WOLFSSL_ASN1_INTEGER*, 790 1011 const WOLFSSL_ASN1_INTEGER*); … … 794 1015 WOLFSSL_API WOLFSSL_BIGNUM *wolfSSL_ASN1_INTEGER_to_BN(const WOLFSSL_ASN1_INTEGER *ai, 795 1016 WOLFSSL_BIGNUM *bn); 1017 WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_ASN1_TIME_adj(WOLFSSL_ASN1_TIME*, time_t, 1018 int, long); 1019 #endif 1020 796 1021 WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_load_client_CA_file(const char*); 797 #endif798 799 1022 WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_SSL_CTX_get_client_CA_list( 800 1023 const WOLFSSL_CTX *s); … … 803 1026 WOLFSSL_API void* wolfSSL_X509_STORE_CTX_get_ex_data(WOLFSSL_X509_STORE_CTX*, int); 804 1027 WOLFSSL_API int wolfSSL_get_ex_data_X509_STORE_CTX_idx(void); 1028 WOLFSSL_API void wolfSSL_X509_STORE_CTX_set_error( 1029 WOLFSSL_X509_STORE_CTX* ctx, int er); 805 1030 WOLFSSL_API void* wolfSSL_get_ex_data(const WOLFSSL*, int); 806 1031 … … 809 1034 WOLFSSL_API void wolfSSL_CTX_set_default_passwd_cb(WOLFSSL_CTX*, 810 1035 pem_password_cb*); 811 1036 WOLFSSL_API pem_password_cb* wolfSSL_CTX_get_default_passwd_cb(WOLFSSL_CTX *ctx); 1037 WOLFSSL_API void *wolfSSL_CTX_get_default_passwd_cb_userdata(WOLFSSL_CTX *ctx); 812 1038 813 1039 WOLFSSL_API void wolfSSL_CTX_set_info_callback(WOLFSSL_CTX*, … … 817 1043 WOLFSSL_API int wolfSSL_GET_REASON(int); 818 1044 819 WOLFSSL_API c har* wolfSSL_alert_type_string_long(int);820 WOLFSSL_API c har* wolfSSL_alert_desc_string_long(int);821 WOLFSSL_API c har* wolfSSL_state_string_long(const WOLFSSL*);1045 WOLFSSL_API const char* wolfSSL_alert_type_string_long(int); 1046 WOLFSSL_API const char* wolfSSL_alert_desc_string_long(int); 1047 WOLFSSL_API const char* wolfSSL_state_string_long(const WOLFSSL*); 822 1048 823 1049 WOLFSSL_API WOLFSSL_RSA* wolfSSL_RSA_generate_key(int, unsigned long, 824 1050 void(*)(int, int, void*), void*); 1051 WOLFSSL_API WOLFSSL_RSA *wolfSSL_d2i_RSAPublicKey(WOLFSSL_RSA **r, 1052 const unsigned char **pp, long len); 1053 WOLFSSL_API WOLFSSL_RSA *wolfSSL_d2i_RSAPrivateKey(WOLFSSL_RSA**, 1054 const unsigned char**, long); 1055 WOLFSSL_API int wolfSSL_i2d_RSAPublicKey(WOLFSSL_RSA *r, const unsigned char **pp); 1056 WOLFSSL_API int wolfSSL_i2d_RSAPrivateKey(WOLFSSL_RSA *r, unsigned char **pp); 825 1057 WOLFSSL_API void wolfSSL_CTX_set_tmp_rsa_callback(WOLFSSL_CTX*, 826 1058 WOLFSSL_RSA*(*)(WOLFSSL*, int, int)); … … 851 1083 WOLFSSL_API long wolfSSL_CTX_set_tlsext_opaque_prf_input_callback_arg( 852 1084 WOLFSSL_CTX*, void* arg); 853 854 WOLFSSL_API unsigned long wolfSSL_set_options(WOLFSSL *s, unsigned long op); 855 WOLFSSL_API unsigned long wolfSSL_get_options(const WOLFSSL *s); 1085 WOLFSSL_API int wolfSSL_CTX_add_client_CA(WOLFSSL_CTX*, WOLFSSL_X509*); 1086 WOLFSSL_API int wolfSSL_CTX_set_srp_password(WOLFSSL_CTX*, char*); 1087 WOLFSSL_API int wolfSSL_CTX_set_srp_username(WOLFSSL_CTX*, char*); 1088 1089 WOLFSSL_API long wolfSSL_set_options(WOLFSSL *s, long op); 1090 WOLFSSL_API long wolfSSL_get_options(const WOLFSSL *s); 1091 WOLFSSL_API long wolfSSL_clear_options(WOLFSSL *s, long op); 856 1092 WOLFSSL_API long wolfSSL_clear_num_renegotiations(WOLFSSL *s); 857 1093 WOLFSSL_API long wolfSSL_total_renegotiations(WOLFSSL *s); … … 870 1106 871 1107 #define WOLFSSL_DEFAULT_CIPHER_LIST "" /* default all */ 872 #define WOLFSSL_RSA_F4 0x10001L873 1108 874 1109 enum { … … 881 1116 }; 882 1117 883 #if def OPENSSL_EXTRA1118 #if defined(OPENSSL_EXTRA) || defined(HAVE_WEBSERVER) 884 1119 /* seperated out from other enums because of size */ 885 1120 enum { … … 946 1181 SSL_ST_CONNECT = 0x1000, 947 1182 SSL_ST_ACCEPT = 0x2000, 1183 SSL_ST_MASK = 0x0FFF, 948 1184 949 1185 SSL_CB_LOOP = 0x01, … … 960 1196 SSL_CB_CONNECT_LOOP = (SSL_ST_CONNECT | SSL_CB_LOOP), 961 1197 SSL_CB_CONNECT_EXIT = (SSL_ST_CONNECT | SSL_CB_EXIT), 1198 SSL_CB_MODE_READ = 1, 1199 SSL_CB_MODE_WRITE = 2, 962 1200 963 1201 SSL_MODE_ENABLE_PARTIAL_WRITE = 2, … … 966 1204 BIO_CLOSE = 1, 967 1205 BIO_NOCLOSE = 0, 968 969 NID_undef = 0,970 1206 971 1207 X509_FILETYPE_PEM = 8, … … 1020 1256 X509_V_ERR_UNNESTED_RESOURCE, 1021 1257 1258 X509_R_CERT_ALREADY_IN_HASH_TABLE, 1259 1022 1260 XN_FLAG_SPC_EQ = (1 << 23), 1023 1261 XN_FLAG_ONELINE = 0, … … 1037 1275 since not using thread storage error queue */ 1038 1276 #include <stdio.h> 1039 WOLFSSL_API void wolfSSL_ERR_print_errors_fp( FILE*, int err);1277 WOLFSSL_API void wolfSSL_ERR_print_errors_fp(XFILE, int err); 1040 1278 #if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE) 1041 WOLFSSL_API void wolfSSL_ERR_dump_errors_fp( FILE*fp);1279 WOLFSSL_API void wolfSSL_ERR_dump_errors_fp(XFILE fp); 1042 1280 #endif 1043 1281 #endif … … 1167 1405 WOLFSSL_API void wolfSSL_set_psk_client_callback(WOLFSSL*, 1168 1406 wc_psk_client_callback); 1407 #ifdef WOLFSSL_TLS13 1408 typedef unsigned int (*wc_psk_client_tls13_callback)(WOLFSSL*, const char*, 1409 char*, unsigned int, unsigned char*, unsigned int, const char**); 1410 WOLFSSL_API void wolfSSL_CTX_set_psk_client_tls13_callback(WOLFSSL_CTX*, 1411 wc_psk_client_tls13_callback); 1412 WOLFSSL_API void wolfSSL_set_psk_client_tls13_callback(WOLFSSL*, 1413 wc_psk_client_tls13_callback); 1414 #endif 1169 1415 1170 1416 WOLFSSL_API const char* wolfSSL_get_psk_identity_hint(const WOLFSSL*); … … 1180 1426 WOLFSSL_API void wolfSSL_set_psk_server_callback(WOLFSSL*, 1181 1427 wc_psk_server_callback); 1428 #ifdef WOLFSSL_TLS13 1429 typedef unsigned int (*wc_psk_server_tls13_callback)(WOLFSSL*, const char*, 1430 unsigned char*, unsigned int, const char**); 1431 WOLFSSL_API void wolfSSL_CTX_set_psk_server_tls13_callback(WOLFSSL_CTX*, 1432 wc_psk_server_tls13_callback); 1433 WOLFSSL_API void wolfSSL_set_psk_server_tls13_callback(WOLFSSL*, 1434 wc_psk_server_tls13_callback); 1435 #endif 1182 1436 1183 1437 #define PSK_TYPES_DEFINED … … 1202 1456 WOLFSSL_BIO_SIZE = 17000 /* default BIO write size if not set */ 1203 1457 }; 1204 1205 #endif 1206 1458 #endif 1459 1460 WOLFSSL_API void wolfSSL_ERR_put_error(int lib, int fun, int err, 1461 const char* file, int line); 1462 WOLFSSL_API unsigned long wolfSSL_ERR_get_error_line(const char**, int*); 1207 1463 WOLFSSL_API unsigned long wolfSSL_ERR_get_error_line_data(const char**, int*, 1208 1464 const char**, int *); … … 1213 1469 1214 1470 WOLFSSL_API int wolfSSL_RAND_status(void); 1471 WOLFSSL_API int wolfSSL_RAND_pseudo_bytes(unsigned char* buf, int num); 1215 1472 WOLFSSL_API int wolfSSL_RAND_bytes(unsigned char* buf, int num); 1216 1473 WOLFSSL_API WOLFSSL_METHOD *wolfSSLv23_server_method(void); 1217 1474 WOLFSSL_API long wolfSSL_CTX_set_options(WOLFSSL_CTX*, long); 1475 WOLFSSL_API long wolfSSL_CTX_get_options(WOLFSSL_CTX* ctx); 1476 WOLFSSL_API long wolfSSL_CTX_clear_options(WOLFSSL_CTX*, long); 1477 1218 1478 #ifndef NO_CERTS 1219 WOLFSSL_API int wolfSSL_CTX_check_private_key( WOLFSSL_CTX*);1479 WOLFSSL_API int wolfSSL_CTX_check_private_key(const WOLFSSL_CTX*); 1220 1480 #endif /* !NO_CERTS */ 1221 1481 1222 1482 WOLFSSL_API void wolfSSL_ERR_free_strings(void); 1223 1483 WOLFSSL_API void wolfSSL_ERR_remove_state(unsigned long); 1224 WOLFSSL_API void wolfSSL_EVP_cleanup(void);1225 1484 WOLFSSL_API int wolfSSL_clear(WOLFSSL* ssl); 1226 1485 WOLFSSL_API int wolfSSL_state(WOLFSSL* ssl); … … 1237 1496 const unsigned char*, unsigned int); 1238 1497 WOLFSSL_API WOLFSSL_X509* wolfSSL_get_peer_certificate(WOLFSSL* ssl); 1498 WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_get_peer_cert_chain(const WOLFSSL*); 1239 1499 1240 1500 WOLFSSL_API int wolfSSL_want_read(WOLFSSL*); … … 1246 1506 WOLFSSL_API int wolfSSL_ASN1_GENERALIZEDTIME_print(WOLFSSL_BIO*, 1247 1507 const WOLFSSL_ASN1_GENERALIZEDTIME*); 1248 WOLFSSL_API int wolfSSL_sk_num(WOLFSSL_X509_REVOKED*); 1249 WOLFSSL_API void* wolfSSL_sk_value(WOLFSSL_X509_REVOKED*, int); 1508 WOLFSSL_API void wolfSSL_ASN1_GENERALIZEDTIME_free(WOLFSSL_ASN1_GENERALIZEDTIME*); 1509 WOLFSSL_API int wolfSSL_sk_num(WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)*); 1510 WOLFSSL_API void* wolfSSL_sk_value(WOLF_STACK_OF(WOLFSSL_ASN1_OBJECT)*, int); 1250 1511 1251 1512 /* stunnel 4.28 needs */ … … 1286 1547 WOLFSSL_API unsigned int wolfSSL_lib_version_hex(void); 1287 1548 1288 /* turn logging on, only if compiled in */1289 WOLFSSL_API int wolfSSL_Debugging_ON(void);1290 /* turn logging off */1291 WOLFSSL_API void wolfSSL_Debugging_OFF(void);1292 1293 1549 /* do accept or connect depedning on side */ 1294 1550 WOLFSSL_API int wolfSSL_negotiate(WOLFSSL* ssl); … … 1315 1571 WOLFSSL_API WOLFSSL_X509* wolfSSL_get_chain_X509(WOLFSSL_X509_CHAIN*, int idx); 1316 1572 /* free X509 */ 1317 WOLFSSL_API void wolfSSL_FreeX509(WOLFSSL_X509*); 1573 #define wolfSSL_FreeX509(x509) wolfSSL_X509_free((x509)) 1574 WOLFSSL_API void wolfSSL_X509_free(WOLFSSL_X509*); 1318 1575 /* get index cert in PEM */ 1319 1576 WOLFSSL_API int wolfSSL_get_chain_cert_pem(WOLFSSL_X509_CHAIN*, int idx, … … 1331 1588 WOLFSSL_API char* wolfSSL_X509_get_next_altname(WOLFSSL_X509*); 1332 1589 1590 WOLFSSL_API WOLFSSL_X509* wolfSSL_d2i_X509(WOLFSSL_X509** x509, 1591 const unsigned char** in, int len); 1333 1592 WOLFSSL_API WOLFSSL_X509* 1334 1593 wolfSSL_X509_d2i(WOLFSSL_X509** x509, const unsigned char* in, int len); 1594 WOLFSSL_API int wolfSSL_i2d_X509(WOLFSSL_X509* x509, unsigned char** out); 1595 WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL(WOLFSSL_X509_CRL **crl, 1596 const unsigned char *in, int len); 1597 #ifndef NO_FILESYSTEM 1598 WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL_fp(XFILE file, WOLFSSL_X509_CRL **crl); 1599 #endif 1600 WOLFSSL_API void wolfSSL_X509_CRL_free(WOLFSSL_X509_CRL *crl); 1601 1335 1602 #ifndef NO_FILESYSTEM 1336 1603 #ifndef NO_STDIO_FILESYSTEM 1337 1604 WOLFSSL_API WOLFSSL_X509* 1338 wolfSSL_X509_d2i_fp(WOLFSSL_X509** x509, FILE*file);1605 wolfSSL_X509_d2i_fp(WOLFSSL_X509** x509, XFILE file); 1339 1606 #endif 1340 1607 WOLFSSL_API WOLFSSL_X509* … … 1362 1629 WOLFSSL_API WC_PKCS12* wolfSSL_d2i_PKCS12_bio(WOLFSSL_BIO* bio, 1363 1630 WC_PKCS12** pkcs12); 1631 #ifndef NO_FILESYSTEM 1632 WOLFSSL_API WOLFSSL_X509_PKCS12* wolfSSL_d2i_PKCS12_fp(XFILE fp, 1633 WOLFSSL_X509_PKCS12** pkcs12); 1634 #endif 1364 1635 WOLFSSL_API int wolfSSL_PKCS12_parse(WC_PKCS12* pkcs12, const char* psw, 1365 WOLFSSL_EVP_PKEY** pkey, WOLFSSL_X509** cert, WOLF_STACK_OF(WOLFSSL_X509)** ca); 1636 WOLFSSL_EVP_PKEY** pkey, WOLFSSL_X509** cert, 1637 WOLF_STACK_OF(WOLFSSL_X509)** ca); 1638 WOLFSSL_API WC_PKCS12* wolfSSL_PKCS12_create(char* pass, char* name, 1639 WOLFSSL_EVP_PKEY* pkey, WOLFSSL_X509* cert, 1640 WOLF_STACK_OF(WOLFSSL_X509)* ca, 1641 int keyNID, int certNID, int itt, int macItt, int keytype); 1366 1642 WOLFSSL_API void wolfSSL_PKCS12_PBE_add(void); 1367 1643 … … 1374 1650 WOLFSSL_API int wolfSSL_SetTmpDH_buffer(WOLFSSL*, const unsigned char* b, long sz, 1375 1651 int format); 1652 WOLFSSL_API int wolfSSL_SetEnableDhKeyTest(WOLFSSL*, int); 1376 1653 #ifndef NO_FILESYSTEM 1377 1654 WOLFSSL_API int wolfSSL_SetTmpDH_file(WOLFSSL*, const char* f, int format); … … 1391 1668 WOLFSSL_API int wolfSSL_CTX_SetMinDhKey_Sz(WOLFSSL_CTX*, unsigned short); 1392 1669 WOLFSSL_API int wolfSSL_SetMinDhKey_Sz(WOLFSSL*, unsigned short); 1670 WOLFSSL_API int wolfSSL_CTX_SetMaxDhKey_Sz(WOLFSSL_CTX*, unsigned short); 1671 WOLFSSL_API int wolfSSL_SetMaxDhKey_Sz(WOLFSSL*, unsigned short); 1393 1672 WOLFSSL_API int wolfSSL_GetDhKey_Sz(WOLFSSL*); 1394 1673 #endif /* NO_DH */ … … 1426 1705 #elif !defined(WOLFSSL_MDK_ARM) && !defined(WOLFSSL_IAR_ARM) && \ 1427 1706 !defined(WOLFSSL_PICOTCP) && !defined(WOLFSSL_ROWLEY_ARM) && \ 1428 !defined(WOLFSSL_EMBOS) && !defined(WOLFSSL_FROSTED) 1707 !defined(WOLFSSL_EMBOS) && !defined(WOLFSSL_FROSTED) && \ 1708 !defined(WOLFSSL_CHIBIOS) && !defined(WOLFSSL_CONTIKI) 1429 1709 #include <sys/uio.h> 1430 1710 #endif … … 1445 1725 #endif 1446 1726 WOLFSSL_API int wolfSSL_CTX_load_verify_buffer(WOLFSSL_CTX*, 1727 const unsigned char*, long, int); 1728 WOLFSSL_API int wolfSSL_CTX_load_verify_chain_buffer_format(WOLFSSL_CTX*, 1447 1729 const unsigned char*, long, int); 1448 1730 WOLFSSL_API int wolfSSL_CTX_use_certificate_buffer(WOLFSSL_CTX*, … … 1458 1740 WOLFSSL_API int wolfSSL_use_certificate_buffer(WOLFSSL*, const unsigned char*, 1459 1741 long, int); 1742 WOLFSSL_API int wolfSSL_use_certificate_ASN1(WOLFSSL* ssl, unsigned char* der, 1743 int derSz); 1460 1744 WOLFSSL_API int wolfSSL_use_PrivateKey_buffer(WOLFSSL*, const unsigned char*, 1461 1745 long, int); … … 1514 1798 WOLFSSL_TLSV1_1 = 2, 1515 1799 WOLFSSL_TLSV1_2 = 3, 1800 WOLFSSL_TLSV1_3 = 4, 1516 1801 WOLFSSL_USER_CA = 1, /* user added as trusted */ 1517 1802 WOLFSSL_CHAIN_CA = 2 /* added to cache from trusted chain */ … … 1527 1812 WOLFSSL_API int wolfSSL_GetOutputSize(WOLFSSL*, int); 1528 1813 WOLFSSL_API int wolfSSL_GetMaxOutputSize(WOLFSSL*); 1814 WOLFSSL_API int wolfSSL_GetVersion(WOLFSSL* ssl); 1529 1815 WOLFSSL_API int wolfSSL_SetVersion(WOLFSSL* ssl, int version); 1530 WOLFSSL_API int wolfSSL_KeyPemToDer(const unsigned char*, int, 1531 unsigned char*, int, const char*); 1532 WOLFSSL_API int wolfSSL_CertPemToDer(const unsigned char*, int, 1533 unsigned char*, int, int); 1534 #if defined(WOLFSSL_CERT_EXT) || defined(WOLFSSL_PUB_PEM_TO_DER) 1535 #ifndef WOLFSSL_PEMPUBKEY_TODER_DEFINED 1536 #ifndef NO_FILESYSTEM 1537 WOLFSSL_API int wolfSSL_PemPubKeyToDer(const char* fileName, 1538 unsigned char* derBuf, int derSz); 1539 #endif 1540 WOLFSSL_API int wolfSSL_PubKeyPemToDer(const unsigned char*, int, 1541 unsigned char*, int); 1542 #define WOLFSSL_PEMPUBKEY_TODER_DEFINED 1543 #endif /* WOLFSSL_PEMPUBKEY_TODER_DEFINED */ 1544 #endif /* WOLFSSL_CERT_EXT || WOLFSSL_PUB_PEM_TO_DER*/ 1816 1817 /* moved to asn.c, old names kept for backwards compatability */ 1818 #define wolfSSL_KeyPemToDer wc_KeyPemToDer 1819 #define wolfSSL_CertPemToDer wc_CertPemToDer 1820 #define wolfSSL_PemPubKeyToDer wc_PemPubKeyToDer 1821 #define wolfSSL_PubKeyPemToDer wc_PubKeyPemToDer 1822 #define wolfSSL_PemCertToDer wc_PemCertToDer 1823 1545 1824 1546 1825 typedef void (*CallbackCACache)(unsigned char* der, int sz, int type); … … 1609 1888 wolfssl_triple_des, /* leading 3 (3des) not valid identifier */ 1610 1889 wolfssl_des40, 1890 #ifdef HAVE_IDEA 1611 1891 wolfssl_idea, 1892 #endif 1612 1893 wolfssl_aes, 1613 1894 wolfssl_aes_gcm, … … 1629 1910 1630 1911 /* Public Key Callback support */ 1912 #ifdef HAVE_PK_CALLBACKS 1913 #ifdef HAVE_ECC 1914 1915 struct ecc_key; 1916 1917 typedef int (*CallbackEccKeyGen)(WOLFSSL* ssl, struct ecc_key* key, 1918 unsigned int keySz, int ecc_curve, void* ctx); 1919 WOLFSSL_API void wolfSSL_CTX_SetEccKeyGenCb(WOLFSSL_CTX*, CallbackEccKeyGen); 1920 WOLFSSL_API void wolfSSL_SetEccKeyGenCtx(WOLFSSL* ssl, void *ctx); 1921 WOLFSSL_API void* wolfSSL_GetEccKeyGenCtx(WOLFSSL* ssl); 1922 1631 1923 typedef int (*CallbackEccSign)(WOLFSSL* ssl, 1632 1924 const unsigned char* in, unsigned int inSz, … … 1647 1939 WOLFSSL_API void* wolfSSL_GetEccVerifyCtx(WOLFSSL* ssl); 1648 1940 1649 struct ecc_key;1650 1941 typedef int (*CallbackEccSharedSecret)(WOLFSSL* ssl, struct ecc_key* otherKey, 1651 1942 unsigned char* pubKeyDer, unsigned int* pubKeySz, … … 1655 1946 WOLFSSL_API void wolfSSL_SetEccSharedSecretCtx(WOLFSSL* ssl, void *ctx); 1656 1947 WOLFSSL_API void* wolfSSL_GetEccSharedSecretCtx(WOLFSSL* ssl); 1657 1948 #endif 1949 1950 #ifndef NO_DH 1951 /* Public DH Key Callback support */ 1952 struct DhKey; 1953 typedef int (*CallbackDhAgree)(WOLFSSL* ssl, struct DhKey* key, 1954 const unsigned char* priv, unsigned int privSz, 1955 const unsigned char* otherPubKeyDer, unsigned int otherPubKeySz, 1956 unsigned char* out, unsigned int* outlen, 1957 void* ctx); 1958 WOLFSSL_API void wolfSSL_CTX_SetDhAgreeCb(WOLFSSL_CTX*, CallbackDhAgree); 1959 WOLFSSL_API void wolfSSL_SetDhAgreeCtx(WOLFSSL* ssl, void *ctx); 1960 WOLFSSL_API void* wolfSSL_GetDhAgreeCtx(WOLFSSL* ssl); 1961 #endif /* !NO_DH */ 1962 1963 #ifdef HAVE_ED25519 1658 1964 struct ed25519_key; 1659 1965 typedef int (*CallbackEd25519Sign)(WOLFSSL* ssl, … … 1676 1982 WOLFSSL_API void wolfSSL_SetEd25519VerifyCtx(WOLFSSL* ssl, void *ctx); 1677 1983 WOLFSSL_API void* wolfSSL_GetEd25519VerifyCtx(WOLFSSL* ssl); 1678 1984 #endif 1985 1986 #ifdef HAVE_CURVE25519 1679 1987 struct curve25519_key; 1988 1989 typedef int (*CallbackX25519KeyGen)(WOLFSSL* ssl, struct curve25519_key* key, 1990 unsigned int keySz, void* ctx); 1991 WOLFSSL_API void wolfSSL_CTX_SetX25519KeyGenCb(WOLFSSL_CTX*, CallbackX25519KeyGen); 1992 WOLFSSL_API void wolfSSL_SetX25519KeyGenCtx(WOLFSSL* ssl, void *ctx); 1993 WOLFSSL_API void* wolfSSL_GetX25519KeyGenCtx(WOLFSSL* ssl); 1994 1680 1995 typedef int (*CallbackX25519SharedSecret)(WOLFSSL* ssl, 1681 1996 struct curve25519_key* otherKey, … … 1688 2003 WOLFSSL_API void wolfSSL_SetX25519SharedSecretCtx(WOLFSSL* ssl, void *ctx); 1689 2004 WOLFSSL_API void* wolfSSL_GetX25519SharedSecretCtx(WOLFSSL* ssl); 1690 2005 #endif 2006 2007 #ifndef NO_RSA 1691 2008 typedef int (*CallbackRsaSign)(WOLFSSL* ssl, 1692 2009 const unsigned char* in, unsigned int inSz, … … 1704 2021 void* ctx); 1705 2022 WOLFSSL_API void wolfSSL_CTX_SetRsaVerifyCb(WOLFSSL_CTX*, CallbackRsaVerify); 2023 WOLFSSL_API void wolfSSL_CTX_SetRsaSignCheckCb(WOLFSSL_CTX*, CallbackRsaVerify); 1706 2024 WOLFSSL_API void wolfSSL_SetRsaVerifyCtx(WOLFSSL* ssl, void *ctx); 1707 2025 WOLFSSL_API void* wolfSSL_GetRsaVerifyCtx(WOLFSSL* ssl); … … 1726 2044 WOLFSSL_API void wolfSSL_CTX_SetRsaPssVerifyCb(WOLFSSL_CTX*, 1727 2045 CallbackRsaPssVerify); 2046 WOLFSSL_API void wolfSSL_CTX_SetRsaPssSignCheckCb(WOLFSSL_CTX*, 2047 CallbackRsaPssVerify); 1728 2048 WOLFSSL_API void wolfSSL_SetRsaPssVerifyCtx(WOLFSSL* ssl, void *ctx); 1729 2049 WOLFSSL_API void* wolfSSL_GetRsaPssVerifyCtx(WOLFSSL* ssl); … … 1749 2069 WOLFSSL_API void wolfSSL_SetRsaDecCtx(WOLFSSL* ssl, void *ctx); 1750 2070 WOLFSSL_API void* wolfSSL_GetRsaDecCtx(WOLFSSL* ssl); 1751 2071 #endif 2072 #endif /* HAVE_PK_CALLBACKS */ 1752 2073 1753 2074 #ifndef NO_CERTS … … 1855 2176 1856 2177 /* async additions */ 1857 WOLFSSL_API int wolfSSL_UseAsync(WOLFSSL*, int devId); 1858 WOLFSSL_API int wolfSSL_CTX_UseAsync(WOLFSSL_CTX*, int devId); 2178 #define wolfSSL_UseAsync wolfSSL_SetDevId 2179 #define wolfSSL_CTX_UseAsync wolfSSL_CTX_SetDevId 2180 WOLFSSL_API int wolfSSL_SetDevId(WOLFSSL*, int devId); 2181 WOLFSSL_API int wolfSSL_CTX_SetDevId(WOLFSSL_CTX*, int devId); 1859 2182 1860 2183 /* helpers to get device id and heap */ … … 1896 2219 WOLFSSL_API void wolfSSL_CTX_SNI_SetOptions(WOLFSSL_CTX* ctx, 1897 2220 unsigned char type, unsigned char options); 2221 WOLFSSL_API int wolfSSL_SNI_GetFromBuffer( 2222 const unsigned char* clientHello, unsigned int helloSz, 2223 unsigned char type, unsigned char* sni, unsigned int* inOutSz); 2224 2225 #endif /* NO_WOLFSSL_SERVER */ 1898 2226 1899 2227 /* SNI status */ … … 1909 2237 WOLFSSL_API unsigned short wolfSSL_SNI_GetRequest(WOLFSSL *ssl, 1910 2238 unsigned char type, void** data); 1911 WOLFSSL_API int wolfSSL_SNI_GetFromBuffer( 1912 const unsigned char* clientHello, unsigned int helloSz, 1913 unsigned char type, unsigned char* sni, unsigned int* inOutSz); 1914 1915 #endif 1916 #endif 2239 2240 #endif /* HAVE_SNI */ 1917 2241 1918 2242 /* Application-Layer Protocol Negotiation */ … … 1932 2256 }; 1933 2257 1934 #if defined( WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY)2258 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 1935 2259 typedef int (*CallbackALPNSelect)(WOLFSSL* ssl, const unsigned char** out, 1936 2260 unsigned char* outLen, const unsigned char* in, unsigned int inLen, … … 1959 2283 WOLFSSL_MFL_2_11 = 3, /* 2048 bytes */ 1960 2284 WOLFSSL_MFL_2_12 = 4, /* 4096 bytes */ 1961 WOLFSSL_MFL_2_13 = 5 /* 8192 bytes *//* wolfSSL ONLY!!! */ 2285 WOLFSSL_MFL_2_13 = 5, /* 8192 bytes *//* wolfSSL ONLY!!! */ 2286 WOLFSSL_MFL_2_8 = 6, /* 256 bytes *//* wolfSSL ONLY!!! */ 2287 WOLFSSL_MFL_MIN = WOLFSSL_MFL_2_9, 2288 WOLFSSL_MFL_MAX = WOLFSSL_MFL_2_8, 1962 2289 }; 1963 2290 … … 1968 2295 1969 2296 #endif 1970 #endif 2297 #endif /* HAVE_MAX_FRAGMENT */ 1971 2298 1972 2299 /* Truncated HMAC */ … … 2117 2444 #endif /* NO_WOLFSSL_CLIENT */ 2118 2445 2119 #ifndef NO_WOLFSSL_SERVER2120 2446 2121 2447 #define WOLFSSL_TICKET_NAME_SZ 16 … … 2129 2455 WOLFSSL_TICKET_RET_CREATE /* existing ticket ok and create new one */ 2130 2456 }; 2457 2458 #ifndef NO_WOLFSSL_SERVER 2131 2459 2132 2460 typedef int (*SessionTicketEncCb)(WOLFSSL*, … … 2232 2560 #endif 2233 2561 2234 #if defined(WOLFSSL_MYSQL_COMPATIBLE) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 2235 WOLFSSL_API char* wolfSSL_ASN1_TIME_to_string(WOLFSSL_ASN1_TIME* time, 2236 char* buf, int len); 2237 #endif /* WOLFSSL_MYSQL_COMPATIBLE */ 2238 2239 #ifdef OPENSSL_EXTRA 2240 2241 #ifndef NO_FILESYSTEM 2242 WOLFSSL_API long wolfSSL_BIO_set_fp(WOLFSSL_BIO *bio, XFILE fp, int c); 2243 WOLFSSL_API long wolfSSL_BIO_get_fp(WOLFSSL_BIO *bio, XFILE* fp); 2244 #endif 2562 #if defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) 2563 /* Smaller subset of X509 compatibility functions. Avoid increasing the size of 2564 * this subset and its memory usage */ 2565 2566 #include <wolfssl/openssl/asn1.h> 2567 struct WOLFSSL_X509_NAME_ENTRY { 2568 WOLFSSL_ASN1_OBJECT object; /* static object just for keeping grp, type */ 2569 WOLFSSL_ASN1_STRING data; 2570 WOLFSSL_ASN1_STRING* value; /* points to data, for lighttpd port */ 2571 int nid; /* i.e. ASN_COMMON_NAME */ 2572 int set; 2573 int size; 2574 }; 2575 #endif /* OPENSSL_ALL || OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ 2576 2577 2578 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL) 2579 2580 enum { 2581 WOLFSSL_SYS_ACCEPT = 0, 2582 WOLFSSL_SYS_BIND, 2583 WOLFSSL_SYS_CONNECT, 2584 WOLFSSL_SYS_FOPEN, 2585 WOLFSSL_SYS_FREAD, 2586 WOLFSSL_SYS_GETADDRINFO, 2587 WOLFSSL_SYS_GETSOCKOPT, 2588 WOLFSSL_SYS_GETSOCKNAME, 2589 WOLFSSL_SYS_GETHOSTBYNAME, 2590 WOLFSSL_SYS_GETNAMEINFO, 2591 WOLFSSL_SYS_GETSERVBYNAME, 2592 WOLFSSL_SYS_IOCTLSOCKET, 2593 WOLFSSL_SYS_LISTEN, 2594 WOLFSSL_SYS_OPENDIR, 2595 WOLFSSL_SYS_SETSOCKOPT, 2596 WOLFSSL_SYS_SOCKET 2597 }; 2598 2599 /* Object functions */ 2600 WOLFSSL_API const char * wolfSSL_OBJ_nid2sn(int n); 2601 WOLFSSL_API int wolfSSL_OBJ_obj2nid(const WOLFSSL_ASN1_OBJECT *o); 2602 WOLFSSL_API int wolfSSL_OBJ_sn2nid(const char *sn); 2603 2604 WOLFSSL_API char* wolfSSL_OBJ_nid2ln(int n); 2605 WOLFSSL_API int wolfSSL_OBJ_txt2nid(const char *sn); 2606 2607 WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_OBJ_nid2obj(int n); 2608 WOLFSSL_LOCAL WOLFSSL_ASN1_OBJECT* wolfSSL_OBJ_nid2obj_ex(int n, WOLFSSL_ASN1_OBJECT *arg_obj); 2609 WOLFSSL_API int wolfSSL_OBJ_obj2txt(char *buf, int buf_len, WOLFSSL_ASN1_OBJECT *a, int no_name); 2610 2611 WOLFSSL_API void wolfSSL_OBJ_cleanup(void); 2612 /* end of object functions */ 2245 2613 2246 2614 WOLFSSL_API unsigned long wolfSSL_ERR_peek_last_error_line(const char **file, int *line); … … 2249 2617 2250 2618 #ifndef NO_CERTS 2619 WOLFSSL_API WOLFSSL_X509_NAME_ENTRY* wolfSSL_X509_NAME_ENTRY_create_by_NID( 2620 WOLFSSL_X509_NAME_ENTRY** out, int nid, int type, 2621 unsigned char* data, int dataSz); 2622 WOLFSSL_API int wolfSSL_X509_NAME_add_entry(WOLFSSL_X509_NAME* name, 2623 WOLFSSL_X509_NAME_ENTRY* entry, int idx, int set); 2624 WOLFSSL_API int wolfSSL_X509_NAME_add_entry_by_txt(WOLFSSL_X509_NAME *name, 2625 const char *field, int type, const unsigned char *bytes, int len, int loc, 2626 int set); 2627 WOLFSSL_API int wolfSSL_X509_NAME_cmp(const WOLFSSL_X509_NAME* x, 2628 const WOLFSSL_X509_NAME* y); 2629 WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_NAME_new(void); 2251 2630 WOLFSSL_API int wolfSSL_check_private_key(const WOLFSSL* ssl); 2252 2631 WOLFSSL_API void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, … … 2255 2634 const WOLFSSL_EVP_MD* digest, unsigned char* buf, unsigned int* len); 2256 2635 WOLFSSL_API int wolfSSL_use_certificate(WOLFSSL* ssl, WOLFSSL_X509* x509); 2257 WOLFSSL_API int wolfSSL_use_certificate_ASN1(WOLFSSL* ssl, unsigned char* der,2258 int derSz);2259 2636 WOLFSSL_API int wolfSSL_use_PrivateKey(WOLFSSL* ssl, WOLFSSL_EVP_PKEY* pkey); 2260 2637 WOLFSSL_API int wolfSSL_use_PrivateKey_ASN1(int pri, WOLFSSL* ssl, … … 2275 2652 WOLFSSL_API void wolfSSL_CTX_set_cert_store(WOLFSSL_CTX* ctx, 2276 2653 WOLFSSL_X509_STORE* str); 2277 WOLFSSL_X509* wolfSSL_d2i_X509_bio(WOLFSSL_BIO* bio, WOLFSSL_X509** x509); 2654 WOLFSSL_API int wolfSSL_i2d_X509_bio(WOLFSSL_BIO* bio, WOLFSSL_X509* x509); 2655 #if !defined(NO_FILESYSTEM) 2656 WOLFSSL_API WOLFSSL_X509* wolfSSL_d2i_X509_fp(XFILE fp, 2657 WOLFSSL_X509** x509); 2658 #endif 2659 WOLFSSL_API WOLFSSL_X509* wolfSSL_d2i_X509_bio(WOLFSSL_BIO* bio, 2660 WOLFSSL_X509** x509); 2278 2661 WOLFSSL_API WOLFSSL_X509_STORE* wolfSSL_CTX_get_cert_store(WOLFSSL_CTX* ctx); 2279 2662 2663 WOLFSSL_API size_t wolfSSL_BIO_wpending(const WOLFSSL_BIO *bio); 2280 2664 WOLFSSL_API size_t wolfSSL_BIO_ctrl_pending(WOLFSSL_BIO *b); 2281 2665 WOLFSSL_API size_t wolfSSL_get_server_random(const WOLFSSL *ssl, … … 2283 2667 WOLFSSL_API size_t wolfSSL_get_client_random(const WOLFSSL* ssl, 2284 2668 unsigned char* out, size_t outSz); 2285 WOLFSSL_API pem_password_cb* wolfSSL_CTX_get_default_passwd_cb(WOLFSSL_CTX *ctx);2286 WOLFSSL_API void *wolfSSL_CTX_get_default_passwd_cb_userdata(WOLFSSL_CTX *ctx);2287 2669 WOLFSSL_API int wolfSSL_CTX_use_PrivateKey(WOLFSSL_CTX *ctx, WOLFSSL_EVP_PKEY *pkey); 2288 2670 WOLFSSL_API WOLFSSL_X509 *wolfSSL_PEM_read_bio_X509(WOLFSSL_BIO *bp, WOLFSSL_X509 **x, pem_password_cb *cb, void *u); 2289 2671 WOLFSSL_API WOLFSSL_X509 *wolfSSL_PEM_read_bio_X509_AUX 2290 2672 (WOLFSSL_BIO *bp, WOLFSSL_X509 **x, pem_password_cb *cb, void *u); 2673 #ifndef NO_FILESYSTEM 2674 WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_PEM_read_X509_CRL(XFILE fp, 2675 WOLFSSL_X509_CRL **x, pem_password_cb *cb, void *u); 2676 #endif 2677 WOLFSSL_API int wolfSSL_PEM_get_EVP_CIPHER_INFO(char* header, 2678 EncryptedInfo* cipher); 2679 WOLFSSL_API int wolfSSL_PEM_do_header(EncryptedInfo* cipher, 2680 unsigned char* data, long* len, 2681 pem_password_cb* callback, void* ctx); 2291 2682 2292 2683 /*lighttp compatibility */ 2293 2684 2294 #include <wolfssl/openssl/asn1.h> 2295 struct WOLFSSL_X509_NAME_ENTRY { 2296 WOLFSSL_ASN1_OBJECT* object; /* not defined yet */ 2297 WOLFSSL_ASN1_STRING data; 2298 WOLFSSL_ASN1_STRING* value; /* points to data, for lighttpd port */ 2299 int set; 2300 int size; 2301 }; 2302 2303 #if defined(HAVE_LIGHTY) || defined(WOLFSSL_MYSQL_COMPATIBLE) \ 2685 struct WOLFSSL_ASN1_BIT_STRING { 2686 int length; 2687 int type; 2688 char* data; 2689 long flags; 2690 }; 2691 2692 2693 #if defined(OPENSSL_EXTRA) \ 2694 || defined(OPENSSL_ALL) \ 2695 || defined(HAVE_LIGHTY) \ 2696 || defined(WOLFSSL_MYSQL_COMPATIBLE) \ 2304 2697 || defined(HAVE_STUNNEL) \ 2305 2698 || defined(WOLFSSL_NGINX) \ 2306 || defined(WOLFSSL_HAPROXY) \ 2307 || defined(OPENSSL_EXTRA) 2699 || defined(WOLFSSL_HAPROXY) 2700 WOLFSSL_API void wolfSSL_X509_NAME_ENTRY_free(WOLFSSL_X509_NAME_ENTRY* ne); 2701 WOLFSSL_API WOLFSSL_X509_NAME_ENTRY* wolfSSL_X509_NAME_ENTRY_new(void); 2308 2702 WOLFSSL_API void wolfSSL_X509_NAME_free(WOLFSSL_X509_NAME *name); 2309 2703 WOLFSSL_API char wolfSSL_CTX_use_certificate(WOLFSSL_CTX *ctx, WOLFSSL_X509 *x); 2310 2704 WOLFSSL_API int wolfSSL_BIO_read_filename(WOLFSSL_BIO *b, const char *name); 2311 2705 /* These are to be merged shortly */ 2312 WOLFSSL_API const char * wolfSSL_OBJ_nid2sn(int n);2313 WOLFSSL_API int wolfSSL_OBJ_obj2nid(const WOLFSSL_ASN1_OBJECT *o);2314 WOLFSSL_API int wolfSSL_OBJ_sn2nid(const char *sn);2315 WOLFSSL_API void wolfSSL_CTX_set_verify_depth(WOLFSSL_CTX *ctx,int depth);2316 2706 WOLFSSL_API void wolfSSL_set_verify_depth(WOLFSSL *ssl,int depth); 2317 2707 WOLFSSL_API void* wolfSSL_get_app_data( const WOLFSSL *ssl); … … 2321 2711 WOLFSSL_API void wolfSSL_sk_X509_NAME_pop_free(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk, void f (WOLFSSL_X509_NAME*)); 2322 2712 WOLFSSL_API unsigned char *wolfSSL_SHA1(const unsigned char *d, size_t n, unsigned char *md); 2713 WOLFSSL_API unsigned char *wolfSSL_SHA256(const unsigned char *d, size_t n, unsigned char *md); 2714 WOLFSSL_API unsigned char *wolfSSL_SHA384(const unsigned char *d, size_t n, unsigned char *md); 2715 WOLFSSL_API unsigned char *wolfSSL_SHA512(const unsigned char *d, size_t n, unsigned char *md); 2323 2716 WOLFSSL_API int wolfSSL_X509_check_private_key(WOLFSSL_X509*, WOLFSSL_EVP_PKEY*); 2324 2717 WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME) *wolfSSL_dup_CA_list( WOLF_STACK_OF(WOLFSSL_X509_NAME) *sk ); 2325 2326 /* end lighttpd*/ 2327 #endif 2328 #endif 2329 2330 #if defined(HAVE_STUNNEL) || defined(HAVE_LIGHTY) \ 2718 WOLFSSL_API int wolfSSL_X509_check_ca(WOLFSSL_X509 *x509); 2719 2720 #ifndef NO_FILESYSTEM 2721 WOLFSSL_API long wolfSSL_BIO_set_fp(WOLFSSL_BIO *bio, XFILE fp, int c); 2722 WOLFSSL_API long wolfSSL_BIO_get_fp(WOLFSSL_BIO *bio, XFILE* fp); 2723 #endif 2724 2725 #endif /* OPENSSL_EXTRA || OPENSSL_ALL || HAVE_LIGHTY || WOLFSSL_MYSQL_COMPATIBLE || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY */ 2726 2727 #endif /* OPENSSL_EXTRA || OPENSSL_ALL */ 2728 2729 2730 #if defined(OPENSSL_ALL) \ 2731 || defined(HAVE_STUNNEL) \ 2732 || defined(HAVE_LIGHTY) \ 2331 2733 || defined(WOLFSSL_MYSQL_COMPATIBLE) \ 2332 2734 || defined(WOLFSSL_HAPROXY) \ 2333 2735 || defined(OPENSSL_EXTRA) 2334 2736 2335 WOLFSSL_API char* wolfSSL_OBJ_nid2ln(int n);2336 WOLFSSL_API int wolfSSL_OBJ_txt2nid(const char *sn);2337 2737 WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new_file(const char *filename, const char *mode); 2338 2738 WOLFSSL_API long wolfSSL_CTX_set_tmp_dh(WOLFSSL_CTX*, WOLFSSL_DH*); … … 2341 2741 WOLFSSL_API WOLFSSL_DSA *wolfSSL_PEM_read_bio_DSAparams(WOLFSSL_BIO *bp, 2342 2742 WOLFSSL_DSA **x, pem_password_cb *cb, void *u); 2743 WOLFSSL_API int wolfSSL_PEM_write_bio_X509_REQ(WOLFSSL_BIO *bp,WOLFSSL_X509 *x); 2744 WOLFSSL_API int wolfSSL_PEM_write_bio_X509_AUX(WOLFSSL_BIO *bp,WOLFSSL_X509 *x); 2343 2745 WOLFSSL_API int wolfSSL_PEM_write_bio_X509(WOLFSSL_BIO *bp, WOLFSSL_X509 *x); 2344 WOLFSSL_API long wolfSSL_CTX_get_options(WOLFSSL_CTX* ctx);2345 2346 2347 2746 2348 2747 #endif /* HAVE_STUNNEL || HAVE_LIGHTY */ 2349 2748 2350 2351 #if defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 2749 #ifdef OPENSSL_ALL 2750 WOLFSSL_API int wolfSSL_i2d_X509_REQ(WOLFSSL_X509* req, unsigned char** out); 2751 WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_REQ_new(void); 2752 WOLFSSL_API void wolfSSL_X509_REQ_free(WOLFSSL_X509* req); 2753 WOLFSSL_API int wolfSSL_X509_REQ_sign(WOLFSSL_X509 *req, WOLFSSL_EVP_PKEY *pkey, 2754 const WOLFSSL_EVP_MD *md); 2755 WOLFSSL_API int wolfSSL_X509_REQ_set_subject_name(WOLFSSL_X509 *req, 2756 WOLFSSL_X509_NAME *name); 2757 WOLFSSL_API int wolfSSL_X509_REQ_set_pubkey(WOLFSSL_X509 *req, 2758 WOLFSSL_EVP_PKEY *pkey); 2759 #endif 2760 2761 2762 #if defined(OPENSSL_ALL) \ 2763 || defined(HAVE_STUNNEL) \ 2764 || defined(WOLFSSL_NGINX) \ 2765 || defined(WOLFSSL_HAPROXY) \ 2766 || defined(OPENSSL_EXTRA) \ 2767 || defined(HAVE_LIGHTY) 2352 2768 2353 2769 #include <wolfssl/openssl/crypto.h> … … 2359 2775 void *(*r) (void *, size_t, const char *, int), void (*f) (void *)); 2360 2776 2777 WOLFSSL_API void wolfSSL_CRYPTO_cleanup_all_ex_data(void); 2778 2779 WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_DH_1536_prime(WOLFSSL_BIGNUM* bn); 2361 2780 WOLFSSL_API WOLFSSL_DH *wolfSSL_DH_generate_parameters(int prime_len, int generator, 2362 2781 void (*callback) (int, int, void *), void *cb_arg); … … 2379 2798 WOLFSSL_API int wolfSSL_sk_X509_NAME_num(const WOLF_STACK_OF(WOLFSSL_X509_NAME) *s); 2380 2799 2800 WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_X509_new(void); 2381 2801 WOLFSSL_API int wolfSSL_sk_X509_num(const WOLF_STACK_OF(WOLFSSL_X509) *s); 2382 2802 … … 2389 2809 WOLFSSL_API int wolfSSL_CTX_add_session(WOLFSSL_CTX*, WOLFSSL_SESSION*); 2390 2810 2391 WOLFSSL_API WOLFSSL_CTX* wolfSSL_get_SSL_CTX(WOLFSSL* ssl);2392 2393 2811 WOLFSSL_API int wolfSSL_version(WOLFSSL*); 2394 2812 … … 2398 2816 2399 2817 WOLFSSL_API void* wolfSSL_sk_X509_value(WOLF_STACK_OF(WOLFSSL_X509)*, int); 2400 2401 WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509)* wolfSSL_get_peer_cert_chain(const WOLFSSL*);2402 2818 2403 2819 WOLFSSL_API void* wolfSSL_SESSION_get_ex_data(const WOLFSSL_SESSION*, int); … … 2421 2837 2422 2838 WOLFSSL_API VerifyCallback wolfSSL_CTX_get_verify_callback(WOLFSSL_CTX*); 2839 2840 WOLFSSL_API VerifyCallback wolfSSL_get_verify_callback(WOLFSSL*); 2423 2841 2424 2842 WOLFSSL_API void wolfSSL_CTX_set_servername_callback(WOLFSSL_CTX *, … … 2429 2847 WOLFSSL_API void wolfSSL_CTX_set_servername_arg(WOLFSSL_CTX *, void*); 2430 2848 2431 WOLFSSL_API void WOLFSSL_ERR_remove_thread_state(void*); 2849 WOLFSSL_API void wolfSSL_ERR_remove_thread_state(void*); 2850 2851 /* support for depricated old name */ 2852 #define WOLFSSL_ERR_remove_thread_state wolfSSL_ERR_remove_thread_state 2432 2853 2433 2854 #ifndef NO_FILESYSTEM 2434 WOLFSSL_API void wolfSSL_print_all_errors_fp(XFILE *fp); 2435 #endif 2436 2437 WOLFSSL_API long wolfSSL_CTX_clear_options(WOLFSSL_CTX*, long); 2855 WOLFSSL_API void wolfSSL_print_all_errors_fp(XFILE fp); 2856 #endif 2438 2857 2439 2858 WOLFSSL_API void wolfSSL_THREADID_set_callback(void (*threadid_func)(void*)); … … 2445 2864 2446 2865 WOLFSSL_API void wolfSSL_sk_X509_pop_free(WOLF_STACK_OF(WOLFSSL_X509)* sk, void f (WOLFSSL_X509*)); 2447 #endif /* HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY */ 2448 2449 #if defined(HAVE_STUNNEL) || defined(WOLFSSL_MYSQL_COMPATIBLE) \ 2450 || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 2866 #endif /* OPENSSL_ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || HAVE_LIGHTY */ 2867 2868 #if defined(OPENSSL_ALL) || \ 2869 defined(HAVE_STUNNEL) || defined(WOLFSSL_MYSQL_COMPATIBLE) || \ 2870 defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 2451 2871 2452 2872 WOLFSSL_API int wolfSSL_CTX_get_verify_mode(WOLFSSL_CTX* ctx); … … 2476 2896 WOLFSSL_API int wolfSSL_CTX_set_msg_callback_arg(WOLFSSL_CTX *ctx, void* arg); 2477 2897 WOLFSSL_API int wolfSSL_set_msg_callback_arg(WOLFSSL *ssl, void* arg); 2478 #endif2479 2480 #ifdef OPENSSL_EXTRA2481 2898 WOLFSSL_API unsigned long wolfSSL_ERR_peek_error_line_data(const char **file, 2482 2899 int *line, const char **data, int *flags); 2483 #endif 2484 2485 #if defined WOLFSSL_NGINX || defined WOLFSSL_HAPROXY 2900 WOLFSSL_API int wolfSSL_CTX_set_alpn_protos(WOLFSSL_CTX *ctx, 2901 const unsigned char *protos, unsigned int protos_len); 2902 WOLFSSL_API void *wolfSSL_OPENSSL_memdup(const void *data, 2903 size_t siz, const char* file, int line); 2904 WOLFSSL_API void wolfSSL_ERR_load_BIO_strings(void); 2905 #endif 2906 2907 #if defined(OPENSSL_ALL) \ 2908 || defined(WOLFSSL_NGINX) \ 2909 || defined(WOLFSSL_HAPROXY) \ 2910 || defined(OPENSSL_EXTRA) 2911 WOLFSSL_API void wolfSSL_OPENSSL_config(char *config_name); 2912 #endif 2913 2914 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 2486 2915 /* Not an OpenSSL API. */ 2487 2916 WOLFSSL_LOCAL int wolfSSL_get_ocsp_response(WOLFSSL* ssl, byte** response); … … 2490 2919 /* Not an OpenSSL API. */ 2491 2920 WOLFSSL_API int wolfSSL_set_ocsp_url(WOLFSSL* ssl, char* url); 2492 2921 #endif 2922 2923 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) \ 2924 || defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY) 2493 2925 WOLFSSL_API WOLF_STACK_OF(WOLFSSL_CIPHER) *wolfSSL_get_ciphers_compat(const WOLFSSL *ssl); 2494 WOLFSSL_API void wolfSSL_OPENSSL_config(char *config_name);2495 2926 WOLFSSL_API int wolfSSL_X509_get_ex_new_index(int idx, void *arg, void *a, 2496 2927 void *b, void *c); … … 2527 2958 #endif 2528 2959 2529 #ifdef HAVE_OCSP 2960 #if defined(HAVE_OCSP) || defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL) || \ 2961 defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 2530 2962 WOLFSSL_API int wolfSSL_CTX_get_extra_chain_certs(WOLFSSL_CTX* ctx, 2531 2963 WOLF_STACK_OF(X509)** chain); … … 2551 2983 WOLFSSL_X509 *cert); 2552 2984 2553 #endif /* WOLFSSL_NGINX */ 2985 #endif /* OPENSSL_ALL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || 2986 OPENSSL_EXTRA || HAVE_LIGHTY*/ 2554 2987 2555 2988 WOLFSSL_API void wolfSSL_get0_alpn_selected(const WOLFSSL *ssl, … … 2584 3017 2585 3018 #ifdef OPENSSL_EXTRA 2586 #if defined( WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY)3019 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 2587 3020 WOLFSSL_API const unsigned char *SSL_SESSION_get0_id_context( 2588 3021 const WOLFSSL_SESSION *sess, unsigned int *sid_ctx_length); … … 2597 3030 WOLFSSL_API void *X509_get_X509_PUBKEY(void * x); 2598 3031 WOLFSSL_API int X509_PUBKEY_get0_param(WOLFSSL_ASN1_OBJECT **ppkalg, const unsigned char **pk, int *ppklen, void **pa, WOLFSSL_EVP_PKEY *pub); 2599 WOLFSSL_API int EVP_PKEY_bits(WOLFSSL_EVP_PKEY *pkey);2600 WOLFSSL_API int i2d_X509(WOLFSSL_X509 *x, unsigned char **out);2601 3032 WOLFSSL_API int i2t_ASN1_OBJECT(char *buf, int buf_len, WOLFSSL_ASN1_OBJECT *a); 2602 3033 WOLFSSL_API void SSL_CTX_set_tmp_dh_callback(WOLFSSL_CTX *ctx, WOLFSSL_DH *(*dh) (WOLFSSL *ssl, int is_export, int keylength)); 2603 3034 WOLFSSL_API WOLF_STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); 2604 3035 WOLFSSL_API int X509_STORE_load_locations(WOLFSSL_X509_STORE *ctx, const char *file, const char *dir); 3036 WOLFSSL_API int wolfSSL_X509_STORE_add_crl(WOLFSSL_X509_STORE *ctx, WOLFSSL_X509_CRL *x); 2605 3037 WOLFSSL_API int wolfSSL_sk_SSL_CIPHER_num(const void * p); 2606 3038 WOLFSSL_API int wolfSSL_sk_SSL_COMP_zero(WOLFSSL_STACK* st); 2607 3039 WOLFSSL_API WOLFSSL_CIPHER* wolfSSL_sk_SSL_CIPHER_value(void *ciphers, int idx); 2608 3040 WOLFSSL_API void ERR_load_SSL_strings(void); 3041 WOLFSSL_API void wolfSSL_EC_POINT_dump(const char *msg, const WOLFSSL_EC_POINT *p); 3042 3043 WOLFSSL_API const char *wolfSSL_ASN1_tag2str(int tag); 3044 WOLFSSL_API int wolfSSL_ASN1_STRING_print_ex(WOLFSSL_BIO *out, WOLFSSL_ASN1_STRING *str, unsigned long flags); 3045 WOLFSSL_API int wolfSSL_ASN1_TIME_get_length(WOLFSSL_ASN1_TIME *t); 3046 WOLFSSL_API unsigned char* wolfSSL_ASN1_TIME_get_data(WOLFSSL_ASN1_TIME *t); 3047 WOLFSSL_API WOLFSSL_ASN1_TIME *wolfSSL_ASN1_TIME_to_generalizedtime(WOLFSSL_ASN1_TIME *t, 3048 WOLFSSL_ASN1_TIME **out); 3049 WOLFSSL_API int wolfSSL_i2c_ASN1_INTEGER(WOLFSSL_ASN1_INTEGER *a, unsigned char **pp); 3050 WOLFSSL_API int wolfSSL_X509_CA_num(WOLFSSL_X509_STORE *store); 3051 WOLFSSL_API long wolfSSL_X509_get_version(const WOLFSSL_X509 *x); 3052 WOLFSSL_API int wolfSSL_X509_get_signature_nid(const WOLFSSL_X509* x); 3053 3054 WOLFSSL_API int wolfSSL_PEM_write_bio_PKCS8PrivateKey(WOLFSSL_BIO* bio, 3055 WOLFSSL_EVP_PKEY* pkey, const WOLFSSL_EVP_CIPHER* enc, char* passwd, 3056 int passwdSz, pem_password_cb* cb, void* ctx); 3057 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PKCS8PrivateKey_bio(WOLFSSL_BIO* bio, 3058 WOLFSSL_EVP_PKEY** pkey, pem_password_cb* cb, void* u); 3059 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_AutoPrivateKey( 3060 WOLFSSL_EVP_PKEY** pkey, const unsigned char** data, long length); 3061 2609 3062 #endif /* OPENSSL_EXTRA */ 3063 3064 #ifdef HAVE_PK_CALLBACKS 3065 WOLFSSL_API int wolfSSL_CTX_IsPrivatePkSet(WOLFSSL_CTX* ctx); 3066 #endif 2610 3067 2611 3068 #ifdef __cplusplus
Note:
See TracChangeset
for help on using the changeset viewer.