Changeset 464 for azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/ssl.h
- Timestamp:
- Jun 22, 2021, 9:00:19 PM (3 years ago)
- Location:
- azure_iot_hub_f767zi/trunk/wolfssl-4.7.0
- Files:
-
- 1 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
azure_iot_hub_f767zi/trunk/wolfssl-4.7.0/wolfssl/ssl.h
r457 r464 41 41 #endif 42 42 43 #ifdef WOLF_CRYPTO_CB 44 #include <wolfssl/wolfcrypt/cryptocb.h> 45 #endif 46 43 47 /* used internally by wolfSSL while OpenSSL types aren't */ 44 48 #include <wolfssl/callbacks.h> … … 99 103 #endif 100 104 105 /* LHASH is implemented as a stack */ 106 typedef struct WOLFSSL_STACK WOLFSSL_LHASH; 107 #ifndef WOLF_LHASH_OF 108 #define WOLF_LHASH_OF(x) WOLFSSL_LHASH 109 #endif 110 111 #ifndef WOLF_STACK_OF 112 #define WOLF_STACK_OF(x) WOLFSSL_STACK 113 #endif 114 #ifndef DECLARE_STACK_OF 115 #define DECLARE_STACK_OF(x) WOLF_STACK_OF(x); 116 #endif 117 101 118 #ifndef WOLFSSL_WOLFSSL_TYPE_DEFINED 102 119 #define WOLFSSL_WOLFSSL_TYPE_DEFINED … … 172 189 typedef struct WOLFSSL_BIO_METHOD WOLFSSL_BIO_METHOD; 173 190 typedef struct WOLFSSL_X509_EXTENSION WOLFSSL_X509_EXTENSION; 174 typedef struct WOLFSSL_CONF_VALUE WOLFSSL_CONF_VALUE;175 191 typedef struct WOLFSSL_ASN1_OBJECT WOLFSSL_ASN1_OBJECT; 176 192 typedef struct WOLFSSL_ASN1_OTHERNAME WOLFSSL_ASN1_OTHERNAME; … … 186 202 typedef struct WOLFSSL_ASN1_BIT_STRING WOLFSSL_ASN1_BIT_STRING; 187 203 typedef struct WOLFSSL_ASN1_TYPE WOLFSSL_ASN1_TYPE; 204 typedef struct WOLFSSL_X509_ATTRIBUTE WOLFSSL_X509_ATTRIBUTE; 188 205 189 206 typedef struct WOLFSSL_GENERAL_NAME WOLFSSL_GENERAL_NAME; … … 192 209 typedef struct WOLFSSL_ACCESS_DESCRIPTION WOLFSSL_ACCESS_DESCRIPTION; 193 210 194 #if defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA) 211 #if defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) 195 212 196 213 struct WOLFSSL_AUTHORITY_KEYID { … … 275 292 WOLFSSL_ASN1_INTEGER *pathlen; 276 293 #endif 277 unsigned char dynamic; /* if 1 then obj was dynamically created, 0 otherwise */ 294 unsigned char dynamic; /* Use WOLFSSL_ASN1_DYNAMIC and WOLFSSL_ASN1_DYNAMIC_DATA 295 * to determine what needs to be freed. */ 278 296 279 297 #if defined(WOLFSSL_APACHE_HTTPD) … … 312 330 WOLFSSL_ASN1_STRING* sequence; 313 331 } value; 332 }; 333 334 struct WOLFSSL_X509_ATTRIBUTE { 335 WOLFSSL_ASN1_OBJECT *object; 336 WOLFSSL_ASN1_TYPE *value; 337 WOLF_STACK_OF(WOLFSSL_ASN1_TYPE) *set; 314 338 }; 315 339 … … 468 492 void* ptr; /* WOLFSSL, file descriptor, MD, or mem buf */ 469 493 void* usrCtx; /* user set pointer */ 494 const char* ip; /* IP address for wolfIO_TcpConnect */ 495 word16 port; /* Port for wolfIO_TcpConnect */ 470 496 char* infoArg; /* BIO callback argument */ 471 497 wolf_bio_info_cb infoCb; /* BIO callback */ … … 495 521 } WOLFSSL_COMP; 496 522 523 #define WOLFSSL_X509_L_FILE_LOAD 0x1 524 #define WOLFSSL_X509_L_ADD_DIR 0x2 525 #define WOLFSSL_X509_L_ADD_STORE 0x3 526 #define WOLFSSL_X509_L_LOAD_STORE 0x4 527 497 528 struct WOLFSSL_X509_LOOKUP_METHOD { 498 529 int type; … … 507 538 WOLFSSL_CERT_MANAGER* cm; 508 539 WOLFSSL_X509_LOOKUP lookup; 509 #if def OPENSSL_EXTRA540 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) 510 541 int isDynamic; 511 542 WOLFSSL_X509_VERIFY_PARAM* param; /* certificate validation parameter */ … … 517 548 WOLFSSL_CRYPTO_EX_DATA ex_data; 518 549 #endif 519 #if defined(OPENSSL_EXTRA) && defined(HAVE_CRL) 520 WOLFSSL_X509_CRL *crl; 521 #endif 522 }; 523 524 #ifdef OPENSSL_EXTRA 550 #if (defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL)) && defined(HAVE_CRL) 551 WOLFSSL_X509_CRL *crl; /* points to cm->crl */ 552 #endif 553 }; 554 555 #define WOLFSSL_NO_WILDCARDS 0x4 556 557 #if defined(OPENSSL_ALL) || defined(OPENSSL_EXTRA) || \ 558 defined(WOLFSSL_WPAS_SMALL) || defined(WOLFSSL_IP_ALT_NAME) 559 #define WOLFSSL_MAX_IPSTR 46 /* max ip size IPv4 mapped IPv6 */ 560 #endif /* OPENSSL_ALL || WOLFSSL_IP_ALT_NAME */ 561 562 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) 525 563 #define WOLFSSL_USE_CHECK_TIME 0x2 526 564 #define WOLFSSL_NO_CHECK_TIME 0x200000 527 #define WOLFSSL_NO_WILDCARDS 0x4528 565 #define WOLFSSL_HOST_NAME_MAX 256 529 #define WOLFSSL_MAX_IPSTR 46 /* max ip size IPv4 mapped IPv6 */530 566 struct WOLFSSL_X509_VERIFY_PARAM { 531 567 time_t check_time; … … 535 571 char ipasc[WOLFSSL_MAX_IPSTR]; 536 572 }; 537 #endif 573 #endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL */ 538 574 539 575 typedef struct WOLFSSL_ALERT { … … 710 746 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_1_client_method(void); 711 747 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_method(void); 712 WOLFSSL_A PI WOLFSSL_METHOD *wolfTLSv1_2_server_method(void);748 WOLFSSL_ABI WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_server_method(void); 713 749 WOLFSSL_ABI WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_2_client_method(void); 714 750 #ifdef WOLFSSL_TLS13 715 751 WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_method(void); 716 WOLFSSL_A PI WOLFSSL_METHOD *wolfTLSv1_3_server_method(void);752 WOLFSSL_ABI WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_server_method(void); 717 753 WOLFSSL_ABI WOLFSSL_API WOLFSSL_METHOD *wolfTLSv1_3_client_method(void); 718 754 #endif … … 743 779 #endif /* WOLFSSL_DTLS_EXPORT_TYPES */ 744 780 745 WOLFSSL_API int wolfSSL_dtls_import(WOLFSSL* ssl, unsigned char* buf,781 WOLFSSL_API int wolfSSL_dtls_import(WOLFSSL* ssl, const unsigned char* buf, 746 782 unsigned int sz); 747 783 WOLFSSL_API int wolfSSL_CTX_dtls_set_export(WOLFSSL_CTX* ctx, … … 789 825 #define WOLFSSL_LOAD_VERIFY_DEFAULT_FLAGS WOLFSSL_LOAD_FLAG_NONE 790 826 #endif 827 828 WOLFSSL_API long wolfSSL_get_verify_depth(WOLFSSL* ssl); 829 WOLFSSL_API long wolfSSL_CTX_get_verify_depth(WOLFSSL_CTX* ctx); 830 WOLFSSL_API void wolfSSL_CTX_set_verify_depth(WOLFSSL_CTX *ctx,int depth); 791 831 #endif /* !NO_CERTS */ 832 833 #define WOLFSSL_CIPHER_SUITE_FLAG_NONE 0x0 834 #define WOLFSSL_CIPHER_SUITE_FLAG_NAMEALIAS 0x1 792 835 793 836 #if !defined(NO_FILESYSTEM) && !defined(NO_CERTS) … … 806 849 WOLFSSL_API int wolfSSL_CTX_use_RSAPrivateKey_file(WOLFSSL_CTX*, const char*, int); 807 850 808 WOLFSSL_API long wolfSSL_get_verify_depth(WOLFSSL* ssl);809 WOLFSSL_API long wolfSSL_CTX_get_verify_depth(WOLFSSL_CTX* ctx);810 WOLFSSL_API void wolfSSL_CTX_set_verify_depth(WOLFSSL_CTX *ctx,int depth);811 851 WOLFSSL_ABI WOLFSSL_API int wolfSSL_use_certificate_file(WOLFSSL*, const char*, 812 852 int); … … 853 893 WOLFSSL_API const char* wolfSSL_get_cipher_name_iana_from_suite( 854 894 const unsigned char, const unsigned char); 895 WOLFSSL_API int wolfSSL_get_cipher_suite_from_name(const char* name, 896 byte* cipherSuite0, byte* cipherSuite, int* flags); 855 897 WOLFSSL_API const char* wolfSSL_get_shared_ciphers(WOLFSSL* ssl, char* buf, 856 898 int len); … … 862 904 WOLFSSL_ABI WOLFSSL_API int wolfSSL_read(WOLFSSL*, void*, int); 863 905 WOLFSSL_API int wolfSSL_peek(WOLFSSL*, void*, int); 864 WOLFSSL_A PI int wolfSSL_accept(WOLFSSL*);906 WOLFSSL_ABI WOLFSSL_API int wolfSSL_accept(WOLFSSL*); 865 907 WOLFSSL_API int wolfSSL_CTX_mutual_auth(WOLFSSL_CTX* ctx, int req); 866 908 WOLFSSL_API int wolfSSL_mutual_auth(WOLFSSL* ssl, int req); … … 885 927 WOLFSSL_API int wolfSSL_set_groups(WOLFSSL* ssl, int* groups, int count); 886 928 929 #ifdef OPENSSL_EXTRA 930 WOLFSSL_API int wolfSSL_CTX_set1_groups(WOLFSSL_CTX* ctx, int* groups, 931 int count); 932 WOLFSSL_API int wolfSSL_set1_groups(WOLFSSL* ssl, int* groups, int count); 933 #endif 934 887 935 WOLFSSL_API int wolfSSL_connect_TLSv13(WOLFSSL*); 888 936 WOLFSSL_API int wolfSSL_accept_TLSv13(WOLFSSL*); … … 892 940 unsigned int sz); 893 941 WOLFSSL_API int wolfSSL_set_max_early_data(WOLFSSL* ssl, unsigned int sz); 894 WOLFSSL_API int wolfSSL_write_early_data(WOLFSSL*, const void*, int, int*); 895 WOLFSSL_API int wolfSSL_read_early_data(WOLFSSL*, void*, int, int*); 896 #endif 897 #endif 942 WOLFSSL_API int wolfSSL_write_early_data(WOLFSSL* ssl, const void* data, 943 int sz, int* outSz); 944 WOLFSSL_API int wolfSSL_read_early_data(WOLFSSL* ssl, void* data, int sz, 945 int* outSz); 946 #endif /* WOLFSSL_EARLY_DATA */ 947 #endif /* WOLFSSL_TLS13 */ 898 948 WOLFSSL_ABI WOLFSSL_API void wolfSSL_CTX_free(WOLFSSL_CTX*); 899 949 WOLFSSL_ABI WOLFSSL_API void wolfSSL_free(WOLFSSL*); … … 919 969 WOLFSSL_BIO**, size_t); 920 970 921 WOLFSSL_API int wolfSSL_RSA_padding_add_PKCS1_PSS(WOLFSSL_RSA *rsa, unsigned char *EM, 971 WOLFSSL_API int wolfSSL_RSA_padding_add_PKCS1_PSS(WOLFSSL_RSA *rsa, 972 unsigned char *EM, 922 973 const unsigned char *mHash, 923 const WOLFSSL_EVP_MD *Hash, int saltLen); 974 const WOLFSSL_EVP_MD *hashAlg, 975 int saltLen); 924 976 WOLFSSL_API int wolfSSL_RSA_verify_PKCS1_PSS(WOLFSSL_RSA *rsa, const unsigned char *mHash, 925 977 const WOLFSSL_EVP_MD *hashAlg, … … 970 1022 WOLFSSL_API void wolfSSL_set_verify(WOLFSSL*, int, VerifyCallback verify_callback); 971 1023 WOLFSSL_API void wolfSSL_set_verify_result(WOLFSSL*, long); 1024 1025 #if defined(OPENSSL_EXTRA) && !defined(NO_CERTS) && \ 1026 defined(WOLFSSL_TLS13) && defined(WOLFSSL_POST_HANDSHAKE_AUTH) 1027 WOLFSSL_API int wolfSSL_verify_client_post_handshake(WOLFSSL*); 1028 WOLFSSL_API int wolfSSL_CTX_set_post_handshake_auth(WOLFSSL_CTX*, int); 1029 WOLFSSL_API int wolfSSL_set_post_handshake_auth(WOLFSSL*, int); 1030 #endif 1031 972 1032 WOLFSSL_API void wolfSSL_SetCertCbCtx(WOLFSSL*, void*); 973 1033 … … 1008 1068 WOLFSSL_API int wolfSSL_CTX_set_cipher_list(WOLFSSL_CTX*, const char*); 1009 1069 WOLFSSL_API int wolfSSL_set_cipher_list(WOLFSSL*, const char*); 1070 1071 #ifdef HAVE_KEYING_MATERIAL 1072 /* Keying Material Exporter for TLS */ 1073 WOLFSSL_API int wolfSSL_export_keying_material(WOLFSSL *ssl, 1074 unsigned char *out, size_t outLen, 1075 const char *label, size_t labelLen, 1076 const unsigned char *context, size_t contextLen, 1077 int use_context); 1078 #endif /* HAVE_KEYING_MATERIAL */ 1010 1079 1011 1080 /* Nonblocking DTLS helper functions */ … … 1066 1135 /* extras */ 1067 1136 1068 1069 /* for now LHASH is not implemented */1070 typedef int WOLFSSL_LHASH;1071 #ifndef WOLF_LHASH_OF1072 #define WOLF_LHASH_OF(x) WOLFSSL_LHASH1073 #endif1074 1075 #ifndef WOLF_STACK_OF1076 #define WOLF_STACK_OF(x) WOLFSSL_STACK1077 #endif1078 #ifndef DECLARE_STACK_OF1079 #define DECLARE_STACK_OF(x) WOLF_STACK_OF(x);1080 #endif1081 1082 1137 WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_new_node(void* heap); 1083 1138 WOLFSSL_API void wolfSSL_sk_free(WOLFSSL_STACK* sk); 1084 1139 WOLFSSL_API void wolfSSL_sk_free_node(WOLFSSL_STACK* in); 1140 WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_dup(WOLFSSL_STACK* sk); 1085 1141 WOLFSSL_API int wolfSSL_sk_push_node(WOLFSSL_STACK** stack, WOLFSSL_STACK* in); 1086 1142 WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_get_node(WOLFSSL_STACK* sk, int idx); … … 1103 1159 WOLFSSL_X509* x509); 1104 1160 WOLFSSL_API WOLFSSL_X509* wolfSSL_sk_X509_pop(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk); 1105 WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_X509_dup(WOLFSSL_STACK* sk);1106 1161 WOLFSSL_API void wolfSSL_sk_X509_free(WOLF_STACK_OF(WOLFSSL_X509_NAME)* sk); 1107 1162 WOLFSSL_API WOLFSSL_GENERAL_NAME* wolfSSL_GENERAL_NAME_new(void); 1108 1163 WOLFSSL_API void wolfSSL_GENERAL_NAME_free(WOLFSSL_GENERAL_NAME* gn); 1109 WOLFSSL_API int wolfSSL_sk_GENERAL_NAME_push(WOLF_STACK_OF(WOLFSSL_GENERAL_NAME)* sk, 1110 WOLFSSL_GENERAL_NAME* gn); 1164 WOLFSSL_API WOLFSSL_GENERAL_NAMES* wolfSSL_GENERAL_NAMES_dup( 1165 WOLFSSL_GENERAL_NAMES* gns); 1166 WOLFSSL_API int wolfSSL_sk_GENERAL_NAME_push(WOLFSSL_GENERAL_NAMES* sk, 1167 WOLFSSL_GENERAL_NAME* gn); 1111 1168 WOLFSSL_API WOLFSSL_GENERAL_NAME* wolfSSL_sk_GENERAL_NAME_value( 1112 1169 WOLFSSL_STACK* sk, int i); … … 1130 1187 WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_EXTENSION)* wolfSSL_sk_X509_EXTENSION_new_null(void); 1131 1188 WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_ASN1_OBJECT_new(void); 1189 WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_ASN1_OBJECT_dup(WOLFSSL_ASN1_OBJECT* obj); 1132 1190 WOLFSSL_API void wolfSSL_ASN1_OBJECT_free(WOLFSSL_ASN1_OBJECT* obj); 1133 1191 WOLFSSL_API WOLFSSL_STACK* wolfSSL_sk_new_asn1_obj(void); … … 1141 1199 void (*f)(WOLFSSL_ASN1_OBJECT*)); 1142 1200 WOLFSSL_API int wolfSSL_ASN1_STRING_to_UTF8(unsigned char **out, WOLFSSL_ASN1_STRING *in); 1201 WOLFSSL_API int wolfSSL_ASN1_UNIVERSALSTRING_to_string(WOLFSSL_ASN1_STRING *s); 1143 1202 WOLFSSL_API int wolfSSL_sk_X509_EXTENSION_num(WOLF_STACK_OF(WOLFSSL_X509_EXTENSION)* sk); 1144 1203 WOLFSSL_API WOLFSSL_X509_EXTENSION* wolfSSL_sk_X509_EXTENSION_value( … … 1154 1213 WOLFSSL_API void wolfSSL_set_accept_state(WOLFSSL*); 1155 1214 WOLFSSL_API int wolfSSL_session_reused(WOLFSSL*); 1215 WOLFSSL_API int wolfSSL_SESSION_up_ref(WOLFSSL_SESSION* session); 1156 1216 WOLFSSL_API WOLFSSL_SESSION* wolfSSL_SESSION_dup(WOLFSSL_SESSION* session); 1217 WOLFSSL_API WOLFSSL_SESSION* wolfSSL_SESSION_new(void); 1157 1218 WOLFSSL_API void wolfSSL_SESSION_free(WOLFSSL_SESSION* session); 1158 1219 WOLFSSL_API int wolfSSL_is_init_finished(WOLFSSL*); 1159 1220 1160 WOLFSSL_API const char* wolfSSL_get_version( WOLFSSL*);1221 WOLFSSL_API const char* wolfSSL_get_version(const WOLFSSL*); 1161 1222 WOLFSSL_API int wolfSSL_get_current_cipher_suite(WOLFSSL* ssl); 1162 1223 WOLFSSL_API WOLFSSL_CIPHER* wolfSSL_get_current_cipher(WOLFSSL*); … … 1254 1315 #ifndef NO_FILESYSTEM 1255 1316 WOLFSSL_API WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_file(void); 1317 WOLFSSL_API WOLFSSL_BIO *wolfSSL_BIO_new_fd(int fd, int close_flag); 1256 1318 #endif 1257 1319 1258 1320 WOLFSSL_API WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_bio(void); 1259 1321 WOLFSSL_API WOLFSSL_BIO_METHOD *wolfSSL_BIO_s_socket(void); 1322 1323 WOLFSSL_API WOLFSSL_BIO *wolfSSL_BIO_new_connect(const char *str); 1324 WOLFSSL_API long wolfSSL_BIO_set_conn_port(WOLFSSL_BIO *b, char* port); 1325 WOLFSSL_API long wolfSSL_BIO_do_connect(WOLFSSL_BIO *b); 1260 1326 1261 1327 WOLFSSL_API long wolfSSL_BIO_ctrl(WOLFSSL_BIO *bp, int cmd, long larg, void *parg); … … 1313 1379 WOLFSSL_API int wolfSSL_i2d_X509_NAME(WOLFSSL_X509_NAME* n, 1314 1380 unsigned char** out); 1381 WOLFSSL_API WOLFSSL_X509_NAME *wolfSSL_d2i_X509_NAME(WOLFSSL_X509_NAME **name, 1382 unsigned char **in, long length); 1315 1383 #ifndef NO_RSA 1316 1384 WOLFSSL_API int wolfSSL_RSA_print(WOLFSSL_BIO* bio, WOLFSSL_RSA* rsa, int offset); … … 1318 1386 WOLFSSL_API int wolfSSL_X509_print_ex(WOLFSSL_BIO* bio, WOLFSSL_X509* x509, 1319 1387 unsigned long nmflags, unsigned long cflag); 1388 #ifndef NO_FILESYSTEM 1389 WOLFSSL_API int wolfSSL_X509_print_fp(XFILE fp, WOLFSSL_X509 *x509); 1390 #endif 1391 WOLFSSL_API int wolfSSL_X509_signature_print(WOLFSSL_BIO *bp, 1392 const WOLFSSL_X509_ALGOR *sigalg, const WOLFSSL_ASN1_STRING *sig); 1393 WOLFSSL_API void wolfSSL_X509_get0_signature(const WOLFSSL_ASN1_BIT_STRING **psig, 1394 const WOLFSSL_X509_ALGOR **palg, const WOLFSSL_X509 *x509); 1320 1395 WOLFSSL_API int wolfSSL_X509_print(WOLFSSL_BIO* bio, WOLFSSL_X509* x509); 1321 1396 WOLFSSL_ABI WOLFSSL_API char* wolfSSL_X509_NAME_oneline(WOLFSSL_X509_NAME*, … … 1326 1401 WOLFSSL_ABI WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_get_issuer_name( 1327 1402 WOLFSSL_X509*); 1403 WOLFSSL_API unsigned long wolfSSL_X509_issuer_name_hash(const WOLFSSL_X509* x509); 1328 1404 WOLFSSL_ABI WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_get_subject_name( 1329 1405 WOLFSSL_X509*); 1406 WOLFSSL_API unsigned long wolfSSL_X509_subject_name_hash(const WOLFSSL_X509* x509); 1330 1407 WOLFSSL_API int wolfSSL_X509_ext_isSet_by_NID(WOLFSSL_X509*, int); 1331 1408 WOLFSSL_API int wolfSSL_X509_ext_get_critical_by_NID(WOLFSSL_X509*, int); … … 1340 1417 1341 1418 WOLFSSL_API int wolfSSL_X509_verify(WOLFSSL_X509* x509, WOLFSSL_EVP_PKEY* pkey); 1419 #ifdef WOLFSSL_CERT_REQ 1420 WOLFSSL_API int wolfSSL_X509_REQ_verify(WOLFSSL_X509* x509, WOLFSSL_EVP_PKEY* pkey); 1421 #endif 1342 1422 WOLFSSL_API int wolfSSL_X509_set_subject_name(WOLFSSL_X509*, 1343 1423 WOLFSSL_X509_NAME*); … … 1356 1436 WOLFSSL_API int wolfSSL_X509_sign(WOLFSSL_X509* x509, WOLFSSL_EVP_PKEY* pkey, 1357 1437 const WOLFSSL_EVP_MD* md); 1438 WOLFSSL_API int wolfSSL_X509_sign_ctx(WOLFSSL_X509 *x509, WOLFSSL_EVP_MD_CTX *ctx); 1358 1439 1359 1440 … … 1366 1447 1367 1448 WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_ASN1_STRING_new(void); 1449 WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_ASN1_STRING_dup(WOLFSSL_ASN1_STRING* asn1); 1368 1450 WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_ASN1_STRING_type_new(int type); 1369 1451 WOLFSSL_API int wolfSSL_ASN1_STRING_type(const WOLFSSL_ASN1_STRING* asn1); 1370 1452 WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_d2i_DISPLAYTEXT(WOLFSSL_ASN1_STRING **asn, const unsigned char **in, long len); 1453 WOLFSSL_API int wolfSSL_ASN1_STRING_cmp(const WOLFSSL_ASN1_STRING *a, const WOLFSSL_ASN1_STRING *b); 1371 1454 WOLFSSL_API void wolfSSL_ASN1_STRING_free(WOLFSSL_ASN1_STRING* asn1); 1372 1455 WOLFSSL_API int wolfSSL_ASN1_STRING_set(WOLFSSL_ASN1_STRING* asn1, … … 1387 1470 WOLFSSL_API WOLFSSL_X509_LOOKUP_METHOD* wolfSSL_X509_LOOKUP_hash_dir(void); 1388 1471 WOLFSSL_API WOLFSSL_X509_LOOKUP_METHOD* wolfSSL_X509_LOOKUP_file(void); 1472 WOLFSSL_API int wolfSSL_X509_LOOKUP_ctrl(WOLFSSL_X509_LOOKUP *ctx, int cmd, 1473 const char *argc, long argl, char **ret); 1389 1474 1390 1475 WOLFSSL_API WOLFSSL_X509_LOOKUP* wolfSSL_X509_STORE_add_lookup(WOLFSSL_X509_STORE*, … … 1398 1483 WOLFSSL_API WOLFSSL_STACK* wolfSSL_X509_STORE_CTX_get1_chain( 1399 1484 WOLFSSL_X509_STORE_CTX* ctx); 1485 WOLFSSL_API WOLFSSL_X509_STORE_CTX *wolfSSL_X509_STORE_CTX_get0_parent_ctx( 1486 WOLFSSL_X509_STORE_CTX *ctx); 1400 1487 WOLFSSL_API int wolfSSL_X509_STORE_set_flags(WOLFSSL_X509_STORE* store, 1401 1488 unsigned long flag); … … 1408 1495 WOLFSSL_API void wolfSSL_X509_STORE_CTX_free(WOLFSSL_X509_STORE_CTX*); 1409 1496 WOLFSSL_API void wolfSSL_X509_STORE_CTX_cleanup(WOLFSSL_X509_STORE_CTX*); 1497 WOLFSSL_API void wolfSSL_X509_STORE_CTX_trusted_stack(WOLFSSL_X509_STORE_CTX *ctx, 1498 WOLF_STACK_OF(WOLFSSL_X509) *sk); 1410 1499 1411 1500 WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_lastUpdate(WOLFSSL_X509_CRL*); 1412 1501 WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_CRL_get_nextUpdate(WOLFSSL_X509_CRL*); 1413 WOLFSSL_A SN1_TIME* wolfSSL_X509_gmtime_adj(WOLFSSL_ASN1_TIME *s, long adj);1502 WOLFSSL_API WOLFSSL_ASN1_TIME* wolfSSL_X509_gmtime_adj(WOLFSSL_ASN1_TIME *s, long adj); 1414 1503 1415 1504 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_X509_get_pubkey(WOLFSSL_X509*); … … 1422 1511 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PUBKEY(WOLFSSL_EVP_PKEY** key, 1423 1512 const unsigned char** in, long inSz); 1513 WOLFSSL_API int wolfSSL_i2d_PUBKEY(const WOLFSSL_EVP_PKEY *key, unsigned char **der); 1424 1514 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PrivateKey(int type, 1425 1515 WOLFSSL_EVP_PKEY** out, const unsigned char **in, long inSz); 1426 1516 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_PrivateKey_EVP(WOLFSSL_EVP_PKEY** key, 1427 1517 unsigned char** in, long inSz); 1428 WOLFSSL_API int wolfSSL_i2d_PrivateKey( WOLFSSL_EVP_PKEY* key,1518 WOLFSSL_API int wolfSSL_i2d_PrivateKey(const WOLFSSL_EVP_PKEY* key, 1429 1519 unsigned char** der); 1430 1520 WOLFSSL_API int wolfSSL_X509_cmp_current_time(const WOLFSSL_ASN1_TIME*); … … 1440 1530 unsigned long flags, 1441 1531 time_t t); 1532 WOLFSSL_API WOLFSSL_X509_VERIFY_PARAM* wolfSSL_X509_VERIFY_PARAM_new(void); 1533 WOLFSSL_API void wolfSSL_X509_VERIFY_PARAM_free(WOLFSSL_X509_VERIFY_PARAM *param); 1534 WOLFSSL_API int wolfSSL_X509_VERIFY_PARAM_set_flags(WOLFSSL_X509_VERIFY_PARAM *param, 1535 unsigned long flags); 1536 WOLFSSL_API int wolfSSL_X509_VERIFY_PARAM_get_flags(WOLFSSL_X509_VERIFY_PARAM *param); 1537 WOLFSSL_API int wolfSSL_X509_VERIFY_PARAM_clear_flags(WOLFSSL_X509_VERIFY_PARAM *param, 1538 unsigned long flags); 1442 1539 WOLFSSL_API void wolfSSL_X509_VERIFY_PARAM_set_hostflags( 1443 1540 WOLFSSL_X509_VERIFY_PARAM* param, unsigned int flags); … … 1565 1662 WOLFSSL_API int wolfSSL_CTX_set_srp_password(WOLFSSL_CTX*, char*); 1566 1663 WOLFSSL_API int wolfSSL_CTX_set_srp_username(WOLFSSL_CTX*, char*); 1664 WOLFSSL_API int wolfSSL_CTX_set_srp_strength(WOLFSSL_CTX *ctx, int strength); 1665 1666 WOLFSSL_API char* wolfSSL_get_srp_username(WOLFSSL *ssl); 1567 1667 1568 1668 WOLFSSL_API long wolfSSL_set_options(WOLFSSL *s, long op); … … 1572 1672 WOLFSSL_API long wolfSSL_total_renegotiations(WOLFSSL *s); 1573 1673 WOLFSSL_API long wolfSSL_num_renegotiations(WOLFSSL* s); 1674 WOLFSSL_API int wolfSSL_SSL_renegotiate_pending(WOLFSSL *s); 1574 1675 WOLFSSL_API long wolfSSL_set_tmp_dh(WOLFSSL *s, WOLFSSL_DH *dh); 1575 1676 WOLFSSL_API long wolfSSL_set_tlsext_debug_arg(WOLFSSL *s, void *arg); … … 1598 1699 }; 1599 1700 1600 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || \1601 defined(HAVE_WEBSERVER)1602 1701 /* Separated out from other enums because of size */ 1603 1702 enum { … … 1646 1745 }; 1647 1746 1747 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || \ 1748 defined(HAVE_WEBSERVER) 1648 1749 /* for compatibility these must be macros */ 1649 1750 #define SSL_OP_NO_SSLv2 WOLFSSL_OP_NO_SSLv2 … … 1714 1815 SSL_MODE_RELEASE_BUFFERS = -1, /* For libwebsockets build. No current use. */ 1715 1816 1716 BIO_FLAGS_BASE64_NO_NL = 1,1717 1817 BIO_CLOSE = 1, 1718 1818 BIO_NOCLOSE = 0, … … 1772 1872 X509_R_CERT_ALREADY_IN_HASH_TABLE, 1773 1873 1774 XN_FLAG_SPC_EQ = (1 << 23),1775 XN_FLAG_SEP_CPLUS_SPC = (2 << 16),1776 XN_FLAG_ONELINE = 0,1777 XN_FLAG_RFC2253 = 1,1778 XN_FLAG_DN_REV = (1 << 20),1779 1780 1874 CRYPTO_LOCK = 1, 1781 1875 CRYPTO_NUM_LOCKS = 10, … … 1790 1884 /* wolfSSL extension, provide last error from SSL_get_error 1791 1885 since not using thread storage error queue */ 1792 #include <stdio.h> 1886 #ifdef FUSION_RTOS 1887 #include <fclstdio.h> 1888 #else 1889 #include <stdio.h> 1890 #endif 1793 1891 WOLFSSL_API void wolfSSL_ERR_print_errors_fp(XFILE, int err); 1794 1892 #if defined(OPENSSL_EXTRA) || defined(DEBUG_WOLFSSL_VERBOSE) … … 1951 2049 wc_psk_server_tls13_callback); 1952 2050 #endif 2051 WOLFSSL_API void* wolfSSL_get_psk_callback_ctx(WOLFSSL*); 2052 WOLFSSL_API int wolfSSL_set_psk_callback_ctx(WOLFSSL*, void*); 2053 2054 WOLFSSL_API void* wolfSSL_CTX_get_psk_callback_ctx(WOLFSSL_CTX*); 2055 WOLFSSL_API int wolfSSL_CTX_set_psk_callback_ctx(WOLFSSL_CTX*, void*); 1953 2056 1954 2057 #define PSK_TYPES_DEFINED … … 1993 2096 WOLFSSL_API long wolfSSL_CTX_clear_options(WOLFSSL_CTX*, long); 1994 2097 1995 #if ndef NO_CERTS2098 #if !defined(NO_CHECK_PRIVATE_KEY) 1996 2099 WOLFSSL_API int wolfSSL_CTX_check_private_key(const WOLFSSL_CTX*); 1997 #endif /* !NO_CERTS */ 1998 2100 #endif 1999 2101 WOLFSSL_API void wolfSSL_ERR_free_strings(void); 2000 2102 WOLFSSL_API void wolfSSL_ERR_remove_state(unsigned long); … … 2041 2143 #ifdef OPENSSL_EXTRA 2042 2144 WOLFSSL_API WOLFSSL_ASN1_TIME *wolfSSL_ASN1_TIME_set(WOLFSSL_ASN1_TIME *s, time_t t); 2043 #endif 2044 2045 WOLFSSL_API int wolfSSL_sk_num(WOLFSSL_STACK* sk); 2046 WOLFSSL_API void* wolfSSL_sk_value(WOLFSSL_STACK* sk, int i); 2047 2048 #if defined(HAVE_EX_DATA) || defined(FORTRESS) 2145 WOLFSSL_API int wolfSSL_ASN1_TIME_set_string(WOLFSSL_ASN1_TIME *s, const char *str); 2146 #endif 2147 2148 WOLFSSL_API int wolfSSL_sk_num(const WOLFSSL_STACK* sk); 2149 WOLFSSL_API void* wolfSSL_sk_value(const WOLFSSL_STACK* sk, int i); 2150 2151 #if (defined(HAVE_EX_DATA) || defined(FORTRESS)) && \ 2152 (defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) || defined(WOLFSSL_WPAS_SMALL)) 2049 2153 WOLFSSL_API void* wolfSSL_CRYPTO_get_ex_data(const WOLFSSL_CRYPTO_EX_DATA* ex_data, 2050 2154 int idx); … … 2088 2192 /* which library version do we have */ 2089 2193 WOLFSSL_API const char* wolfSSL_lib_version(void); 2194 WOLFSSL_API const char* wolfSSL_OpenSSL_version(void); 2090 2195 /* which library version do we have in hex */ 2091 2196 WOLFSSL_API word32 wolfSSL_lib_version_hex(void); … … 2135 2240 2136 2241 WOLFSSL_ABI WOLFSSL_API char* wolfSSL_X509_get_next_altname(WOLFSSL_X509*); 2242 WOLFSSL_API int wolfSSL_X509_add_altname_ex(WOLFSSL_X509*, const char*, word32, int); 2137 2243 WOLFSSL_API int wolfSSL_X509_add_altname(WOLFSSL_X509*, const char*, int); 2138 2244 … … 2141 2247 WOLFSSL_API WOLFSSL_X509* 2142 2248 wolfSSL_X509_d2i(WOLFSSL_X509** x509, const unsigned char* in, int len); 2249 #ifdef WOLFSSL_CERT_REQ 2250 WOLFSSL_API WOLFSSL_X509* 2251 wolfSSL_X509_REQ_d2i(WOLFSSL_X509** x509, const unsigned char* in, int len); 2252 #endif 2143 2253 WOLFSSL_API int wolfSSL_i2d_X509(WOLFSSL_X509* x509, unsigned char** out); 2144 2254 WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL(WOLFSSL_X509_CRL **crl, 2145 2255 const unsigned char *in, int len); 2146 #if ndef NO_FILESYSTEM2256 #if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) 2147 2257 WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_d2i_X509_CRL_fp(XFILE file, WOLFSSL_X509_CRL **crl); 2148 2258 #endif … … 2159 2269 WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_load_certificate_buffer( 2160 2270 const unsigned char* buf, int sz, int format); 2271 #ifdef WOLFSSL_CERT_REQ 2272 WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_REQ_load_certificate_buffer( 2273 const unsigned char* buf, int sz, int format); 2274 #endif 2161 2275 2162 2276 #ifdef WOLFSSL_SEP … … 2179 2293 WC_PKCS12** pkcs12); 2180 2294 WOLFSSL_API int wolfSSL_i2d_PKCS12_bio(WOLFSSL_BIO *bio, WC_PKCS12 *pkcs12); 2181 #if ndef NO_FILESYSTEM2295 #if !defined(NO_FILESYSTEM) && !defined(NO_STDIO_FILESYSTEM) 2182 2296 WOLFSSL_API WOLFSSL_X509_PKCS12* wolfSSL_d2i_PKCS12_fp(XFILE fp, 2183 2297 WOLFSSL_X509_PKCS12** pkcs12); … … 2186 2300 WOLFSSL_EVP_PKEY** pkey, WOLFSSL_X509** cert, 2187 2301 WOLF_STACK_OF(WOLFSSL_X509)** ca); 2302 WOLFSSL_API int wolfSSL_PKCS12_verify_mac(WC_PKCS12 *pkcs12, const char *psw, 2303 int pswLen); 2188 2304 WOLFSSL_API WC_PKCS12* wolfSSL_PKCS12_create(char* pass, char* name, 2189 2305 WOLFSSL_EVP_PKEY* pkey, WOLFSSL_X509* cert, … … 2287 2403 const unsigned char*, long, int); 2288 2404 WOLFSSL_API int wolfSSL_CTX_use_PrivateKey_id(WOLFSSL_CTX*, 2289 const unsigned char*, long, int, long); 2405 const unsigned char*, long, 2406 int, long); 2407 WOLFSSL_API int wolfSSL_CTX_use_PrivateKey_Id(WOLFSSL_CTX*, 2408 const unsigned char*, long, 2409 int); 2410 WOLFSSL_API int wolfSSL_CTX_use_PrivateKey_Label(WOLFSSL_CTX*, const char*, 2411 int); 2290 2412 WOLFSSL_API int wolfSSL_CTX_use_certificate_chain_buffer_format(WOLFSSL_CTX*, 2291 2413 const unsigned char*, long, int); … … 2301 2423 long, int); 2302 2424 WOLFSSL_API int wolfSSL_use_PrivateKey_id(WOLFSSL*, const unsigned char*, 2303 long, int, long); 2425 long, int, long); 2426 WOLFSSL_API int wolfSSL_use_PrivateKey_Id(WOLFSSL*, const unsigned char*, 2427 long, int); 2428 WOLFSSL_API int wolfSSL_use_PrivateKey_Label(WOLFSSL*, const char*, int); 2304 2429 WOLFSSL_API int wolfSSL_use_certificate_chain_buffer_format(WOLFSSL*, 2305 2430 const unsigned char*, long, int); … … 2311 2436 defined(KEEP_OUR_CERT) 2312 2437 WOLFSSL_API WOLFSSL_X509* wolfSSL_get_certificate(WOLFSSL* ssl); 2438 WOLFSSL_API WOLFSSL_X509* wolfSSL_CTX_get0_certificate(WOLFSSL_CTX* ctx); 2313 2439 #endif 2314 2440 #endif … … 2369 2495 WOLFSSL_API int wolfSSL_GetOutputSize(WOLFSSL*, int); 2370 2496 WOLFSSL_API int wolfSSL_GetMaxOutputSize(WOLFSSL*); 2371 WOLFSSL_API int wolfSSL_GetVersion( WOLFSSL* ssl);2497 WOLFSSL_API int wolfSSL_GetVersion(const WOLFSSL* ssl); 2372 2498 WOLFSSL_API int wolfSSL_SetVersion(WOLFSSL* ssl, int version); 2373 2499 … … 2425 2551 2426 2552 WOLFSSL_API const unsigned char* wolfSSL_GetMacSecret(WOLFSSL*, int); 2553 WOLFSSL_API const unsigned char* wolfSSL_GetDtlsMacSecret(WOLFSSL*, int, int); 2427 2554 WOLFSSL_API const unsigned char* wolfSSL_GetClientWriteKey(WOLFSSL*); 2428 2555 WOLFSSL_API const unsigned char* wolfSSL_GetClientWriteIV(WOLFSSL*); … … 2528 2655 const unsigned char* priv, unsigned int privSz, 2529 2656 const unsigned char* otherPubKeyDer, unsigned int otherPubKeySz, 2530 unsigned char* out, unsigned int* outlen,2657 unsigned char* out, word32* outlen, 2531 2658 void* ctx); 2532 2659 WOLFSSL_API void wolfSSL_CTX_SetDhAgreeCb(WOLFSSL_CTX*, CallbackDhAgree); … … 2626 2753 typedef int (*CallbackRsaSign)(WOLFSSL* ssl, 2627 2754 const unsigned char* in, unsigned int inSz, 2628 unsigned char* out, unsigned int* outSz,2755 unsigned char* out, word32* outSz, 2629 2756 const unsigned char* keyDer, unsigned int keySz, 2630 2757 void* ctx); … … 2671 2798 typedef int (*CallbackRsaEnc)(WOLFSSL* ssl, 2672 2799 const unsigned char* in, unsigned int inSz, 2673 unsigned char* out, unsigned int* outSz,2800 unsigned char* out, word32* outSz, 2674 2801 const unsigned char* keyDer, unsigned int keySz, 2675 2802 void* ctx); … … 2698 2825 WOLFSSL_API WOLFSSL_CERT_MANAGER* wolfSSL_CertManagerNew(void); 2699 2826 WOLFSSL_API void wolfSSL_CertManagerFree(WOLFSSL_CERT_MANAGER*); 2827 WOLFSSL_API int wolfSSL_CertManager_up_ref(WOLFSSL_CERT_MANAGER*); 2700 2828 2701 2829 WOLFSSL_API int wolfSSL_CertManagerLoadCA(WOLFSSL_CERT_MANAGER*, const char* f, … … 2748 2876 WOLFSSL_API int wolfSSL_CertManagerDisableOCSPStapling( 2749 2877 WOLFSSL_CERT_MANAGER* cm); 2878 WOLFSSL_API int wolfSSL_CertManagerEnableOCSPMustStaple( 2879 WOLFSSL_CERT_MANAGER* cm); 2880 WOLFSSL_API int wolfSSL_CertManagerDisableOCSPMustStaple( 2881 WOLFSSL_CERT_MANAGER* cm); 2750 2882 #if defined(OPENSSL_EXTRA) && defined(WOLFSSL_SIGNER_DER_CERT) && !defined(NO_FILESYSTEM) 2751 2883 WOLFSSL_API WOLFSSL_STACK* wolfSSL_CertManagerGetCerts(WOLFSSL_CERT_MANAGER* cm); … … 2784 2916 WOLFSSL_API int wolfSSL_CTX_EnableOCSPStapling(WOLFSSL_CTX*); 2785 2917 WOLFSSL_API int wolfSSL_CTX_DisableOCSPStapling(WOLFSSL_CTX*); 2918 WOLFSSL_API int wolfSSL_CTX_EnableOCSPMustStaple(WOLFSSL_CTX*); 2919 WOLFSSL_API int wolfSSL_CTX_DisableOCSPMustStaple(WOLFSSL_CTX*); 2786 2920 #endif /* !NO_CERTS */ 2787 2921 … … 2899 3033 }; 2900 3034 2901 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 3035 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) || defined(HAVE_LIGHTY) 2902 3036 typedef int (*CallbackALPNSelect)(WOLFSSL* ssl, const unsigned char** out, 2903 3037 unsigned char* outLen, const unsigned char* in, unsigned int inLen, … … 3032 3166 WOLFSSL_ECC_X25519 = 29, 3033 3167 WOLFSSL_ECC_X448 = 30, 3168 WOLFSSL_ECC_MAX = 30, 3034 3169 3035 3170 WOLFSSL_FFDHE_2048 = 256, … … 3049 3184 3050 3185 #ifdef HAVE_SUPPORTED_CURVES 3051 #ifndef NO_WOLFSSL_CLIENT3052 3053 3186 WOLFSSL_API int wolfSSL_UseSupportedCurve(WOLFSSL* ssl, word16 name); 3054 3187 WOLFSSL_API int wolfSSL_CTX_UseSupportedCurve(WOLFSSL_CTX* ctx, 3055 3188 word16 name); 3056 3057 #endif3058 3189 #endif 3059 3190 … … 3078 3209 /* Session Ticket */ 3079 3210 #ifdef HAVE_SESSION_TICKET 3211 3212 #if !defined(WOLFSSL_NO_DEF_TICKET_ENC_CB) && !defined(WOLFSSL_NO_SERVER) 3213 #if defined(HAVE_CHACHA) && defined(HAVE_POLY1305) && \ 3214 !defined(WOLFSSL_TICKET_ENC_AES128_GCM) && \ 3215 !defined(WOLFSSL_TICKET_ENC_AES256_GCM) 3216 #define WOLFSSL_TICKET_KEY_SZ CHACHA20_POLY1305_AEAD_KEYSIZE 3217 #elif defined(WOLFSSL_TICKET_ENC_AES256_GCM) 3218 #define WOLFSSL_TICKET_KEY_SZ AES_256_KEY_SIZE 3219 #else 3220 #define WOLFSSL_TICKET_KEY_SZ AES_128_KEY_SIZE 3221 #endif 3222 3223 #define WOLFSSL_TICKET_KEYS_SZ (WOLFSSL_TICKET_NAME_SZ + \ 3224 2 * WOLFSSL_TICKET_KEY_SZ + \ 3225 sizeof(word32) * 2) 3226 #endif 3080 3227 3081 3228 #ifndef NO_WOLFSSL_CLIENT … … 3102 3249 3103 3250 #ifndef NO_WOLFSSL_SERVER 3251 3252 WOLFSSL_API int wolfSSL_CTX_NoTicketTLSv12(WOLFSSL_CTX* ctx); 3253 WOLFSSL_API int wolfSSL_NoTicketTLSv12(WOLFSSL* ssl); 3104 3254 3105 3255 typedef int (*SessionTicketEncCb)(WOLFSSL*, … … 3208 3358 #include <wolfssl/openssl/asn1.h> 3209 3359 struct WOLFSSL_X509_NAME_ENTRY { 3210 WOLFSSL_ASN1_OBJECT object; /* static object just for keeping grp, type */ 3211 WOLFSSL_ASN1_STRING data; 3360 WOLFSSL_ASN1_OBJECT* object; /* static object just for keeping grp, type */ 3212 3361 WOLFSSL_ASN1_STRING* value; /* points to data, for lighttpd port */ 3213 3362 int nid; /* i.e. ASN_COMMON_NAME */ … … 3220 3369 int idx); 3221 3370 3222 #endif /* OPENSSL_ALL || OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ 3223 3224 3225 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL) 3371 3226 3372 3227 3373 enum { … … 3269 3415 3270 3416 WOLFSSL_API unsigned long wolfSSL_ERR_peek_last_error_line(const char **file, int *line); 3271 WOLFSSL_API long wolfSSL_ctrl(WOLFSSL* ssl, int cmd, long opt, void* pt);3272 3417 WOLFSSL_API long wolfSSL_CTX_ctrl(WOLFSSL_CTX* ctx, int cmd, long opt,void* pt); 3273 3418 WOLFSSL_API long wolfSSL_CTX_callback_ctrl(WOLFSSL_CTX* ctx, int cmd, void (*fp)(void)); … … 3289 3434 int type, const unsigned char *bytes, 3290 3435 int len, int loc, int set); 3436 WOLFSSL_API WOLFSSL_X509_NAME_ENTRY *wolfSSL_X509_NAME_delete_entry( 3437 WOLFSSL_X509_NAME *name, int loc); 3291 3438 WOLFSSL_API int wolfSSL_X509_NAME_cmp(const WOLFSSL_X509_NAME* x, 3292 3439 const WOLFSSL_X509_NAME* y); … … 3294 3441 WOLFSSL_API WOLFSSL_X509* wolfSSL_X509_dup(WOLFSSL_X509*); 3295 3442 WOLFSSL_API WOLFSSL_X509_NAME* wolfSSL_X509_NAME_dup(WOLFSSL_X509_NAME*); 3443 WOLFSSL_API int wolfSSL_X509_NAME_copy(WOLFSSL_X509_NAME*, WOLFSSL_X509_NAME*); 3296 3444 WOLFSSL_API int wolfSSL_check_private_key(const WOLFSSL* ssl); 3445 #endif /* !NO_CERTS */ 3446 #endif /* OPENSSL_ALL || OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ 3447 3448 #if defined(OPENSSL_ALL) || defined(WOLFSSL_ASIO) || defined(WOLFSSL_HAPROXY) \ 3449 || defined(WOLFSSL_NGINX) || defined(WOLFSSL_QT) 3450 WOLFSSL_API long wolfSSL_ctrl(WOLFSSL* ssl, int cmd, long opt, void* pt); 3451 #endif 3452 3453 #ifdef WOLFSSL_WPAS_SMALL 3454 /* WPA Supplicant requires GEN_ values */ 3455 #include <wolfssl/openssl/x509v3.h> 3456 #endif 3457 3458 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) 3297 3459 WOLFSSL_API void* wolfSSL_X509_get_ext_d2i(const WOLFSSL_X509* x509, 3298 3460 int nid, int* c, int* idx); 3461 #endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL */ 3462 3463 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL) 3464 #ifndef NO_CERTS 3299 3465 WOLFSSL_API int wolfSSL_X509_get_ext_count(const WOLFSSL_X509* passedCert); 3300 3466 WOLFSSL_API int wolfSSL_X509_get_ext_by_NID(const WOLFSSL_X509 *x, int nid, int lastpos); 3301 3467 WOLFSSL_API int wolfSSL_X509_add_ext(WOLFSSL_X509 *x, WOLFSSL_X509_EXTENSION *ex, int loc); 3468 WOLFSSL_API WOLFSSL_X509_EXTENSION *wolfSSL_X509V3_EXT_i2d(int nid, int crit, 3469 void *data); 3470 WOLFSSL_API WOLFSSL_X509_EXTENSION *wolfSSL_X509_delete_ext(WOLFSSL_X509 *x509, int loc); 3302 3471 WOLFSSL_API WOLFSSL_X509_EXTENSION* wolfSSL_X509V3_EXT_conf_nid( 3303 3472 WOLF_LHASH_OF(CONF_VALUE)* conf, WOLFSSL_X509V3_CTX* ctx, int nid, … … 3323 3492 #if defined(WOLFSSL_QT) || defined(OPENSSL_ALL) 3324 3493 WOLFSSL_API int wolfSSL_X509_cmp(const WOLFSSL_X509* a, const WOLFSSL_X509* b); 3494 WOLFSSL_API const WOLFSSL_STACK *wolfSSL_X509_get0_extensions(const WOLFSSL_X509 *x); 3495 WOLFSSL_API const WOLFSSL_STACK *wolfSSL_X509_REQ_get_extensions(const WOLFSSL_X509 *x); 3325 3496 WOLFSSL_API WOLFSSL_X509_EXTENSION* wolfSSL_X509_get_ext(const WOLFSSL_X509* x, int loc); 3497 WOLFSSL_API int wolfSSL_X509_get_ext_by_OBJ(const WOLFSSL_X509 *x, 3498 const WOLFSSL_ASN1_OBJECT *obj, int lastpos); 3326 3499 WOLFSSL_API WOLFSSL_X509_EXTENSION* wolfSSL_X509_set_ext(WOLFSSL_X509* x, int loc); 3327 3500 WOLFSSL_API int wolfSSL_X509_EXTENSION_get_critical(const WOLFSSL_X509_EXTENSION* ex); … … 3336 3509 WOLFSSL_API WOLFSSL_ASN1_OBJECT* wolfSSL_X509_EXTENSION_get_object(WOLFSSL_X509_EXTENSION* ext); 3337 3510 WOLFSSL_API WOLFSSL_ASN1_STRING* wolfSSL_X509_EXTENSION_get_data(WOLFSSL_X509_EXTENSION* ext); 3338 #endif /* NO_CERTS */3511 #endif /* !NO_CERTS */ 3339 3512 3340 3513 WOLFSSL_API WOLFSSL_DH *wolfSSL_DSA_dup_DH(const WOLFSSL_DSA *r); … … 3344 3517 WOLFSSL_API int wolfSSL_SESSION_get_master_key_length(const WOLFSSL_SESSION* ses); 3345 3518 3346 WOLFSSL_API void wolfSSL_CTX_set_cert_store(WOLFSSL_CTX* ctx,3347 WOLFSSL_X509_STORE* str);3348 3519 WOLFSSL_API int wolfSSL_i2d_X509_bio(WOLFSSL_BIO* bio, WOLFSSL_X509* x509); 3520 #ifdef WOLFSSL_CERT_REQ 3521 WOLFSSL_API int wolfSSL_i2d_X509_REQ_bio(WOLFSSL_BIO* bio, WOLFSSL_X509* x509); 3522 #endif 3349 3523 #if !defined(NO_FILESYSTEM) 3350 3524 WOLFSSL_API WOLFSSL_X509* wolfSSL_d2i_X509_fp(XFILE fp, … … 3354 3528 WOLFSSL_API WOLFSSL_X509* wolfSSL_d2i_X509_bio(WOLFSSL_BIO* bio, 3355 3529 WOLFSSL_X509** x509); 3530 #ifdef WOLFSSL_CERT_REQ 3531 WOLFSSL_API WOLFSSL_X509* wolfSSL_d2i_X509_REQ_bio(WOLFSSL_BIO* bio, 3532 WOLFSSL_X509** x509); 3533 #endif 3534 #endif /* OPENSSL_EXTRA || OPENSSL_ALL */ 3535 3536 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) 3537 WOLFSSL_API void wolfSSL_CTX_set_cert_store(WOLFSSL_CTX* ctx, 3538 WOLFSSL_X509_STORE* str); 3356 3539 WOLFSSL_API WOLFSSL_X509_STORE* wolfSSL_CTX_get_cert_store(WOLFSSL_CTX* ctx); 3357 3540 WOLFSSL_API size_t wolfSSL_get_server_random(const WOLFSSL *ssl, 3541 unsigned char *out, size_t outlen); 3542 WOLFSSL_API size_t wolfSSL_get_client_random(const WOLFSSL* ssl, 3543 unsigned char* out, size_t outSz); 3544 #endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL */ 3545 3546 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL) 3358 3547 WOLFSSL_API size_t wolfSSL_BIO_wpending(const WOLFSSL_BIO *bio); 3359 3548 WOLFSSL_API size_t wolfSSL_BIO_ctrl_pending(WOLFSSL_BIO *b); 3360 3549 3361 WOLFSSL_API size_t wolfSSL_get_server_random(const WOLFSSL *ssl,3362 unsigned char *out, size_t outlen);3363 3550 WOLFSSL_API int wolfSSL_get_server_tmp_key(const WOLFSSL*, WOLFSSL_EVP_PKEY**); 3364 3551 … … 3366 3553 WOLFSSL_API int wolfSSL_CTX_set_max_proto_version(WOLFSSL_CTX*, int); 3367 3554 3368 WOLFSSL_API size_t wolfSSL_get_client_random(const WOLFSSL* ssl,3369 unsigned char* out, size_t outSz);3370 3555 WOLFSSL_API int wolfSSL_CTX_use_PrivateKey(WOLFSSL_CTX *ctx, WOLFSSL_EVP_PKEY *pkey); 3371 3556 WOLFSSL_API WOLFSSL_X509 *wolfSSL_PEM_read_bio_X509(WOLFSSL_BIO *bp, WOLFSSL_X509 **x, pem_password_cb *cb, void *u); 3557 #ifdef WOLFSSL_CERT_REQ 3558 WOLFSSL_API WOLFSSL_X509 *wolfSSL_PEM_read_bio_X509_REQ(WOLFSSL_BIO *bp, WOLFSSL_X509 **x, pem_password_cb *cb, void *u); 3559 #endif 3372 3560 WOLFSSL_API WOLFSSL_X509_CRL *wolfSSL_PEM_read_bio_X509_CRL(WOLFSSL_BIO *bp, 3373 3561 WOLFSSL_X509_CRL **x, pem_password_cb *cb, void *u); … … 3386 3574 unsigned char* data, long* len, 3387 3575 pem_password_cb* callback, void* ctx); 3576 #endif /* OPENSSL_EXTRA || OPENSSL_ALL */ 3388 3577 3389 3578 /*lighttp compatibility */ 3390 3579 3580 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) || \ 3581 defined(OPENSSL_EXTRA_X509_SMALL) 3391 3582 struct WOLFSSL_ASN1_BIT_STRING { 3392 3583 int length; … … 3396 3587 }; 3397 3588 3589 WOLFSSL_API WOLFSSL_X509_NAME_ENTRY *wolfSSL_X509_NAME_get_entry(WOLFSSL_X509_NAME *name, int loc); 3590 #endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL */ 3591 3592 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_ALL)|| \ 3593 defined(OPENSSL_EXTRA_X509_SMALL) 3398 3594 3399 3595 #if defined(OPENSSL_EXTRA) \ … … 3403 3599 || defined(HAVE_STUNNEL) \ 3404 3600 || defined(WOLFSSL_NGINX) \ 3405 || defined(WOLFSSL_HAPROXY) 3601 || defined(WOLFSSL_HAPROXY) \ 3602 || defined(OPENSSL_EXTRA_X509_SMALL) 3406 3603 WOLFSSL_API void wolfSSL_X509_NAME_ENTRY_free(WOLFSSL_X509_NAME_ENTRY* ne); 3407 3604 WOLFSSL_API WOLFSSL_X509_NAME_ENTRY* wolfSSL_X509_NAME_ENTRY_new(void); … … 3415 3612 WOLFSSL_API int wolfSSL_set_app_data(WOLFSSL *ssl, void *arg); 3416 3613 WOLFSSL_API WOLFSSL_ASN1_OBJECT * wolfSSL_X509_NAME_ENTRY_get_object(WOLFSSL_X509_NAME_ENTRY *ne); 3417 WOLFSSL_API WOLFSSL_X509_NAME_ENTRY *wolfSSL_X509_NAME_get_entry(WOLFSSL_X509_NAME *name, int loc);3418 3614 WOLFSSL_API unsigned char *wolfSSL_SHA1(const unsigned char *d, size_t n, unsigned char *md); 3419 3615 WOLFSSL_API unsigned char *wolfSSL_SHA256(const unsigned char *d, size_t n, unsigned char *md); … … 3441 3637 || defined(WOLFSSL_HAPROXY) \ 3442 3638 || defined(OPENSSL_EXTRA) 3639 #define X509_BUFFER_SZ 8192 3443 3640 3444 3641 WOLFSSL_API WOLFSSL_BIO* wolfSSL_BIO_new_file(const char *filename, const char *mode); … … 3460 3657 WOLFSSL_API int wolfSSL_X509_REQ_sign(WOLFSSL_X509 *req, WOLFSSL_EVP_PKEY *pkey, 3461 3658 const WOLFSSL_EVP_MD *md); 3659 WOLFSSL_API int wolfSSL_X509_REQ_sign_ctx(WOLFSSL_X509 *req, 3660 WOLFSSL_EVP_MD_CTX* md_ctx); 3462 3661 WOLFSSL_API int wolfSSL_X509_REQ_add_extensions(WOLFSSL_X509* req, 3463 WOLF_STACK_OF(WOLFSSL_X509_EXTENSION)* ext );3662 WOLF_STACK_OF(WOLFSSL_X509_EXTENSION)* ext_sk); 3464 3663 WOLFSSL_API int wolfSSL_X509_REQ_set_subject_name(WOLFSSL_X509 *req, 3465 3664 WOLFSSL_X509_NAME *name); 3466 3665 WOLFSSL_API int wolfSSL_X509_REQ_set_pubkey(WOLFSSL_X509 *req, 3467 3666 WOLFSSL_EVP_PKEY *pkey); 3468 #endif 3469 3470 3471 #if defined(OPENSSL_ALL) \ 3472 || defined(HAVE_STUNNEL) \ 3473 || defined(WOLFSSL_NGINX) \ 3474 || defined(WOLFSSL_HAPROXY) \ 3475 || defined(OPENSSL_EXTRA) \ 3476 || defined(HAVE_LIGHTY) 3667 WOLFSSL_API int wolfSSL_X509_REQ_add1_attr_by_NID(WOLFSSL_X509 *req, 3668 int nid, int type, 3669 const unsigned char *bytes, 3670 int len); 3671 WOLFSSL_API int wolfSSL_X509_REQ_get_attr_by_NID(const WOLFSSL_X509 *req, 3672 int nid, int lastpos); 3673 WOLFSSL_API int wolfSSL_X509_REQ_add1_attr_by_txt(WOLFSSL_X509 *req, 3674 const char *attrname, int type, 3675 const unsigned char *bytes, int len); 3676 WOLFSSL_API WOLFSSL_X509_ATTRIBUTE *wolfSSL_X509_REQ_get_attr( 3677 const WOLFSSL_X509 *req, int loc); 3678 WOLFSSL_API WOLFSSL_X509_ATTRIBUTE* wolfSSL_X509_ATTRIBUTE_new(void); 3679 WOLFSSL_API void wolfSSL_X509_ATTRIBUTE_free(WOLFSSL_X509_ATTRIBUTE* attr); 3680 WOLFSSL_API WOLFSSL_ASN1_TYPE *wolfSSL_X509_ATTRIBUTE_get0_type( 3681 WOLFSSL_X509_ATTRIBUTE *attr, int idx); 3682 WOLFSSL_API WOLFSSL_X509 *wolfSSL_X509_to_X509_REQ(WOLFSSL_X509 *x, 3683 WOLFSSL_EVP_PKEY *pkey, const WOLFSSL_EVP_MD *md); 3684 #endif 3685 3686 3687 #if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) \ 3688 || defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY) 3477 3689 3478 3690 #include <wolfssl/openssl/crypto.h> 3479 3480 /* SNI received callback type */3481 typedef int (*CallbackSniRecv)(WOLFSSL *ssl, int *ret, void* exArg);3482 3691 3483 3692 WOLFSSL_API int wolfSSL_CRYPTO_set_mem_ex_functions(void *(*m) (size_t, const char *, int), … … 3485 3694 3486 3695 WOLFSSL_API void wolfSSL_CRYPTO_cleanup_all_ex_data(void); 3696 3697 WOLFSSL_API int wolfSSL_CRYPTO_memcmp(const void *a, const void *b, size_t size); 3487 3698 3488 3699 WOLFSSL_API WOLFSSL_BIGNUM* wolfSSL_DH_768_prime(WOLFSSL_BIGNUM* bn); … … 3530 3741 WOLFSSL_API void wolfSSL_sk_X509_INFO_free(WOLF_STACK_OF(WOLFSSL_X509_INFO)*); 3531 3742 3532 typedef int (*wolf_sk_compare_cb)(const void* const *a, 3533 const void* const *b); 3743 typedef int (*wolf_sk_compare_cb)(const void* a, 3744 const void* b); 3745 typedef unsigned long (*wolf_sk_hash_cb) (const void *v); 3534 3746 WOLFSSL_API WOLF_STACK_OF(WOLFSSL_X509_NAME)* wolfSSL_sk_X509_NAME_new( 3535 3747 wolf_sk_compare_cb); … … 3551 3763 WOLFSSL_API int wolfSSL_X509_NAME_print_ex(WOLFSSL_BIO*,WOLFSSL_X509_NAME*,int, 3552 3764 unsigned long); 3553 3765 #ifndef NO_FILESYSTEM 3766 WOLFSSL_API int wolfSSL_X509_NAME_print_ex_fp(XFILE,WOLFSSL_X509_NAME*,int, 3767 unsigned long); 3768 #endif 3769 3770 WOLFSSL_API WOLFSSL_STACK *wolfSSL_sk_CONF_VALUE_new(wolf_sk_compare_cb compFunc); 3771 WOLFSSL_API void wolfSSL_sk_CONF_VALUE_free(struct WOLFSSL_STACK *sk); 3772 WOLFSSL_API int wolfSSL_sk_CONF_VALUE_num(const WOLFSSL_STACK *sk); 3773 WOLFSSL_API WOLFSSL_CONF_VALUE *wolfSSL_sk_CONF_VALUE_value( 3774 const struct WOLFSSL_STACK *sk, int i); 3775 WOLFSSL_API int wolfSSL_sk_CONF_VALUE_push(WOLF_STACK_OF(WOLFSSL_CONF_VALUE)* sk, 3776 WOLFSSL_CONF_VALUE* val); 3777 #endif /* OPENSSL_ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || OPENSSL_EXTRA || HAVE_LIGHTY */ 3778 3779 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) 3554 3780 WOLFSSL_API WOLFSSL_ASN1_BIT_STRING* wolfSSL_ASN1_BIT_STRING_new(void); 3555 3781 WOLFSSL_API void wolfSSL_ASN1_BIT_STRING_free(WOLFSSL_ASN1_BIT_STRING*); … … 3560 3786 WOLFSSL_API int wolfSSL_ASN1_BIT_STRING_set_bit( 3561 3787 WOLFSSL_ASN1_BIT_STRING*, int, int); 3788 #endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL */ 3789 3790 #if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) \ 3791 || defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY) 3562 3792 3563 3793 WOLFSSL_API int wolfSSL_CTX_add_session(WOLFSSL_CTX*, WOLFSSL_SESSION*); … … 3572 3802 3573 3803 WOLFSSL_API void* wolfSSL_sk_X509_OBJECT_value(WOLF_STACK_OF(WOLFSSL_X509_OBJECT)*, int); 3574 3804 #endif /* OPENSSL_ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || OPENSSL_EXTRA || HAVE_LIGHTY */ 3805 3806 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) 3575 3807 WOLFSSL_API void* wolfSSL_SESSION_get_ex_data(const WOLFSSL_SESSION*, int); 3576 3808 3577 3809 WOLFSSL_API int wolfSSL_SESSION_set_ex_data(WOLFSSL_SESSION*, int, void*); 3810 #endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL */ 3811 3812 #if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) \ 3813 || defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY) 3578 3814 3579 3815 WOLFSSL_API int wolfSSL_SESSION_get_ex_new_index(long,void*,void*,void*, … … 3582 3818 WOLFSSL_API int wolfSSL_X509_NAME_get_sz(WOLFSSL_X509_NAME*); 3583 3819 3584 3585 3820 WOLFSSL_API const unsigned char* wolfSSL_SESSION_get_id(WOLFSSL_SESSION*, 3586 3821 unsigned int*); … … 3597 3832 3598 3833 WOLFSSL_API VerifyCallback wolfSSL_get_verify_callback(WOLFSSL*); 3834 3835 #endif /* OPENSSL_ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || HAVE_LIGHTY */ 3836 3837 #ifdef HAVE_SNI 3838 /* SNI received callback type */ 3839 typedef int (*CallbackSniRecv)(WOLFSSL *ssl, int *ret, void* exArg); 3599 3840 3600 3841 WOLFSSL_API void wolfSSL_CTX_set_servername_callback(WOLFSSL_CTX *, … … 3604 3845 3605 3846 WOLFSSL_API int wolfSSL_CTX_set_servername_arg(WOLFSSL_CTX *, void*); 3847 #endif 3848 3849 #if defined(OPENSSL_ALL) || defined(HAVE_STUNNEL) || defined(WOLFSSL_NGINX) \ 3850 || defined(WOLFSSL_HAPROXY) || defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY) 3606 3851 3607 3852 WOLFSSL_API void wolfSSL_ERR_remove_thread_state(void*); … … 3625 3870 wolfSSL_sk_X509_OBJECT_delete(WOLF_STACK_OF(WOLFSSL_X509_OBJECT)* sk, int i); 3626 3871 WOLFSSL_API void wolfSSL_X509_OBJECT_free(WOLFSSL_X509_OBJECT *a); 3627 3872 #endif /* OPENSSL_ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || HAVE_LIGHTY */ 3873 3874 #if defined(OPENSSL_EXTRA) || defined(WOLFSSL_WPAS_SMALL) 3875 #include <wolfssl/openssl/stack.h> 3628 3876 WOLFSSL_API void wolfSSL_sk_X509_pop_free(WOLF_STACK_OF(WOLFSSL_X509)* sk, void (*f) (WOLFSSL_X509*)); 3629 #endif /* OPENSSL_ ALL || HAVE_STUNNEL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || HAVE_LIGHTY*/3877 #endif /* OPENSSL_EXTRA || WOLFSSL_WPAS_SMALL */ 3630 3878 3631 3879 #if defined(OPENSSL_EXTRA) && defined(HAVE_ECC) … … 3638 3886 defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 3639 3887 3640 WOLFSSL_API int wolfSSL_CTX_get_verify_mode(WOLFSSL_CTX* ctx); 3888 WOLFSSL_API int wolfSSL_get_verify_mode(const WOLFSSL* ssl); 3889 WOLFSSL_API int wolfSSL_CTX_get_verify_mode(const WOLFSSL_CTX* ctx); 3641 3890 3642 3891 #endif … … 3670 3919 WOLFSSL_API void *wolfSSL_OPENSSL_memdup(const void *data, 3671 3920 size_t siz, const char* file, int line); 3921 WOLFSSL_API void wolfSSL_OPENSSL_cleanse(void *ptr, size_t len); 3672 3922 WOLFSSL_API void wolfSSL_ERR_load_BIO_strings(void); 3923 #endif 3924 3925 #if defined(HAVE_OCSP) && !defined(NO_ASN_TIME) 3926 WOLFSSL_API int wolfSSL_get_ocsp_producedDate( 3927 WOLFSSL *ssl, 3928 byte *producedDate, 3929 size_t producedDate_space, 3930 int *producedDateFormat); 3931 WOLFSSL_API int wolfSSL_get_ocsp_producedDate_tm(WOLFSSL *ssl, 3932 struct tm *produced_tm); 3673 3933 #endif 3674 3934 … … 3689 3949 #endif 3690 3950 3951 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) \ 3952 || defined(WOLFSSL_WPAS_SMALL) 3953 WOLFSSL_API void *wolfSSL_X509_get_ex_data(WOLFSSL_X509 *x509, int idx); 3954 WOLFSSL_API int wolfSSL_X509_set_ex_data(WOLFSSL_X509 *x509, int idx, 3955 void *data); 3956 #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL || WOLFSSL_WPAS_SMALL */ 3957 3691 3958 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) \ 3692 3959 || defined(OPENSSL_EXTRA) || defined(HAVE_LIGHTY) … … 3694 3961 WOLFSSL_API int wolfSSL_X509_get_ex_new_index(int idx, void *arg, void *a, 3695 3962 void *b, void *c); 3696 WOLFSSL_API void *wolfSSL_X509_get_ex_data(WOLFSSL_X509 *x509, int idx);3697 WOLFSSL_API int wolfSSL_X509_set_ex_data(WOLFSSL_X509 *x509, int idx,3698 void *data);3699 3963 WOLFSSL_API int wolfSSL_X509_NAME_digest(const WOLFSSL_X509_NAME *data, 3700 3964 const WOLFSSL_EVP_MD *type, unsigned char *md, unsigned int *len); … … 3716 3980 WOLFSSL_API WOLFSSL_SESSION *wolfSSL_SSL_get0_session(const WOLFSSL *s); 3717 3981 #endif 3718 WOLFSSL_API int wolfSSL_X509_check_host(WOLFSSL_X509 *x, const char *chk,3719 size_t chklen, unsigned int flags, char **peername);3720 3982 3721 3983 WOLFSSL_API int wolfSSL_i2a_ASN1_INTEGER(WOLFSSL_BIO *bp, … … 3744 4006 WOLFSSL_X509 *subject); 3745 4007 3746 WOLFSSL_API char* wolfSSL_sk_WOLFSSL_STRING_value( 4008 WOLFSSL_API WOLF_STACK_OF(WOLFSSL_STRING)* wolfSSL_sk_WOLFSSL_STRING_new(void); 4009 WOLFSSL_API void wolfSSL_sk_WOLFSSL_STRING_free(WOLF_STACK_OF(WOLFSSL_STRING)* sk); 4010 WOLFSSL_API WOLFSSL_STRING wolfSSL_sk_WOLFSSL_STRING_value( 3747 4011 WOLF_STACK_OF(WOLFSSL_STRING)* strings, int idx); 3748 #endif /* HAVE_OCSP */ 4012 WOLFSSL_API int wolfSSL_sk_WOLFSSL_STRING_num( 4013 WOLF_STACK_OF(WOLFSSL_STRING)* strings); 4014 #endif /* HAVE_OCSP || OPENSSL_EXTRA || OPENSSL_ALL || WOLFSSL_NGINX || WOLFSSL_HAPROXY */ 3749 4015 3750 4016 WOLFSSL_API int PEM_write_bio_WOLFSSL_X509(WOLFSSL_BIO *bio, … … 3752 4018 3753 4019 #endif /* OPENSSL_ALL || WOLFSSL_NGINX || WOLFSSL_HAPROXY || 3754 OPENSSL_EXTRA || HAVE_LIGHTY*/ 4020 OPENSSL_EXTRA || HAVE_LIGHTY */ 4021 4022 #if defined(HAVE_SESSION_TICKET) && !defined(WOLFSSL_NO_DEF_TICKET_ENC_CB) && \ 4023 !defined(NO_WOLFSSL_SERVER) 4024 WOLFSSL_API long wolfSSL_CTX_get_tlsext_ticket_keys(WOLFSSL_CTX *ctx, 4025 unsigned char *keys, int keylen); 4026 WOLFSSL_API long wolfSSL_CTX_set_tlsext_ticket_keys(WOLFSSL_CTX *ctx, 4027 unsigned char *keys, int keylen); 4028 #endif 3755 4029 3756 4030 WOLFSSL_API void wolfSSL_get0_alpn_selected(const WOLFSSL *ssl, … … 3783 4057 unsigned *len); 3784 4058 3785 3786 #ifdef OPENSSL_EXTRA 4059 #ifndef NO_ASN 4060 WOLFSSL_API int wolfSSL_X509_check_host(WOLFSSL_X509 *x, const char *chk, 4061 size_t chklen, unsigned int flags, char **peername); 4062 WOLFSSL_API int wolfSSL_X509_check_ip_asc(WOLFSSL_X509 *x, const char *ipasc, 4063 unsigned int flags); 4064 #endif 4065 4066 #if defined(OPENSSL_EXTRA) || defined(OPENSSL_EXTRA_X509_SMALL) 3787 4067 #if defined(OPENSSL_ALL) || defined(WOLFSSL_NGINX) || defined(WOLFSSL_HAPROXY) 3788 4068 WOLFSSL_API const unsigned char *SSL_SESSION_get0_id_context( 3789 4069 const WOLFSSL_SESSION *sess, unsigned int *sid_ctx_length); 3790 WOLFSSL_API size_t SSL_get_finished(const WOLFSSL *s, void *buf, size_t count);3791 WOLFSSL_API size_t SSL_get_peer_finished(const WOLFSSL *s, void *buf, size_t count);4070 WOLFSSL_API size_t wolfSSL_get_finished(const WOLFSSL *ssl, void *buf, size_t count); 4071 WOLFSSL_API size_t wolfSSL_get_peer_finished(const WOLFSSL *ssl, void *buf, size_t count); 3792 4072 #endif 3793 4073 … … 3808 4088 WOLFSSL_API int wolfSSL_X509_PUBKEY_set(WOLFSSL_X509_PUBKEY **x, WOLFSSL_EVP_PKEY *key); 3809 4089 WOLFSSL_API int i2t_ASN1_OBJECT(char *buf, int buf_len, WOLFSSL_ASN1_OBJECT *a); 4090 WOLFSSL_API WOLFSSL_ASN1_OBJECT *wolfSSL_d2i_ASN1_OBJECT(WOLFSSL_ASN1_OBJECT **a, 4091 const unsigned char **der, 4092 long length); 3810 4093 WOLFSSL_API int wolfSSL_i2a_ASN1_OBJECT(WOLFSSL_BIO *bp, WOLFSSL_ASN1_OBJECT *a); 4094 WOLFSSL_API int wolfSSL_i2d_ASN1_OBJECT(WOLFSSL_ASN1_OBJECT *a, unsigned char **pp); 3811 4095 WOLFSSL_API void SSL_CTX_set_tmp_dh_callback(WOLFSSL_CTX *ctx, WOLFSSL_DH *(*dh) (WOLFSSL *ssl, int is_export, int keylength)); 3812 4096 WOLFSSL_API WOLF_STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); … … 3816 4100 WOLFSSL_API int wolfSSL_sk_SSL_CIPHER_find( 3817 4101 WOLF_STACK_OF(WOLFSSL_CIPHER)* sk, const WOLFSSL_CIPHER* toFind); 3818 WOLFSSL_API WOLF_STACK_OF(WOLFSSL_CIPHER)* wolfSSL_sk_SSL_CIPHER_dup(3819 WOLF_STACK_OF(WOLFSSL_CIPHER)* in);3820 4102 WOLFSSL_API void wolfSSL_sk_SSL_CIPHER_free(WOLF_STACK_OF(WOLFSSL_CIPHER)* sk); 3821 4103 WOLFSSL_API int wolfSSL_sk_SSL_COMP_zero(WOLFSSL_STACK* st); 3822 4104 WOLFSSL_API int wolfSSL_sk_SSL_COMP_num(WOLF_STACK_OF(WOLFSSL_COMP)* sk); 3823 WOLFSSL_API WOLFSSL_CIPHER* wolfSSL_sk_SSL_CIPHER_value( void *ciphers, int idx);4105 WOLFSSL_API WOLFSSL_CIPHER* wolfSSL_sk_SSL_CIPHER_value(WOLFSSL_STACK* sk, int i); 3824 4106 WOLFSSL_API void ERR_load_SSL_strings(void); 3825 4107 WOLFSSL_API void wolfSSL_EC_POINT_dump(const char *msg, const WOLFSSL_EC_POINT *p); … … 3833 4115 WOLFSSL_ASN1_TIME **out); 3834 4116 WOLFSSL_API int wolfSSL_i2c_ASN1_INTEGER(WOLFSSL_ASN1_INTEGER *a, unsigned char **pp); 4117 WOLFSSL_API int wolfSSL_a2i_ASN1_INTEGER(WOLFSSL_BIO *bio, WOLFSSL_ASN1_INTEGER *asn1, 4118 char *buf, int size); 3835 4119 WOLFSSL_API int wolfSSL_X509_CA_num(WOLFSSL_X509_STORE *store); 3836 4120 WOLFSSL_API long wolfSSL_X509_get_version(const WOLFSSL_X509 *x); … … 3844 4128 WOLFSSL_API WOLFSSL_EVP_PKEY* wolfSSL_d2i_AutoPrivateKey( 3845 4129 WOLFSSL_EVP_PKEY** pkey, const unsigned char** data, long length); 3846 WOLFSSL_API unsigned long wolfSSL_X509_subject_name_hash(const WOLFSSL_X509* x509); 3847 3848 3849 #endif /* OPENSSL_EXTRA */ 4130 4131 4132 #endif /* OPENSSL_EXTRA || OPENSSL_EXTRA_X509_SMALL */ 3850 4133 3851 4134 #ifdef HAVE_PK_CALLBACKS … … 3859 4142 #endif 3860 4143 4144 /* This feature is used to set a fixed ephemeral key and is for testing only */ 4145 /* Currently allows ECDHE and DHE only */ 4146 #ifdef WOLFSSL_STATIC_EPHEMERAL 4147 WOLFSSL_API int wolfSSL_CTX_set_ephemeral_key(WOLFSSL_CTX* ctx, int keyAlgo, 4148 const char* key, unsigned int keySz, int format); 4149 WOLFSSL_API int wolfSSL_set_ephemeral_key(WOLFSSL* ssl, int keyAlgo, 4150 const char* key, unsigned int keySz, int format); 4151 #endif 4152 3861 4153 #ifdef __cplusplus 3862 4154 } /* extern "C" */
Note:
See TracChangeset
for help on using the changeset viewer.