| RSA BSAFE Micro Edition Suite |
Streamlined security for mobile and embedded devices |
 
![]() |
00001 /* $Id: ssl.h,v 1.517.4.2 2005/10/12 05:05:22 hpriddle Exp $ */
00002
00003 /*
00004 * Copyright (C) 1999-2003 RSA Security Inc. All rights reserved.
00005 *
00006 * This work contains proprietary information of RSA Security.
00007 * Distribution is limited to authorized licensees of RSA
00008 * Security. Any unauthorized reproduction, distribution or
00009 * modification of this work is strictly prohibited.
00010 */
00011
00016 #ifndef HEADER_SSL_H
00017 #define HEADER_SSL_H
00018
00019 #ifdef __cplusplus
00020 extern "C" {
00021 #endif
00022
00023 #include "r_lib.h"
00024
00025 /* text strings for the ciphers */
00026
00027 #define SSL_TXT_NULL_WITH_MD5 SSL2_TXT_NULL_WITH_MD5
00028 #define SSL_TXT_RC4_128_WITH_MD5 SSL2_TXT_RC4_128_WITH_MD5
00029 #define SSL_TXT_RC4_128_EXPORT40_WITH_MD5 SSL2_TXT_RC4_128_EXPORT40_WITH_MD5
00030 #define SSL_TXT_RC2_128_CBC_WITH_MD5 SSL2_TXT_RC2_128_CBC_WITH_MD5
00031 #define SSL_TXT_RC2_128_CBC_EXPORT40_WITH_MD5 \
00032 SSL2_TXT_RC2_128_CBC_EXPORT40_WITH_MD5
00033 #define SSL_TXT_IDEA_128_CBC_WITH_MD5 SSL2_TXT_IDEA_128_CBC_WITH_MD5
00034 #define SSL_TXT_DES_64_CBC_WITH_MD5 SSL2_TXT_DES_64_CBC_WITH_MD5
00035 #define SSL_TXT_DES_64_CBC_WITH_SHA SSL2_TXT_DES_64_CBC_WITH_SHA
00036 #define SSL_TXT_DES_192_EDE3_CBC_WITH_MD5 SSL2_TXT_DES_192_EDE3_CBC_WITH_MD5
00037 #define SSL_TXT_DES_192_EDE3_CBC_WITH_SHA SSL2_TXT_DES_192_EDE3_CBC_WITH_SHA
00038
00039 #define SSL_MAX_SSL_SESSION_ID_LENGTH 32
00040 #define SSL_MAX_SID_CTX_LENGTH 32
00041
00042 #define SSL_MIN_RSA_MODULUS_LENGTH_IN_BYTES (512/8)
00043 #define SSL_MAX_KEY_ARG_LENGTH 8
00044 #define SSL_MAX_MASTER_KEY_LENGTH 48
00045
00046 /*
00047 * Maximum size has increased at the EVP interface to support AES, SHA-256 etc.
00048 * Since SSLC-ME now supports AES their is no need of an SSLC_SMALL_CODE define
00049 * here, unless to save space when AES is not being used in SSLC-ME.
00050 */
00051 #ifdef SSLC_SMALL_CODE
00052 #ifdef NO_AES
00053 #define SSL_MAX_MD_SIZE 20
00054 #define SSL_MAX_KEY_LENGTH 24
00055 #define SSL_MAX_IV_LENGTH 8
00056 #endif /* NO_AES */
00057 #endif /* SSLC_SMALL_CODE */
00058
00059 #ifndef SSL_MAX_MD_SIZE
00060 #ifndef EVP_MAX_MD_SIZE
00061 #define SSL_MAX_MD_SIZE 64
00062 #define SSL_MAX_KEY_LENGTH 32
00063 #define SSL_MAX_IV_LENGTH 32
00064 #else
00065 #define SSL_MAX_MD_SIZE EVP_MAX_MD_SIZE
00066 #define SSL_MAX_KEY_LENGTH EVP_MAX_KEY_LENGTH
00067 #define SSL_MAX_IV_LENGTH EVP_MAX_IV_LENGTH
00068 #endif /* EVP_MAX_MD_SIZE */
00069 #endif /* SSL_MAX_MD_SIZE */
00070
00071 /* These are used to specify which ciphers to use and not to use */
00072
00073 #define SSL_TXT_LOW "LOW"
00074 #define SSL_TXT_MEDIUM "MEDIUM"
00075 #define SSL_TXT_HIGH "HIGH"
00076
00077 #define SSL_TXT_kFZA "kFZA"
00078 #define SSL_TXT_aFZA "aFZA"
00079 #define SSL_TXT_eFZA "eFZA"
00080 #define SSL_TXT_FZA "FZA"
00081
00082 #define SSL_TXT_aNULL "aNULL"
00083 #define SSL_TXT_eNULL "eNULL"
00084 #define SSL_TXT_NULL "NULL"
00085
00086 #define SSL_TXT_TLSV1 "TLSv1"
00087
00088 #define SSL_TXT_kRSA "kRSA"
00089
00090 #define SSL_TXT_kDHr "kDHr"
00091 #define SSL_TXT_kDHd "kDHd"
00092 #define SSL_TXT_kEDH "kEDH"
00093 #define SSL_TXT_aDSS "aDSS"
00094 #define SSL_TXT_aDH "aDH"
00095 #define SSL_TXT_DSS "DSS"
00096 #define SSL_TXT_DH "DH"
00097 #define SSL_TXT_EDH "EDH"
00098 #define SSL_TXT_ADH "ADH"
00099 #define SSL_TXT_DES "DES"
00100 #define SSL_TXT_3DES "3DES"
00101 #define SSL_TXT_RC2 "RC2"
00102 #define SSL_TXT_IDEA "IDEA"
00103 #define SSL_TXT_SHA "SHA"
00104 #define SSL_TXT_SSLV2 "SSLv2"
00105
00106 #define SSL_TXT_aRSA "aRSA"
00107 #define SSL_TXT_RSA "RSA"
00108 #define SSL_TXT_RC4 "RC4"
00109 #define SSL_TXT_MD5 "MD5"
00110 #define SSL_TXT_SHA1 "SHA1"
00111 #define SSL_TXT_EXP "EXP"
00112 #define SSL_TXT_EXPORT "EXPORT"
00113
00114 #define SSL_TXT_SSLV3 "SSLv3"
00115
00116 #define SSL_TXT_AES "AES"
00117
00118 #define SSL_TXT_ALL "ALL"
00119
00161 /* SSL features - run time controlled features */
00180 #define SSL_FEATURE_DH 0x00000001
00181
00189 #define SSL_FEATURE_DSA 0x00000002
00190
00198 #define SSL_FEATURE_ALLOW_ENULL 0x00000004
00199
00207 #define SSL_FEATURE_ALLOW_ANULL 0x00000008
00208
00217 #define SSL_FEATURE_ALLOW_ADH SSL_FEATURE_ALLOW_ANULL
00218
00223 #define SSL_TMP_512_RSA 0x0001
00224
00226 #define SSL_TMP_512_DH 0x0002
00227
00229 #define SSL_TMP_1024_DH 0x0004
00230
00232 #define SSL_TMP_2048_DH 0x0008
00233
00235 #define SSL_TMP_1024_RSA 0x0010
00236
00238 #define SSL_TMP_GENERATE_NOW 0
00239
00241 #define SSL_TMP_GENERATE_LATER 1
00242
00257 #define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1
00258
00259 #ifndef NO_PEM
00260
00261 #endif
00262
00263 #define SSL_FILETYPE_PEM X509_FILETYPE_PEM
00264
00265 #define SSL_FILETYPE_HARDWARE 4
00266
00271 /* Options for setting the message size for handshake certificates */
00272
00283 #define SSL_SZ_CERT_ALL 100
00284
00285 #define SSL_SZ_CLIENT_CERT 101
00286
00287 #define SSL_SZ_SERVER_CERT 102
00288
00289 #if defined(MSDOS) && !defined(WIN32)
00290
00291 #define SSL_SZ_CERT_DEFAULT_SZ 30720
00292 #else
00293
00294 #define SSL_SZ_CERT_DEFAULT_SZ 102400
00295 #endif
00296
00301 /* version number for ASN.1 encoding of the session information */
00302
00303 /*
00304 * Version 0 - initial version - pre SSL-C 1.0
00305 * Version 1 - added the optional peer certificate - SSL-C 1.0
00306 */
00307
00308 #define SSL_SESSION_ASN1_VERSION 0x0001
00309
00374 #define SSL_OP_MICROSOFT_SESS_ID_BUG 0x00000001L
00375
00388 #define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x00000002L
00389
00397 #define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x00000008L
00398
00406 #define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x00000010L
00407
00415 #define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x00000020L
00416
00423 #define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x00000040L
00424
00430 #define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x00000080L
00431
00439 #define SSL_OP_TLS_D5_BUG 0x00000100L
00440
00446 #define SSL_OP_TLS_BLOCK_PADDING_BUG 0x00000200L
00447
00456 #define SSL_OP_TLS_ROLLBACK_BUG 0x00000400L
00457
00463 #define SSL_OP_MS_SGC 0x00000800L
00464
00468 #define SSL_OP_DHANON_NULL_SIGNATURE_OK 0x00001000L
00469
00486 #define SSL_OP_ALL 0x0000FFFFL
00487
00490 #define SSL_OP_MULTIPRIME_TMP_RSA_KEYS 0x00010000L
00491
00496 #define SSL_OP_QUIET_SHUTDOWN 0x00020000L
00497
00502 #define SSL_OP_ANYTIME_SHUTDOWN 0x00040000L
00503
00507 #define SSL_OP_SSLC2_DH_BUG 0x00080000L
00508
00512 #define SSL_OP_SINGLE_DH_USE 0x00100000L
00513
00516 #define SSL_OP_EPHEMERAL_RSA 0x00200000L
00517
00530 #define SSL_OP_REUSE_DELAY_CLIENT_FINISHED 0x00400000L
00531
00538 #define SSL_OP_DELAY_READ_SERVER_FINISHED 0x00800000L
00539
00545 #define SSL_OP_NO_SSLv2 0x01000000L
00546
00552 #define SSL_OP_NO_SSLv3 0x02000000L
00553
00559 #define SSL_OP_NO_TLSv1 0x04000000L
00560
00564 #define SSL_OP_PKCS1_CHECK_1 0x08000000L
00565
00569 #define SSL_OP_PKCS1_CHECK_2 0x10000000L
00570
00579 #define SSL_OP_NETSCAPE_CA_DN_BUG 0x20000000L
00580
00585 #define SSL_OP_NON_EXPORT_FIRST 0x40000000L
00586
00589 #define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x80000000L
00590
00594 #ifndef NO_SESSION_CACHE
00595
00667 #define SSL_SESS_CACHE_OFF 0x0000
00668
00673 #define SSL_SESS_CACHE_CLIENT 0x0001
00674
00677 #define SSL_SESS_CACHE_SERVER 0x0002
00678
00683 #define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER)
00684
00688 #define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080
00689
00690 #ifndef SSLC_SMALL_CODE
00691
00699 #define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100
00700 #endif /* !SSLC_SMALL_CODE */
00701
00708 #define SSL_SESS_CACHE_OFF_NON_ZERO_ID 0x0200
00709
00715 #define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024*20)
00716 /* end group SSL_SESS_CACHE_MODE_DEF */
00732 #define SSL_EXT_SESS_CACHE_ADD 1
00733
00736 #define SSL_EXT_SESS_CACHE_DEL 2
00737
00740 #define SSL_EXT_SESS_CACHE_FIND 3
00741 /* end group SSL_EXT_SESS_DEF */
00746 #endif /* !NO_SESSION_CACHE */
00747
00748
00766 #define SSL_NOTHING 1
00767
00770 #define SSL_WRITING 2
00771
00774 #define SSL_READING 3
00775
00778 #define SSL_X509_LOOKUP 4
00779 /* end group SSL Non-Blocking IO States */
00784 /* take out SSL v2 for SSL-C ME and small code builds */
00785 #if !defined(NO_SSL2) || defined(NO_SSL2IMPL)
00786 #include "ssl2.h"
00787 #include "ssl23.h"
00788 #endif /* !NO_SSL2 && !NO_SSL2IMPL */
00789 #include "ssl3.h"
00790 #include "tls1.h" /* mostly sslv3 with some modifications */
00791
00807 #define SSL_ST_CONNECT 0x1000
00808
00809 #define SSL_ST_ACCEPT 0x2000
00810
00811 #define SSL_ST_MASK 0x0FFF
00812
00815 #define SSL_ST_INIT (SSL_ST_CONNECT|SSL_ST_ACCEPT)
00816
00817 #define SSL_ST_BEFORE 0x4000
00818
00819 #define SSL_ST_OK 0x03
00820
00821 #define SSL_ST_RENEGOTIATE (0x04|SSL_ST_INIT)
00822
00823 #define SSL_CB_LOOP 0x01
00824
00825 #define SSL_CB_EXIT 0x02
00826
00827 #define SSL_CB_READ 0x04
00828
00829 #define SSL_CB_WRITE 0x08
00830
00831 #define SSL_CB_ALERT 0x4000
00832
00833 #define SSL_CB_READ_ALERT (SSL_CB_ALERT|SSL_CB_READ)
00834
00835 #define SSL_CB_WRITE_ALERT (SSL_CB_ALERT|SSL_CB_WRITE)
00836
00837 #define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT|SSL_CB_LOOP)
00838
00839 #define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT|SSL_CB_EXIT)
00840
00841 #define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT|SSL_CB_LOOP)
00842
00843 #define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT|SSL_CB_EXIT)
00844
00845 #define SSL_CB_HANDSHAKE_START 0x10
00846
00847 #define SSL_CB_HANDSHAKE_DONE 0x20
00848 /* end group SSL_PROTOCOL_STATE_IDS */
00853 /*
00854 * The following 2 states are kept in ssl->rstate when reads fail,
00855 * you should not need these
00856 */
00857
00858 #define SSL_ST_READ_HEADER 0xF0
00859 #define SSL_ST_READ_BODY 0xF1
00860 #define SSL_ST_READ_DONE 0xF2
00861
00900 #define SSL_VERIFY_NONE 0x00
00901
00904 #define SSL_VERIFY_PEER 0x01
00905
00909 #define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
00910
00914 #define SSL_VERIFY_CLIENT_ONCE 0x04
00915 /* end group SSL_VERIFY_MODE_DEF */
00921 #define SSL_FLUSH_ALL 0
00922
00923 #define SSL_FLUSH_OLD 1
00924
00925 #define SSL_AD_REASON_OFFSET 1000
00926
00927 /* These alert types are for SSLv3 and TLSv1 */
00928
00929 #define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY
00930
00931 #define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE
00932
00933 #define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC
00934 #define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED
00935 #define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW
00936
00937 #define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE
00938
00939 #define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE
00940
00941 #define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE
00942 #define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE
00943 #define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE
00944 #define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED
00945 #define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED
00946 #define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN
00947
00948 #define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER
00949
00950 #define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA
00951
00952 #define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED
00953
00954 #define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR
00955 #define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR
00956
00957 #define SSL_AD_EXPORT_RESTRICION TLS1_AD_EXPORT_RESTRICION
00958
00959 #define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION
00960
00961 #define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY
00962
00963 #define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR
00964 #define SSL_AD_USER_CANCLED TLS1_AD_USER_CANCLED
00965 #define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION
00966
00980 #define SSL_ERROR_NONE 0
00981
00985 #define SSL_ERROR_SSL 1
00986
00993 #define SSL_ERROR_WANT_READ 2
00994
01001 #define SSL_ERROR_WANT_WRITE 3
01002
01008 #define SSL_ERROR_WANT_X509_LOOKUP 4
01009
01013 #define SSL_ERROR_SYSCALL 5
01014
01018 #define SSL_ERROR_ZERO_RETURN 6
01019
01023 #define SSL_ERROR_WANT_CONNECT 7
01024 /* end group SSL_ERROR_CODE_DEF */
01029 #define SSL_CTRL_NEED_TMP_RSA 1
01030 #define SSL_CTRL_SET_TMP_RSA 2
01031 #define SSL_CTRL_SET_TMP_DH 3
01032 #define SSL_CTRL_SET_TMP_RSA_CB 4
01033 #define SSL_CTRL_SET_TMP_DH_CB 5
01034
01035 /* #define SSL_CTRL_GET_SESSION_REUSED 6 */
01036
01037 #define SSL_CTRL_GET_CLIENT_CERT_REQUEST 7
01038 #define SSL_CTRL_GET_NUM_RENEGOTIATIONS 8
01039 #define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 9
01040 #define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 10
01041 #define SSL_CTRL_GET_FLAGS 11
01042 #define SSL_CTRL_EXTRA_CHAIN_CERT 12
01043 #define SSL_CTRL_NEED_TMP_RSA512 13
01044 #define SSL_CTRL_NEED_TMP_RSA1024 14
01045 #define SSL_CTRL_SET_TMP_RSA512 15
01046 #define SSL_CTRL_SET_TMP_RSA1024 16
01047 #define SSL_CTRL_ADD_EXPLICIT_CERT_CHAIN 17
01048 #define SSL_CTRL_CLEAR_EXPLICIT_CERT_CHAIN 18
01049
01050 /* Stats */
01051
01052 #define SSL_CTRL_SESS_NUMBER 20
01053 #define SSL_CTRL_SESS_CONNECT 21
01054 #define SSL_CTRL_SESS_CONNECT_GOOD 22
01055 #define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23
01056 #define SSL_CTRL_SESS_ACCEPT 24
01057 #define SSL_CTRL_SESS_ACCEPT_GOOD 25
01058 #define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26
01059 #define SSL_CTRL_SESS_HIT 27
01060 #define SSL_CTRL_SESS_CB_HIT 28
01061 #define SSL_CTRL_SESS_MISSES 29
01062 #define SSL_CTRL_SESS_TIMEOUTS 30
01063 #define SSL_CTRL_SESS_CACHE_FULL 31
01064 #define SSL_CTRL_OPTIONS 32
01065
01066 #define SSL_CTRL_SET_SESS_CACHE_SIZE 42
01067 #define SSL_CTRL_GET_SESS_CACHE_SIZE 43
01068 #define SSL_CTRL_SET_SESS_CACHE_MODE 44
01069 #define SSL_CTRL_GET_SESS_CACHE_MODE 45
01070 #define SSL_CTRL_SET_MESSAGE_SIZE 46
01071 #define SSL_CTRL_GET_MESSAGE_SIZE 47
01072
01073 #define SSL_CTRL_SET_WRITE_BUFFER_SIZE 50
01074 #define SSL_CTRL_GET_WRITE_BUFFER_SIZE 51
01075
01076 #define SSL_CTRL_SET_DEBUG 52
01077
01078 #define SSL_CTRL_SET_READ_BUFFER_SIZE 53
01079 #define SSL_CTRL_GET_READ_BUFFER_SIZE 54
01080
01081 #define SSL_CTRL_GET_REFERENCES 55
01082
01083 #define SSL_CTRL_SET_RSA_BLINDING_MODE 56
01084
01085 #define SSL_CTRL_SET_MAX_RSA_N_SIZE 57
01086 #define SSL_CTRL_SET_MAX_RSA_E_SIZE 58
01087
01088
01089 /*
01090 * 'DEFAULT' at the start of the cipher list insert the following string
01091 * in addition to this being the default cipher string
01092 *
01093 */
01094
01095 #ifdef SSLC_SMALL_CODE
01096
01097 #define SSL_DEFAULT_CIPHER_LIST "AES256-SHA:AES128-SHA:DES-CBC3-SHA:DES-CBC-SHA:RC4-SHA:RC4-MD5:EXP-DES-CBC-SHA:EXP-RC4-MD5:NULL-SHA:NULL-MD5"
01098
01099 #else /* !SSLC_SMALL_CODE */
01100
01101 #ifndef NO_RSA
01102 #define SSL_DEFAULT_CIPHER_LIST \
01103 "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP"
01104 #else /* !NO_RSA */
01105 #ifdef SSL_ALLOW_ADH
01106 #define SSL_DEFAULT_CIPHER_LIST "HIGH:MEDIUM:LOW:ADH+3DES:ADH+RC4:ADH+DES:+EXP"
01107 #else /* !SSL_ALLOW_ADH */
01108 #define SSL_DEFAULT_CIPHER_LIST "HIGH:MEDIUM:LOW:+EXP"
01109 #endif /* SSL_ALLOW_ADH */
01110 #endif /* NO_RSA */
01111
01112 #endif /* SSLC_SMALL_CODE */
01113
01114 /* Used in SSL_set_shutdown() / SSL_get_shutdown(); */
01115
01117 #define SSL_SENT_SHUTDOWN 1
01118
01119 #define SSL_RECEIVED_SHUTDOWN 2
01120
01121 /* Take out headers not needed for small code build, such as SSL-C ME */
01122 #ifndef SSLC_SMALL_CODE
01123 #include "vercfg.h"
01124 #else /* SSLC_SMALL_CODE */
01125 #include "r_time.h"
01126 #endif /* SSLC_SMALL_CODE */
01127
01128 /* data types are opaque for the library-internal functions when
01129 * compiling user code - there are typedefs for all the required
01130 * datatypes referenced in the ssl structures (which
01131 * remain visible for compatibility)
01132 */
01133 #ifndef HEADER_COMMON_STACK_H_TYPEDEF_DEF
01134 #define HEADER_COMMON_STACK_H_TYPEDEF_DEF
01135 typedef struct stack_st STACK;
01136 #endif
01137
01138 #ifndef HEADER_COMMON_EVP_H_TYPEDEF_DEF
01139 #define HEADER_COMMON_EVP_H_TYPEDEF_DEF
01140 typedef struct evp_md_st EVP_MD;
01141 typedef struct evp_md_ctx_st EVP_MD_CTX;
01142 typedef struct evp_cipher_st EVP_CIPHER;
01143 typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
01144
01161 typedef struct evp_pkey_st EVP_PKEY;
01162
01163 /* To remove a dependence of the old evp on ASN.1 definitions */
01164 typedef void EVP_ASN1_TYPE;
01165 #endif /* HEADER_COMMON_EVP_H */
01166
01167 #ifndef HEADER_COMMON_E_ENCODE_H
01168 #define HEADER_COMMON_E_ENCODE_H
01169 typedef struct evp_encode_ctx_st EVP_ENCODE_CTX;
01170 #endif /* HEADER_COMMON_E_ENCODE_H */
01171
01172 #ifndef HEADER_COMMON_DH_H_TYPEDEF_DEF
01173 #define HEADER_COMMON_DH_H_TYPEDEF_DEF
01174 typedef struct dh_st DH;
01175 #endif /* HEADER_COMMON_DH_H_TYPEDEF_DEF */
01176
01177 #ifndef HEADER_COMMON_RSA_H_TYPEDEF_DEF
01178 #define HEADER_COMMON_RSA_H_TYPEDEF_DEF
01179 typedef struct rsa_surrender_st RSA_SURRENDER;
01180 typedef struct rsa_st RSA;
01181 #endif /* HEADER_COMMON_RSA_H_TYPEDEF_DEF */
01182
01183 #ifndef HEADER_COMMON_RSA_H
01184 typedef struct rsa_meth_st RSA_METHOD;
01185
01186 RSA * R_CDECL RSA_new(void);
01187 void R_CDECL RSA_free(RSA *rsa);
01188 RSA * R_CDECL RSA_dup(RSA *rsa);
01189 int R_CDECL RSA_size(RSA *rsa);
01190
01191 RSA_METHOD * R_CDECL RSA_default_method(void);
01192 RSA * R_CDECL RSA_new_method(RSA_METHOD *method);
01193 void R_CDECL RSA_set_default_method(RSA_METHOD *method);
01194 #endif /* HEADER_COMMON_RSA_H */
01195
01196 #include "cert.h"
01197
01198 #ifndef HEADER_COMMON_RSA_H_TYPEDEF_DEF
01199 #define HEADER_COMMON_RSA_H_TYPEDEF_DEF
01200 typedef struct rsa_surrender_st RSA_SURRENDER;
01201 typedef struct rsa_st RSA;
01202 #endif /* HEADER_COMMON_RSA_H_TYPEDEF_DEF */
01203
01204 #ifndef HEADER_PEM_H_TYPEDEF_DEF
01205 #define HEADER_PEM_H_TYPEDEF_DEF
01206 typedef int R_CDECL PEM_PASSWORD_CB_T(char *buf, int len, int flag);
01207 #endif /* HEADER_PEM_H_TYPEDEF_DEF */
01208
01213 typedef struct ssl_ctx_st SSL_CTX;
01214
01215 #ifndef HEADER_SSL_H_TYPEDEF_DEF
01216 #define HEADER_SSL_H_TYPEDEF_DEF
01217
01222 typedef struct ssl_st SSL;
01223 #endif /* HEADER_SSL_H_TYPEDEF_DEF*/
01224
01225
01232 typedef struct ssl_cipher_st SSL_CIPHER;
01233
01240 typedef struct ssl_method_st SSL_METHOD;
01241
01242
01252 typedef struct ssl_session_st SSL_SESSION;
01258 typedef struct ssl_simple_session_cache_st SSL_SIMPLE_SESSION_CACHE;
01259
01260 #ifndef HEADER_X509_H_TYPEDEF_DEF
01261 #define HEADER_X509_H_TYPEDEF_DEF
01262 typedef struct x509_st X509;
01263 typedef struct X509_name_entry_st X509_NAME_ENTRY;
01264 typedef struct x509_store_st X509_STORE;
01265 typedef struct x509_store_state_st X509_STORE_CTX;
01266 #ifdef X509_NAME
01267 /*
01268 * wincrypt.h defines this name as well
01269 */
01270 #undef X509_NAME
01271 #endif /* X509_NAME */
01272 typedef struct X509_name_st X509_NAME;
01273 #endif /* HEADER_X509_H_TYPEDEF_DEF */
01274
01275
01286 SSL_SESSION * R_CDECL SSL_SESSION_new(void);
01287 unsigned long R_CDECL SSL_SESSION_hash(SSL_SESSION *sess);
01288 int R_CDECL SSL_SESSION_cmp(SSL_SESSION *sessa, SSL_SESSION *sessb);
01289 void R_CDECL SSL_SESSION_free(SSL_SESSION *sess);
01290 int R_CDECL i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp);
01291 void R_CDECL SSL_SESSION_reference_inc(SSL_SESSION *sess);
01292 int R_CDECL SSL_set_session(SSL *ssl, SSL_SESSION *sess);
01293 SSL_SESSION * R_CDECL d2i_SSL_SESSION(SSL_SESSION **sess,
01294 unsigned char **pp, long length);
01295 R_TIME_T * R_CDECL SSL_SESSION_get_time(SSL_SESSION *sess, R_TIME_T *stime);
01296 R_TIME_T * R_CDECL SSL_SESSION_set_time(SSL_SESSION *sess, R_TIME_T *stime);
01297 long R_CDECL SSL_SESSION_get_timeout(SSL_SESSION *sess);
01298 long R_CDECL SSL_SESSION_set_timeout(SSL_SESSION *sess, long tmout);
01299 void R_CDECL SSL_copy_session(SSL *to,SSL *from);
01300 SSLCERT * R_CDECL SSL_SESSION_get_peer_certificate(SSL_SESSION *sess);
01301 int R_CDECL SSL_SESSION_get_master_key_length(SSL_SESSION *sess);
01302 unsigned char * R_CDECL SSL_SESSION_get_master_key(SSL_SESSION *sess);
01303 unsigned int R_CDECL SSL_SESSION_get_session_id_length(SSL_SESSION *sess);
01304 unsigned char * R_CDECL SSL_SESSION_get_session_id(SSL_SESSION *sess);
01305 int R_CDECL SSL_SESSION_set_not_reusable(SSL_SESSION *sess);
01306 int R_CDECL SSL_SESSION_get_not_reusable(SSL_SESSION *sess);
01307 /* end group SESSION_MANAGEMENT_FUNCS */
01313 #if defined(HEADER_COMMON_BIO_H) || defined(DOXYGEN)
01314
01339 BIO_METHOD * R_CDECL BIO_f_ssl(void);
01340 BIO * R_CDECL BIO_new_ssl(SSL_CTX *ctx,int client);
01341 BIO * R_CDECL BIO_new_ssl_connect(SSL_CTX *ctx);
01342 BIO * R_CDECL BIO_new_buffer_ssl_connect(SSL_CTX *ctx);
01343 int R_CDECL BIO_ssl_copy_session(BIO *to,BIO *from);
01344 int R_CDECL BIO_ssl_shutdown(BIO *bio);
01345 /* end group BIO_SSL_FUNCS */
01354 int R_CDECL SSL_SESSION_print(BIO *bio, SSL_SESSION *sess);
01355 SSL_SESSION * R_CDECL d2i_SSL_SESSION_bio(BIO *bio, unsigned char **s_id);
01356 int R_CDECL i2d_SSL_SESSION_bio(BIO *bio, SSL_SESSION *sess);
01357 int R_CDECL PEM_write_bio_SSL_SESSION(BIO *bio, SSL_SESSION *sess);
01358 SSL_SESSION * R_CDECL PEM_read_bio_SSL_SESSION(BIO *bio, SSL_SESSION **sess,
01359 PEM_PASSWORD_CB_T *callback);
01360
01361 #ifndef NO_FP_API
01362 int R_CDECL SSL_SESSION_print_fp(FILE *fp, SSL_SESSION *sess);
01363 SSL_SESSION * R_CDECL PEM_read_SSL_SESSION(FILE *fp, SSL_SESSION **sess,
01364 PEM_PASSWORD_CB_T *callback);
01365 int R_CDECL PEM_write_SSL_SESSION(FILE *fp, SSL_SESSION *sess);
01366 #endif /* !NO_FP_API */
01367
01368 /* end group SESSION_MANAGEMENT_FUNCS */
01372 #endif /* (HEADER_COMMON_BIO_H) || (DOXYGEN) */
01373
01397 #define SSL_is_init_finished(ssl) (SSL_state(ssl) == SSL_ST_OK)
01398
01411 #define SSL_in_init(ssl) (SSL_state(ssl)&SSL_ST_INIT)
01412
01426 #define SSL_in_before(ssl) (SSL_state(ssl)&SSL_ST_BEFORE)
01427
01441 #define SSL_in_connect_init(ssl) (SSL_state(ssl)&SSL_ST_CONNECT)
01442
01456 #define SSL_in_accept_init(ssl) (SSL_state(ssl)&SSL_ST_ACCEPT)
01457
01458 /* end group SSL_PROTOCOL_FUNCS */
01496 #define SSL_add_explicit_cert_chain(ssl,x509) \
01497 SSL_ctrl((ssl),SSL_CTRL_ADD_EXPLICIT_CERT_CHAIN,0,(char *)x509)
01498
01516 #define SSL_set_max_rsa_n_size(ssl,size) \
01517 SSL_ctrl((ssl),SSL_CTRL_SET_MAX_RSA_N_SIZE,(size),NULL)
01518
01536 #define SSL_set_max_rsa_e_size(ssl,size) \
01537 SSL_ctrl((ssl),SSL_CTRL_SET_MAX_RSA_E_SIZE,(size),NULL)
01538
01539
01553 #define SSL_clear_explicit_cert_chain(ssl) \
01554 SSL_ctrl((ssl),SSL_CTRL_CLEAR_EXPLICIT_CERT_CHAIN,0,NULL)
01555 /* end group SSL_CONNECTION_STATUS_FUNCS */
01587 #define SSL_CTX_sess_set_cache_size(ctx, csize) \
01588 SSL_CTX_ctrl((ctx), SSL_CTRL_SET_SESS_CACHE_SIZE, (csize), NULL)
01589
01603 #define SSL_CTX_sess_get_cache_size(ctx) \
01604 SSL_CTX_ctrl((ctx), SSL_CTRL_GET_SESS_CACHE_SIZE, 0, NULL)
01605
01626 #define SSL_CTX_set_session_cache_mode(ctx,mode) \
01627 (int)SSL_CTX_ctrl((ctx), SSL_CTRL_SET_SESS_CACHE_MODE, (mode), NULL)
01628
01643 #define SSL_CTX_get_session_cache_mode(ctx) \
01644 (int)SSL_CTX_ctrl((ctx), SSL_CTRL_GET_SESS_CACHE_MODE, 0, NULL)
01645
01663 #define SSL_CTX_set_max_rsa_n_size(ssl,size) \
01664 SSL_CTX_ctrl((ssl_ctx),SSL_CTRL_SET_MAX_RSA_N_SIZE,(size),NULL)
01665
01684 #define SSL_CTX_set_max_rsa_e_size(ssl,size) \
01685 SSL_CTX_ctrl((ssl_ctx),SSL_CTRL_SET_MAX_RSA_E_SIZE,(size),NULL)
01686
01687
01688
01689
01701 typedef int R_CDECL SSL_SESS_NEW_CB_T(SSL *ssl, SSL_SESSION *session);
01702 void R_CDECL SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, SSL_SESS_NEW_CB_T *new_session_cb);
01703 SSL_SESS_NEW_CB_T * R_CDECL SSL_CTX_sess_get_new_cb(SSL_CTX *ctx);
01704
01716 typedef void R_CDECL SSL_SESS_REMOVE_CB_T(SSL_CTX *ssl, SSL_SESSION *session);
01717 void R_CDECL SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx,
01718 SSL_SESS_REMOVE_CB_T *remove_session_cb);
01719 SSL_SESS_REMOVE_CB_T * R_CDECL SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx);
01720
01741 typedef SSL_SESSION * R_CDECL SSL_SESS_GET_CB_T(SSL *ssl, unsigned char *sess_id,
01742 int id_len, int *copyflag);
01743 void R_CDECL SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, SSL_SESS_GET_CB_T *get_session_cb);
01744 SSL_SESS_GET_CB_T * R_CDECL SSL_CTX_sess_get_get_cb(SSL_CTX *ctx);
01745 int R_CDECL SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *sess);
01746 int R_CDECL SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *sess);
01747 int R_CDECL SSL_CTX_flush_sessions(SSL_CTX *ctx, int timeout);
01748 /* end group SSL_SESSION_CACHE_FUNCS */
01777 typedef void R_CDECL SSL_INFO_CB_T(SSL *ssl, int where, int ret);
01778
01779 void R_CDECL SSL_CTX_set_info_cb(SSL_CTX *ctx, SSL_INFO_CB_T *cb);
01780 SSL_INFO_CB_T * R_CDECL SSL_CTX_get_info_cb(SSL_CTX *ctx);
01793 #define SSL_get_references(ssl) \
01794 SSL_ctrl((ssl), SSL_CTRL_GET_REFERENCES, 0, NULL)
01795
01804 #define SSL_CTX_get_references(ctx) \
01805 SSL_CTX_ctrl((ctx), SSL_CTRL_GET_REFERENCES, 0, NULL)
01806
01807 /* API cleanups */
01808 #include "ssl_lib.h"
01809
01810
01815 /* These will only be used when doing non-blocking I/O */
01831 #define SSL_want_nothing(ssl) (SSL_want(ssl) == SSL_NOTHING)
01832
01849 #define SSL_want_read(ssl) (SSL_want(ssl) == SSL_READING)
01850
01851
01868 #define SSL_want_write(ssl) (SSL_want(ssl) == SSL_WRITING)
01869
01886 #define SSL_want_x509_lookup(ssl) (SSL_want(ssl) == SSL_X509_LOOKUP)
01887 /* end group SSL_PROTOCOL_FUNCS */
01888
01889
01907 #define SSL_BLINDING_MODE_OFF 0x00
01908
01912 #define SSL_BLINDING_MODE_NO_UPDATE 0x01
01913
01917 #define SSL_BLINDING_MODE_FULL_UPDATE 0x02
01918
01937 #define SSL_DEFAULT_MAX_RSA_N_SIZE 8192
01938
01942 #define SSL_DEFAULT_MAX_RSA_E_SIZE 128
01943
01948 #define SSL_DEFAULT_MAX_RSA_N_SIZE 8192
01949
01953 #define SSL_DEFAULT_MAX_RSA_E_SIZE 128
01954
01970 SSL_CTX * R_CDECL SSL_CTX_new(SSL_METHOD *meth);
01971 void R_CDECL SSL_CTX_free(SSL_CTX *ctx);
01972 int R_CDECL SSL_CTX_set_cipher_list(SSL_CTX *ctx, char *str);
01973
01978 typedef int SSL_CTX_INFO;
01979 int R_CDECL SSL_CTX_set_info(SSL_CTX *ssl_ctx, SSL_CTX_INFO info_id, void *value);
01980 int R_CDECL SSL_CTX_get_info(SSL_CTX *ssl_ctx, SSL_CTX_INFO info_id, void *value);
01981 int R_CDECL SSL_CTX_set_R_LIB_CTX(SSL_CTX *ssl_ctx, R_LIB_CTX *lib_ctx, int mode);
01982
01995 #define SSL_CTX_set_rsa_blinding_mode(ctx,mode) \
01996 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_RSA_BLINDING_MODE,mode,NULL)
01997
01998 /* end group SSL_CTX_FUNCS */
02019 #define SSLC_FIPS140_SSL_MODE R_LIB_CTX_FIPS140_MODE
02020
02026 #define SSLC_NON_FIPS140_MODE R_LIB_CTX_STANDARD_MODE
02027
02033 #define SSLC_HARDWARE_MODE R_LIB_CTX_HARDWARE_MODE
02034
02040 #define SSLC_SOFTWARE_MODE R_LIB_CTX_SOFTWARE_MODE
02041
02089 #define SSL_CTX_INFO_R_LIB_CTX 1
02090
02091 #ifndef NO_FIPS
02092
02106 #endif
02107 #define SSL_CTX_INFO_FIPS140_MODE 2
02108
02109 /* end-SSL_CTX_INFO_TYPE */
02114 #define SSL_CTX_INFO_R_CR_CTX 3
02115 #define SSL_CTX_INFO_METH_DATA 4
02116
02158 #define SSL_INFO_R_LIB_CTX SSL_CTX_INFO_R_LIB_CTX
02159
02160 #ifndef NO_FIPS
02161
02175 #endif /* NO_FIPS */
02176 #define SSL_INFO_FIPS140_MODE SSL_CTX_INFO_FIPS140_MODE
02177
02178 /* end-SSL_INFO_TYPE */
02183 #define SSL_INFO_R_CR_CTX SSL_CTX_INFO_R_CR_CTX
02184 #define SSL_INFO_METH_DATA SSL_CTX_INFO_METH_DATA
02185
02190 int R_CDECL SSL_set_cipher_list(SSL *ssl, char *str);
02191 char * R_CDECL SSL_get_cipher_list(SSL *ssl,int idx);
02192 char * R_CDECL SSL_get_shared_ciphers(SSL *ssl, char *buffer, int len);
02193 STACK * R_CDECL SSL_get_ciphers(SSL *ssl);
02194
02195 void R_CDECL SSL_set_connect_state(SSL *ssl);
02196 void R_CDECL SSL_set_accept_state(SSL *ssl);
02197
02198 int R_CDECL SSL_get_peer_cert_chain_count(SSL *ssl);
02199 SSLCERT * R_CDECL SSL_get_peer_cert_chain_item(SSL *ssl, int n);
02200 int R_CDECL SSL_get_ciphers_count(SSL *ssl);
02201 SSL_CIPHER * R_CDECL SSL_get_ciphers_item(SSL *ssl, int n);
02202
02203 int R_CDECL SSL_pending(SSL *ssl);
02204 char * R_CDECL SSL_get_version(SSL *ssl);
02205
02206 SSLCERT * R_CDECL SSL_get_certificate(SSL *ssl);
02207 SSLCERT_PKEY * R_CDECL SSL_get_privatekey(SSL *ssl);
02222 SSL_CIPHER * R_CDECL SSL_get_current_cipher(SSL *ssl);
02223 int R_CDECL SSL_CIPHER_get_bits(SSL_CIPHER *cipher, int *alg_bits);
02224 unsigned long R_CDECL SSL_CIPHER_get_id(SSL_CIPHER *cipher);
02225 char * R_CDECL SSL_CIPHER_get_version(SSL_CIPHER *cipher);
02226 char * R_CDECL SSL_CIPHER_get_name(SSL_CIPHER *cipher);
02227 int R_CDECL SSL_CIPHER_get_valid(SSL_CIPHER *cipher);
02228 char * R_CDECL SSL_CIPHER_description(SSL_CIPHER *cipher, char *buffer, int size);
02229 /* end group SSL_CIPHER_MANAGEMENT_FUNCS */
02246 #ifndef NO_SOCK
02247 int R_CDECL SSL_set_fd(SSL *ssl, int fd);
02248 int R_CDECL SSL_set_rfd(SSL *ssl, int fd);
02249 int R_CDECL SSL_set_wfd(SSL *ssl, int fd);
02250 #endif /* NO_SOCK */
02251 int R_CDECL SSL_get_fd(SSL *ssl);
02260 SSLCERT * R_CDECL SSL_get_peer_certificate(SSL *ssl);
02261 STACK * R_CDECL SSL_get_peer_cert_chain(SSL *ssl);
02266 char * R_CDECL SSL_CTX_get_version(SSL_CTX *ssl_ctx);
02267
02272 long R_CDECL SSL_CTX_set_timeout(SSL_CTX *ctx,long tmout);
02273 long R_CDECL SSL_CTX_get_timeout(SSL_CTX *ctx);
02292 #ifndef NO_X509_STORE
02293
02297 SSLCERT_STORE * R_CDECL SSL_CTX_get_cert_store(SSL_CTX *ctx);
02298 void R_CDECL SSL_CTX_set_cert_store(SSL_CTX *,SSLCERT_STORE *);
02302 #endif /* !NO_X509_STORE */
02303
02304 #if defined(HEADER_COMMON_BIO_H) || defined(DOXYGEN)
02305
02309 void R_CDECL SSL_set_bio(SSL *ssl, BIO *rbio, BIO *wbio);
02313 #endif /* (HEADER_COMMON_BIO_H) || (DOXYGEN) */
02314
02315 void R_CDECL ERR_load_SSL_strings(void);
02316
02326 void R_CDECL SSL_load_error_strings(void);
02340 char * R_CDECL SSL_state_string(SSL *ssl);
02341 char * R_CDECL SSL_rstate_string(SSL *ssl);
02342 char * R_CDECL SSL_state_string_long(SSL *ssl);
02343 char * R_CDECL SSL_rstate_string_long(SSL *ssl);
02352 void R_CDECL SSL_CTX_set_verify_depth(SSL_CTX *ssl_ctx, int depth);
02353 int R_CDECL SSL_CTX_get_verify_depth(SSL_CTX *ssl_ctx);
02354
02355 int R_CDECL SSL_CTX_get_verify_mode(SSL_CTX *ctx);
02356 void R_CDECL SSL_CTX_set_verify_mode(SSL_CTX *ctx,int mode);
02357
02369 typedef int R_CDECL SSL_CTX_CERT_VERIFY_CB_T(SSLCERT_STORE_CTX *store_ctx,
02370 char *arg);
02371 void R_CDECL SSL_CTX_set_cert_verify_cb(SSL_CTX *ctx,
02372 SSL_CTX_CERT_VERIFY_CB_T *cb,
02373 char *arg);
02374
02391 typedef int R_CDECL SSL_CTX_APP_VERIFY_CB_T(SSL *ssl, SSLCERT **certs, int num,
02392 char *arg, long *verify_result);
02393
02394 void R_CDECL SSL_CTX_set_app_verify_cb(SSL_CTX *ctx,
02395 SSL_CTX_APP_VERIFY_CB_T *cb, char *arg);
02396 SSL_CTX_APP_VERIFY_CB_T * R_CDECL SSL_CTX_get_app_verify_cb(SSL_CTX *ctx);
02397 char * R_CDECL SSL_CTX_get_app_verify_cb_arg(SSL_CTX *ctx);
02398
02403 #ifndef NO_PEM
02404
02408 void R_CDECL SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, PEM_PASSWORD_CB_T *cb);
02412 #endif /* NO_PEM */
02413
02435 int R_CDECL SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa);
02436 int R_CDECL SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, unsigned char *d, long len);
02437 int R_CDECL SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey);
02438 int R_CDECL SSL_CTX_use_PrivateKey_ASN1(SSL_CTX *ctx, unsigned char *key, long len,
02439 int type);
02440 int R_CDECL SSL_CTX_check_private_key(SSL_CTX *ctx);
02441 int R_CDECL SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa);
02442 int R_CDECL SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *buffer, long len);
02443 int R_CDECL SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey);
02444 int R_CDECL SSL_use_PrivateKey_ASN1(SSL *ssl, unsigned char *data,
02445 long len, int type);
02446 int R_CDECL SSL_check_private_key(SSL *ctx);
02447
02448 EVP_PKEY * R_CDECL PEM_read_bio_PrivateKey(BIO *bio, EVP_PKEY **x,
02449 PEM_PASSWORD_CB_T *callback);
02450
02451 #ifndef NO_STDIO
02452 int R_CDECL SSL_use_RSAPrivateKey_file(SSL *ssl, char *file, int type);
02453 int R_CDECL SSL_use_PrivateKey_file(SSL *ssl, char *file, int type);
02454 int R_CDECL SSL_use_RSAPrivateKey_nFast(SSL *ssl, void *app_handle, void *key_id,
02455 int num_bits);
02456 int R_CDECL SSL_CTX_use_RSAPrivateKey_nFast(SSL_CTX *ctx, void *app_handle,
02457 void *key_id, int num_bits);
02458
02459 int R_CDECL SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, char *file, int type);
02460 int R_CDECL SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, char *file, int type);
02461 int R_CDECL SSL_CTX_use_RSAPrivateKey_nFast(SSL_CTX *ctx, void *app_handle,
02462 void *key_id, int num_bits);
02463 #endif /* !NO_STDIO */
02464
02482 int R_CDECL SSL_CTX_use_certificate(SSL_CTX *ctx, SSLCERT *x509);
02483 int R_CDECL SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, unsigned char *cert, long len);
02484
02485 int R_CDECL SSL_use_certificate(SSL *ssl, SSLCERT *x509);
02486 int R_CDECL SSL_use_certificate_ASN1(SSL *ssl, unsigned char *buffer, long len);
02487
02488 #ifndef NO_STDIO
02489 int R_CDECL SSL_use_certificate_file(SSL *ssl, char *file, int type);
02490 int R_CDECL SSL_CTX_use_certificate_file(SSL_CTX *ctx, char *file, int type);
02491
02492 #endif /* NO_STDIO */
02493 /* end group SSL_CERTIFICATE_MANAGEMENT_FUNCS */
02507 SSL * R_CDECL SSL_new(SSL_CTX *ctx);
02508 int R_CDECL SSL_clear(SSL *ssl);
02509 void R_CDECL SSL_free(SSL *ssl);
02510 SSL * R_CDECL SSL_dup(SSL *ssl);
02515 typedef int SSL_INFO;
02516 int R_CDECL SSL_set_info(SSL *ssl, SSL_INFO info_id, void *value);
02517 int R_CDECL SSL_get_info(SSL *ssl, SSL_INFO info_id, void *value);
02518 int R_CDECL SSL_set_R_LIB_CTX(SSL *ssl, R_LIB_CTX *lib_ctx, int mode);
02519
02528 int R_CDECL SSL_do_handshake(SSL *ssl);
02529 int R_CDECL SSL_renegotiate(SSL *ssl);
02530 int R_CDECL SSL_shutdown(SSL *ssl);
02531 int R_CDECL SSL_accept(SSL *ssl);
02532 int R_CDECL SSL_connect(SSL *ssl);
02533 int R_CDECL SSL_read(SSL *ssl,char *buffer, int num);
02534 int R_CDECL SSL_peek(SSL *ssl,char *buffer, int num);
02535 int R_CDECL SSL_write(SSL *ssl,char *buffer, int num);
02540 long R_CDECL SSL_ctrl(SSL *ssl,int cmd, long larg, char *parg);
02541 long R_CDECL SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, char *parg);
02542
02547 int R_CDECL SSL_get_error(SSL *ssl, int ret_code);
02552 /* sets the 'default' SSL version that SSL_new() will create */
02553 int R_CDECL SSL_CTX_set_ssl_version(SSL_CTX *ctx, SSL_METHOD *meth);
02554
02566 /* SSLv2 */
02567 SSL_METHOD * R_CDECL SSLv2_method(void);
02568 SSL_METHOD * R_CDECL SSLv2_server_method(void);
02569 SSL_METHOD * R_CDECL SSLv2_client_method(void);
02570
02571 /* SSLv3 */
02572 SSL_METHOD * R_CDECL SSLv3_server_method(void);
02573 SSL_METHOD * R_CDECL SSLv3_client_method(void);
02574 SSL_METHOD * R_CDECL SSLv3_method(void);
02575
02576 /* SSLv3 but can rollback to v2 */
02577 SSL_METHOD * R_CDECL SSLv23_method(void);
02578 SSL_METHOD * R_CDECL SSLv23_server_method(void);
02579 SSL_METHOD * R_CDECL SSLv23_client_method(void);
02580
02581 /* TLSv1.0 */
02582 SSL_METHOD * R_CDECL TLSv1_method(void);
02583 SSL_METHOD * R_CDECL TLSv1_server_method(void);
02584 SSL_METHOD * R_CDECL TLSv1_client_method(void);
02585
02586 int R_CDECL SSL_set_ssl_method(SSL *ssl,SSL_METHOD *meth);
02587 /* end group SSL_METHOD_FUNCS */
02598 char * R_CDECL SSL_alert_type_string_long(int value);
02599 char * R_CDECL SSL_alert_type_string(int value);
02600 char * R_CDECL SSL_alert_desc_string_long(int value);
02601 char * R_CDECL SSL_alert_desc_string(int value);
02606 #ifndef NO_CA_LIST
02607
02618 void R_CDECL SSL_set_client_CA_list(SSL *ssl, STACK *sk);
02619 void R_CDECL SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK *sk);
02620 STACK * R_CDECL SSL_get_client_CA_list(SSL *ssl);
02621 STACK * R_CDECL SSL_CTX_get_client_CA_list(SSL_CTX *ctx);
02622 int R_CDECL SSL_add_client_CA(SSL *ssl, SSLCERT *x509);
02623 int R_CDECL SSL_CTX_add_client_CA(SSL_CTX *ctx, SSLCERT *x509);
02624 #ifndef NO_STDIO
02625 STACK * R_CDECL SSL_load_client_CA_file(char *file);
02626 #endif /* !NO_STDIO */
02627
02628 /* end group SSL_CERTIFICATE_STORE_FUNCS */
02632 #endif /* !NO_CA_LIST */
02633
02634
02639 long R_CDECL SSL_get_default_timeout(SSL *ssl);
02644 #include "ssl_algs.h"
02645
02646 /*
02647 * @defgroup SSL_UTILITY_FUNCS Utility Functions
02648 * This section describes the functions used to support an SSL
02649 * connection.
02650 *
02651 * @{
02652 */
02653 /*
02654 * @}
02655 */
02656
02681 /* Define these quiet shutdown functions for those who are already using
02682 * them
02683 */
02684
02708 #define SSL_CTX_set_quiet_shutdown(ctx, mode) \
02709 if (mode) SSL_CTX_set_options(ctx,SSL_OP_QUIET_SHUTDOWN);\
02710 else SSL_CTX_set_options(ctx,!SSL_OP_QUIET_SHUTDOWN);
02711
02735 #define SSL_CTX_get_quiet_shutdown(ctx) \
02736 ((SSL_CTX_get_options(ctx) & SSL_OP_QUIET_SHUTDOWN) != 0)
02737
02760 #define SSL_set_quiet_shutdown(ssl,mode) \
02761 if (mode) SSL_set_options(ssl,SSL_OP_QUIET_SHUTDOWN);\
02762 else SSL_set_options(ssl,!SSL_OP_QUIET_SHUTDOWN);
02763
02778 #define SSL_get_quiet_shutdown(ssl) \
02779 ((SSL_get_options(ssl) & SSL_OP_QUIET_SHUTDOWN) != 0)
02780
02781 /* Define the anytime shutdown functions for IMODE */
02782
02801 #define SSL_CTX_set_anytime_shutdown(ctx, mode) \
02802 if (mode) SSL_CTX_set_options(ctx,SSL_OP_ANYTIME_SHUTDOWN);\
02803 else SSL_CTX_set_options(ctx,!SSL_OP_ANYTIME_SHUTDOWN)
02804
02821 #define SSL_CTX_get_anytime_shutdown(ctx) \
02822 ((SSL_CTX_get_options(ctx) & SSL_OP_ANYTIME_SHUTDOWN) != 0)
02823
02839 #define SSL_set_anytime_shutdown(ssl,mode) \
02840 if (mode) SSL_set_options(ssl,SSL_OP_ANYTIME_SHUTDOWN);\
02841 else SSL_set_options(ssl,!SSL_OP_ANYTIME_SHUTDOWN)
02842
02859 #define SSL_get_anytime_shutdown(ssl) \
02860 ((SSL_get_options(ssl) & SSL_OP_ANYTIME_SHUTDOWN) != 0)
02861
02872 #define SSL_set_debug(ssl) \
02873 SSL_ctrl((ssl), SSL_CTRL_SET_DEBUG, 1, NULL)
02874
02875 /* end group SSL_SHUTDOWN_FUNCS */
02885 int R_CDECL SSL_CTX_set_default_verify_paths(SSL_CTX *ctx);
02886 int R_CDECL SSL_CTX_load_verify_locations(SSL_CTX *ctx, char *CAfile, char *CApath);
02887 int R_CDECL SSL_CTX_add_certificate_to_store(SSL_CTX *ctx, SSLCERT *cert);
02892 #ifndef NO_CA_LIST
02893
02897 int R_CDECL SSL_get_client_CA_list_count(SSL *ssl);
02898 SSLCERT_NAME * R_CDECL SSL_get_client_CA_list_item(SSL *ssl, int n);
02899 int R_CDECL SSL_CTX_get_client_CA_list_count(SSL_CTX *ctx);
02900 SSLCERT_NAME * R_CDECL SSL_CTX_get_client_CA_list_item(SSL_CTX *ctx, int n);
02901 /* end group SSL_CERTIFICATE_MANAGEMENT_FUNCS */
02905 #endif /* !NO_CA_LIST */
02906
02929 typedef int R_CDECL SSL_CTX_CLIENT_CERT_CB_T(SSL *ssl, void **cpp, EVP_PKEY **kpp);
02930
02931 void R_CDECL SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, SSL_CTX_CLIENT_CERT_CB_T *cb);
02932 SSL_CTX_CLIENT_CERT_CB_T * R_CDECL SSL_CTX_get_client_cert_cb(SSL_CTX *ctx);
02933 /* end group SSL_CERTIFICATE_MANAGEMENT_FUNCS */
02938 #define SSL_CTX_set_tmp_rsa_callback(ctx,cb) \
02939 SSL_CTX_set_tmp_rsa_cb(ctx,cb)
02940 #define SSL_CTX_set_tmp_dh_callback(ctx,dh) \
02941 SSL_CTX_set_tmp_dh_cb(ctx,dh)
02942 #define SSL_set_tmp_rsa_callback(ssl,cb) \
02943 SSL_set_tmp_rsa_cb(ssl,cb)
02944 #define SSL_set_tmp_dh_callback(ssl,dh) \
02945 SSL_set_tmp_dh_cb(ssl,dh)
02946
02947 #define SSL_CTX_need_tmp_RSA(ctx) \
02948 SSL_CTX_ctrl(ctx,SSL_CTRL_NEED_TMP_RSA,0,NULL)
02949
02979 #define SSL_CTX_set_tmp_rsa(ctx,rsa) \
02980 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA,0,(char *)rsa)
02981 #define SSL_CTX_set_tmp_rsa512(ctx,rsa) \
02982 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA512,0,(char *)rsa)
02983 #define SSL_CTX_set_tmp_rsa1024(ctx,rsa) \
02984 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA1024,0,(char *)rsa)
02985
03004 #define SSL_CTX_set_tmp_dh(ctx,dh) \
03005 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)dh)
03006
03034 typedef RSA * R_CDECL SSL_TMP_RSA_CB_T(SSL *ssl, int export_type);
03035
03058 #define SSL_CTX_set_tmp_rsa_cb(ctx,cb) \
03059 SSL_CTX_ctrl((ctx), SSL_CTRL_SET_TMP_RSA_CB, 0, (char *)(cb))
03060
03061 SSL_TMP_RSA_CB_T * R_CDECL SSL_CTX_get_tmp_rsa_cb(SSL_CTX *ctx);
03062
03083 typedef DH * R_CDECL SSL_TMP_DH_CB_T(SSL *ssl, int export_type);
03084
03102 #define SSL_CTX_set_tmp_dh_cb(ctx, cb) \
03103 SSL_CTX_ctrl((ctx), SSL_CTRL_SET_TMP_DH_CB, 0, (char *)(cb))
03104
03105 SSL_TMP_DH_CB_T * R_CDECL SSL_CTX_get_tmp_dh_cb(SSL_CTX *ctx);
03106
03129 #define SSL_set_tmp_rsa_cb(ssl, callback) \
03130 SSL_ctrl((ssl), SSL_CTRL_SET_TMP_RSA_CB, 0, (char *)(callback))
03131
03132 SSL_TMP_RSA_CB_T * R_CDECL SSL_get_tmp_rsa_cb(SSL *ssl);
03133
03154 #define SSL_set_tmp_dh_cb(ssl, callback) \
03155 SSL_ctrl((ssl), SSL_CTRL_SET_TMP_DH_CB, 0, (char *)(callback))
03156
03157 SSL_TMP_DH_CB_T * R_CDECL SSL_get_tmp_dh_cb(SSL *ssl);
03158
03172 int R_CDECL SSL_CTX_set_tmp_key_mode(SSL_CTX *ctx, int type, int mode);
03173
03178 #ifndef SSLC_SMALL_CODE
03179
03180 #define SSL_CTX_set_alert_info_callback(x,y,z) \
03181 SSL_CTX_set_alert_info_cb(x,y,z)
03182 #define SSL_CTX_get_alert_info_callback(x) \
03183 SSL_CTX_get_alert_info_cb(x)
03184 #define SSL_CTX_get_alert_info_callback_arg(x) \
03185 SSL_CTX_get_alert_info_cb_arg(x)
03186
03187 #define SSL_set_alert_info_callback(x,y,z) \
03188 SSL_set_alert_info_cb(x,y,z)
03189 #define SSL_get_alert_info_callback(x) \
03190 SSL_get_alert_info_cb(x)
03191 #define SSL_get_alert_info_callback_arg(x) \
03192 SSL_get_alert_info_cb_arg(x)
03193
03194 #define SSL_CTX_sess_number(ctx) \
03195 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL)
03196 #define SSL_CTX_sess_connect(ctx) \
03197 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL)
03198 #define SSL_CTX_sess_connect_good(ctx) \
03199 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL)
03200 #define SSL_CTX_sess_connect_renegotiate(ctx) \
03201 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL)
03202 #define SSL_CTX_sess_accept(ctx) \
03203 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL)
03204 #define SSL_CTX_sess_accept_renegotiate(ctx) \
03205 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL)
03206 #define SSL_CTX_sess_accept_good(ctx) \
03207 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL)
03208 #define SSL_CTX_sess_hits(ctx) \
03209 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL)
03210 #define SSL_CTX_sess_cb_hits(ctx) \
03211 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL)
03212 #define SSL_CTX_sess_misses(ctx) \
03213 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL)
03214 #define SSL_CTX_sess_timeouts(ctx) \
03215 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL)
03216 #define SSL_CTX_sess_cache_full(ctx) \
03217 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL)
03218
03219 #define SSL_num_renegotiations(ssl) \
03220 SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL)
03221 #define SSL_clear_num_renegotiations(ssl) \
03222 SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL)
03223 #define SSL_total_renegotiations(ssl) \
03224 SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL)
03225
03226 /* Is the SSL_connection established? */
03227 #define SSL_get_state(a) SSL_state(a)
03228
03250 #define SSL_CTX_set_verify(ctx,mode,cb) SSL_CTX_set_verify_cb((ctx), \
03251 (SSL_VERIFY_CB_T *)(cb)); \
03252 SSL_CTX_set_verify_mode((ctx), (mode))
03253
03271 #define SSL_set_verify(ssl,mode,cb) SSL_set_verify_cb((ssl), \
03272 (SSL_VERIFY_CB_T *)(cb)); \
03273 SSL_set_verify_mode((ssl),(mode))
03274
03298 typedef void R_CDECL SSL_ALERT_INFO_CB_T(SSL *s, int where, int ret, char *arg);
03299
03300 void R_CDECL SSL_CTX_set_alert_info_cb(SSL_CTX *ctx, SSL_ALERT_INFO_CB_T *cb,
03301 char *arg);
03302 SSL_ALERT_INFO_CB_T * R_CDECL SSL_CTX_get_alert_info_cb(SSL_CTX *ctx);
03303 char * R_CDECL SSL_CTX_get_alert_info_cb_arg(SSL_CTX *ctx);
03304
03305 SSL_ALERT_INFO_CB_T * R_CDECL SSL_get_alert_info_cb(SSL *ssl);
03306 void R_CDECL SSL_set_alert_info_cb(SSL *ssl,SSL_ALERT_INFO_CB_T *cb, char *arg);
03307 char * R_CDECL SSL_get_alert_info_cb_arg(SSL *ssl);
03308 /* end group DIAGNOSTIC_CALLBACK_FUNCS */
03333 typedef int R_CDECL SSL_VERIFY_CB_T(int ok, SSLCERT_STORE_CTX *store_ctx);
03334
03335 void R_CDECL SSL_CTX_set_verify_cb(SSL_CTX *ctx, SSL_VERIFY_CB_T *cb);
03336 SSL_VERIFY_CB_T * R_CDECL SSL_CTX_get_verify_cb(SSL_CTX *ctx);
03337 void R_CDECL SSL_set_verify_cb(SSL *s, SSL_VERIFY_CB_T *cb);
03338 SSL_VERIFY_CB_T * R_CDECL SSL_get_verify_cb(SSL *ssl);
03348 int R_CDECL SSL_feature_set(long feature);
03349 int R_CDECL SSL_feature_clear(long feature);
03350 int R_CDECL SSL_feature_test(long feature);
03351 int R_CDECL SSL_feature_reset(void);
03360 void R_CDECL SSL_set_info_cb(SSL *ssl, SSL_INFO_CB_T *info_cb);
03361 SSL_INFO_CB_T * R_CDECL SSL_get_info_cb(SSL *ssl);
03371 SSL_METHOD * R_CDECL SSL_get_ssl_method(SSL *ssl);
03380 void R_CDECL SSL_set_shutdown(SSL *ssl,int mode);
03381 int R_CDECL SSL_get_shutdown(SSL *ssl);
03386 #if defined(HEADER_COMMON_BIO_H) || defined(DOXYGEN)
03387
03391 BIO * R_CDECL SSL_get_rbio(SSL *ssl);
03392 BIO * R_CDECL SSL_get_wbio(SSL *ssl);
03396 #endif /* (HEADER_COMMON_BIO_H) || (DOXYGEN) */
03397
03402 int R_CDECL SSL_version(SSL *ssl);
03411 SSL_SESSION * R_CDECL SSL_get_session(SSL *ssl);
03420 SSL_CTX * R_CDECL SSL_get_SSL_CTX(SSL *ssl);
03429 int R_CDECL SSL_state(SSL *ssl);
03438 int R_CDECL SSL_reuse(SSL *ssl);
03448 void R_CDECL SSL_set_verify_result(SSL *ssl, long verify);
03449 long R_CDECL SSL_get_verify_result(SSL *ssl);
03450 int R_CDECL SSL_get_verify_depth(SSL *ssl);
03451 void R_CDECL SSL_set_verify_depth(SSL *ssl, int depth);
03452 int R_CDECL SSL_get_verify_mode(SSL * ssl);
03453 void R_CDECL SSL_set_verify_mode(SSL *ssl, int mode);
03463 int R_CDECL SSL_want(SSL *ssl);
03468 unsigned char * R_CDECL SSL_get_client_random(SSL *ssl);
03469 unsigned char * R_CDECL SSL_get_server_random(SSL *ssl);
03470
03471 #define SSL_CTX_add_extra_chain_cert(ctx,x509) \
03472 SSL_CTX_ctrl((ctx), SSL_CTRL_EXTRA_CHAIN_CERT, 0, (char *)(x509))
03473
03474 STACK * R_CDECL SSL_CTX_get_extra_certs(SSL_CTX *ctx);
03475 void R_CDECL SSL_CTX_set_extra_certs(SSL_CTX *ctx,STACK *certs);
03476
03477 int R_CDECL SSL_CTX_set_session_id_context(SSL_CTX *ctx,const unsigned char *sid_ctx,
03478 unsigned int sid_ctx_len);
03479 int R_CDECL SSL_set_session_id_context(SSL *ssl,const unsigned char *sid_ctx,
03480 unsigned int sid_ctx_len);
03481
03482 #define SSL_copy_session_id(a,b) SSL_copy_session((a),(b))
03483 #define BIO_ssl_copy_session_id(a,b) BIO_ssl_copy_session((a),(b))
03484
03485 #define SSL_session_reused(s) SSL_reuse(s)
03486
03487 /* @brief macro to aid migration from SSLeay to SSL-C */
03488 #define SSLeay_add_ssl_algorithms() SSL_library_evp_setup()
03489
03490 /* More backward compatibility */
03491
03492 #define SSL_get_cipher(s) \
03493 SSL_CIPHER_get_name(SSL_get_current_cipher(s))
03494 #define SSL_get_cipher_bits(s,np) \
03495 SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np)
03496 #define SSL_get_cipher_version(s) \
03497 SSL_CIPHER_get_version(SSL_get_current_cipher(s))
03498 #define SSL_get_cipher_name(s) \
03499 SSL_CIPHER_get_name(SSL_get_current_cipher(s))
03500
03501 #define SSL_get_time(a,b) SSL_SESSION_get_time(a,b)
03502 #define SSL_set_time(a,b) SSL_SESSION_set_time((a),(b))
03503 #define SSL_get_timeout(a) SSL_SESSION_get_timeout(a)
03504 #define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b))
03505
03506 /* The VMS linker has a 31 char name limit */
03507 #define SSL_CTX_set_cert_verify_callback(a,b,c) \
03508 SSL_CTX_set_cert_verify_cb((a),(b),(c))
03509
03510 /* macros for old names */
03511 #define SSL_get_verify_callback(s) SSL_get_verify_cb(s)
03512 #define SSL_CTX_get_verify_callback(x) SSL_CTX_get_verify_cb(x)
03513 #define SSL_set_info_callback(x,y) SSL_set_info_cb(x,y)
03514 #define SSL_get_info_callback(x) SSL_get_info_cb(x)
03515 #define SSL_CTX_set_info_callback(x,y) SSL_CTX_set_info_cb(x,y)
03516 #define SSL_CTX_get_info_callback(x) SSL_CTX_get_info_cb(x)
03517
03518
03519 #define SSL_set_app_data_callback(x,y,z) SSL_set_app_data_cb(x,y,z)
03520 #define SSL_get_app_data_callback(x) SSL_get_app_data_cb(x)
03521 #define SSL_get_app_data_callback_arg(x) SSL_get_app_data_cb_arg(x)
03522 #define SSL_CTX_set_app_data_callback(x,y,z) SSL_CTX_set_app_data_cb(x,y,z)
03523 #define SSL_CTX_set_application_data_callback(x,y,z) \
03524 SSL_CTX_set_app_data_cb(x,y,z)
03525 #define SSL_CTX_get_app_data_callback(x) SSL_CTX_get_app_data_cb(x)
03526 #define SSL_CTX_get_application_data_callback(x) SSL_CTX_get_app_data_cb(x)
03527 #define SSL_CTX_get_app_data_callback_arg(x) SSL_CTX_get_app_data_cb_arg(x)
03528 #define SSL_CTX_get_application_data_callback_arg(x) \
03529 SSL_CTX_get_app_data_cb_arg(x)
03530
03531 #define SSL_CTX_set_application_verify_cb SSL_CTX_set_app_verify_cb
03532 #define SSL_CTX_get_application_verify_cb SSL_CTX_get_app_verify_cb
03533 #define SSL_CTX_get_application_verify_cb_arg SSL_CTX_get_app_verify_cb_arg
03534
03535 #define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx)
03536 #define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m)
03537
03555 typedef void R_CDECL SSL_APP_DATA_CB_T(SSL *s, int where, char *arg);
03556
03557 void R_CDECL SSL_CTX_set_app_data_cb(SSL_CTX *ctx, SSL_APP_DATA_CB_T *cb, char *arg);
03558 SSL_APP_DATA_CB_T * R_CDECL SSL_CTX_get_app_data_cb(SSL_CTX *ctx);
03559 char * R_CDECL SSL_CTX_get_app_data_cb_arg(SSL_CTX *ctx);
03560
03561 void R_CDECL SSL_set_app_data_cb(SSL *ssl,SSL_APP_DATA_CB_T *cb, char *arg);
03562 SSL_APP_DATA_CB_T * R_CDECL SSL_get_app_data_cb(SSL *ssl);
03563 char * R_CDECL SSL_get_app_data_cb_arg(SSL *ssl);
03564
03565 /* end group DIAGNOSTIC_CALLBACK_FUNCS */
03570 #define SSL_CTX_set_ocsi_server_cb(ctx,cb) ((ctx)->ocsi_server_callback=(cb))
03571 #define SSL_CTX_get_ocsi_server_cb(ctx) ((ctx)->ocsi_server_callback)
03572 #define SSL_CTX_set_ocsi_server_cb_arg(ctx,arg) ((ctx)->ocsi_server_callback_arg=(arg))
03573 #define SSL_CTX_get_ocsi_server_cb_arg(ctx) ((ctx)->ocsi_server_callback_arg)
03574
03575 #endif /* !SSLC_SMALL_CODE */
03576
03577 #if (!defined(SSLC_SMALL_CODE) && !defined(NO_EX_DATA))
03578 /*
03579 * @defgroup SSL_EXTRA_DATA Extra Data
03580 * This section details the methods for loading and managing extra data used
03581 * by the #SSL, #SSL_CTX or #SSL_SESSION structures.
03582 *
03583 * @{
03584 */
03585 /*
03586 * @}
03587 */
03588
03589 /* compatibility */
03590 #define SSL_set_app_data(s,arg) (SSL_set_ex_data(s,0,(char *)arg))
03591 #define SSL_get_app_data(s) (SSL_get_ex_data(s,0))
03592 #define SSL_SESSION_set_app_data(s,a) (SSL_SESSION_set_ex_data(s,0,(char *)a))
03593 #define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s,0))
03594 #define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx,0))
03595 #define SSL_CTX_set_app_data(ctx,arg) (SSL_CTX_set_ex_data(ctx,0,(char *)arg))
03596
03597
03621 typedef int R_CDECL SSL_EX_DATA_NEW_CB_T(char *obj, char *item,
03622 char *ad, int index, long argl, char *argp);
03623
03637 typedef void R_CDECL SSL_EX_DATA_FREE_CB_T(char *obj, char *item,
03638 char *ad, int index, long argl, char *argp);
03639
03655 typedef int R_CDECL SSL_EX_DATA_DUP_CB_T(char *obj_to, char *obj_from, char **item,
03656 int index, long argl, char *argp);
03665 int R_CDECL SSL_set_ex_data(SSL *ssl, int idx, char *data);
03666 char * R_CDECL SSL_get_ex_data(SSL *ssl, int idx);
03667 int R_CDECL SSL_get_ex_new_index(long argl, char *argp, SSL_EX_DATA_NEW_CB_T *new_func,
03668 SSL_EX_DATA_DUP_CB_T *dup_func, SSL_EX_DATA_FREE_CB_T *free_func);
03669 int R_CDECL SSL_get_ex_data_SSLCERT_STORE_CTX_idx(void);
03674 /* Compatibility macro for old name */
03675 #define SSL_get_ex_data_X509_STORE_CTX_idx SSL_get_ex_data_SSLCERT_STORE_CTX_idx
03676
03681 int R_CDECL SSL_SESSION_set_ex_data(SSL_SESSION *sess, int idx, char *data);
03682 char * R_CDECL SSL_SESSION_get_ex_data(SSL_SESSION *sess, int idx);
03683 int R_CDECL SSL_SESSION_get_ex_new_index(long argl, char *argp,
03684 SSL_EX_DATA_NEW_CB_T *new_func, SSL_EX_DATA_DUP_CB_T *dup_func,
03685 SSL_EX_DATA_FREE_CB_T *free_func);
03694 int R_CDECL SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx,char *data);
03695 char * R_CDECL SSL_CTX_get_ex_data(SSL_CTX *ssl, int idx);
03696 int R_CDECL SSL_CTX_get_ex_new_index(long argl, char *argp,
03697 SSL_EX_DATA_NEW_CB_T *new_func, SSL_EX_DATA_DUP_CB_T *dup_func,
03698 SSL_EX_DATA_FREE_CB_T *free_func);
03703 #endif /* (!defined(SSLC_SMALL_CODE) && !defined(NO_EX_DATA)) */
03704
03705 #ifdef SSLC_SMALL_CODE
03706
03727 typedef int R_CDECL SSL_SESSION_CACHE_CB_T(SSL_CTX *ctx, int cmd, SSL_SESSION **sess,
03728 void *arg);
03729
03734 int R_CDECL SSL_CTX_set_session_cache_cb(SSL_CTX *ctx, SSL_SESSION_CACHE_CB_T *cb);
03735 SSL_SESSION_CACHE_CB_T * R_CDECL SSL_CTX_get_session_cache_cb(SSL_CTX *ctx);
03736 int R_CDECL SSL_CTX_set_session_cache_cb_arg(SSL_CTX *ctx,void *cb_arg);
03737 void * R_CDECL SSL_CTX_get_session_cache_cb_arg(SSL_CTX *ctx);
03738 int R_CDECL SSL_CTX_simple_session_cb(SSL_CTX *ctx,int cmd,SSL_SESSION **sess_ptr,
03739 void *arg);
03740 int R_CDECL SSL_CTX_simple_session_init(SSL_SIMPLE_SESSION_CACHE **cache_ptr);
03741 int R_CDECL SSL_CTX_simple_session_final(SSL_SIMPLE_SESSION_CACHE **cache_ptr);
03742
03747 /* SSLC small code macro replacements - for use within library */
03748 /* SSL feature tests */
03749 extern int SSLC_ssl_features;
03755 #ifdef SSLC
03756
03781 #else /* !SSLC */
03782
03805 #endif /* SSLC */
03806 #define SSL_feature_set(feature) ((SSLC_ssl_features|=feature),1)
03807
03827 #define SSL_feature_clear(feature) ((SSLC_ssl_features&=(~feature)),1)
03828
03842 #define SSL_feature_test(feature) (SSLC_ssl_features&=feature)
03843
03844 #ifdef SSLC
03845
03859 #else /* !SSLC */
03860
03873 #endif /* SSLC */
03874 #define SSL_feature_reset() ((SSLC_ssl_features=0),1)
03875
03899 #define SSL_set_info_cb(ssl, cb) ((ssl)->info_cb = (cb))
03900
03901 #ifndef NO_EX_DATA
03902
03918 #else /* NO_EX_DATA */
03919
03935 #endif /* !NO_EX_DATA */
03936 #define SSL_get_info_cb(ssl) ((ssl)->info_cb)
03937
03962 #define SSL_get_verify_mode(ssl) ((ssl)->verify_mode)
03963
03976 #define SSL_set_verify_mode(ssl, mode) ((ssl)->verify_mode = (mode))
03977
03993 #define SSL_get_verify_depth(ssl) ((ssl)->verify_depth)
03994
04008 #define SSL_set_verify_depth(ssl, depth) ((ssl)->verify_depth = (depth))
04009
04030 #define SSL_set_verify_result(ssl, verify) ((ssl)->verify_result = (verify))
04031
04048 #define SSL_get_verify_result(ssl) ((ssl)->verify_result)
04049
04074 #define SSL_get_ssl_method(ssl) ((ssl)->method)
04075
04114 #define SSL_set_shutdown(ssl, mode) ((ssl)->shutdown = (mode))
04115
04151 #define SSL_get_shutdown(ssl) ((ssl)->shutdown)
04152
04157 #if defined(HEADER_COMMON_BIO_H) || defined(DOXYGEN)
04158
04179 BIO * R_CDECL SSL_get_rbio(SSL *ssl);
04180 /* can't use macro because doing so will break the build of eut unittests required
04181 * by FIPS140 builds
04182 * #define SSL_get_rbio(ssl) ((ssl)->rbio)
04183 */
04184
04200 BIO * R_CDECL SSL_get_wbio(SSL *ssl);
04201 /* can't use macro because doing so will break the build of eut unittests required
04202 * by FIPS140 builds
04203 * #define SSL_get_wbio(ssl) ((ssl)->wbio)
04204 */
04205
04206 /* end group SSL_IO_OPERATION_FUNCS */
04207
04211 #endif /* (HEADER_COMMON_BIO_H) || (DOXYGEN) */
04212
04213
04240 int R_CDECL SSL_version(SSL *ssl);
04241 /* can't use macro because doing so will break the build of eut unittests required
04242 * by FIPS140 builds
04243 *
04244 * #define SSL_version(ssl) ((ssl)->version)
04245 */
04271 #define SSL_get_session(ssl) ((ssl)->session)
04272
04295 #define SSL_get_SSL_CTX(ssl) ((ssl)->ctx)
04296
04326 #define SSL_state(ssl) ((ssl)->state)
04327
04350 #define SSL_reuse(ssl) ((ssl)->hit)
04351
04376 #define SSL_want(ssl) ((ssl)->rwstate)
04377
04382 #endif /* SSLC_SMALL_CODE */
04383
04384 /* BEGIN ERROR CODES */
04385 /* Error codes for the SSL functions. */
04386
04387 /* Function codes. */
04388 #define SSL_F_CLIENT_CERTIFICATE 100
04389 #define SSL_F_CLIENT_HELLO 101
04390 #define SSL_F_CLIENT_MASTER_KEY 102
04391 #define SSL_F_D2I_SSL_SESSION 103
04392 #define SSL_F_DO_SSL3_WRITE 104
04393 #define SSL_F_GET_CLIENT_FINISHED 105
04394 #define SSL_F_GET_CLIENT_HELLO 106
04395 #define SSL_F_GET_CLIENT_MASTER_KEY 107
04396 #define SSL_F_GET_SERVER_FINISHED 108
04397 #define SSL_F_GET_SERVER_HELLO 109
04398 #define SSL_F_GET_SERVER_VERIFY 110
04399 #define SSL_F_I2D_SSL_SESSION 111
04400 #define SSL_F_READ_N 112
04401 #define SSL_F_REQUEST_CERTIFICATE 113
04402 #define SSL_F_SERVER_HELLO 114
04403 #define SSL_F_SSL23_ACCEPT 115
04404 #define SSL_F_SSL23_CLIENT_HELLO 116
04405 #define SSL_F_SSL23_CONNECT 117
04406 #define SSL_F_SSL23_GET_CLIENT_HELLO 118
04407 #define SSL_F_SSL23_GET_SERVER_HELLO 119
04408 #define SSL_F_SSL23_READ 120
04409 #define SSL_F_SSL23_WRITE 121
04410 #define SSL_F_SSL2_ACCEPT 122
04411 #define SSL_F_SSL2_ALLOC_READ_BUF 218
04412 #define SSL_F_SSL2_CONNECT 123
04413 #define SSL_F_SSL2_ENC_INIT 124
04414 #define SSL_F_SSL2_READ 125
04415 #define SSL_F_SSL2_SETUP_BUFFERS 219
04416 #define SSL_F_SSL2_SET_CERTIFICATE 126
04417 #define SSL_F_SSL2_WRITE 127
04418 #define SSL_F_SSL3_ACCEPT 128
04419 #define SSL_F_SSL3_CHANGE_CIPHER_STATE 129
04420 #define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 130
04421 #define SSL_F_SSL3_CLIENT_HELLO 131
04422 #define SSL_F_SSL3_CONNECT 132
04423 #define SSL_F_SSL3_CTRL 226
04424 #define SSL_F_SSL3_CTX_CTRL 217
04425 #define SSL_F_SSL3_ENC 134
04426 #define SSL_F_SSL3_GET_CERTIFICATE_REQUEST 135
04427 #define SSL_F_SSL3_GET_CERT_VERIFY 136
04428 #define SSL_F_SSL3_GET_CLIENT_CERTIFICATE 137
04429 #define SSL_F_SSL3_GET_CLIENT_HELLO 138
04430 #define SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE 139
04431 #define SSL_F_SSL3_GET_FINISHED 140
04432 #define SSL_F_SSL3_GET_KEY_EXCHANGE 141
04433 #define SSL_F_SSL3_GET_MESSAGE 142
04434 #define SSL_F_SSL3_GET_RECORD 143
04435 #define SSL_F_SSL3_GET_SERVER_CERTIFICATE 144
04436 #define SSL_F_SSL3_GET_SERVER_DONE 145
04437 #define SSL_F_SSL3_GET_SERVER_HELLO 146
04438 #define SSL_F_SSL3_NEW 147
04439 #define SSL_F_SSL3_OUTPUT_CERT_CHAIN 148
04440 #define SSL_F_SSL3_READ_BYTES 149
04441 #define SSL_F_SSL3_READ_N 150
04442 #define SSL_F_SSL3_SEND_CERTIFICATE_REQUEST 151
04443 #define SSL_F_SSL3_SEND_CLIENT_CERTIFICATE 152
04444 #define SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE 153
04445 #define SSL_F_SSL3_SEND_CLIENT_VERIFY 154
04446 #define SSL_F_SSL3_SEND_SERVER_CERTIFICATE 155
04447 #define SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE 156
04448 #define SSL_F_SSL3_SETUP_BUFFERS 157
04449 #define SSL_F_SSL3_SETUP_KEY_BLOCK 158
04450 #define SSL_F_SSL3_WRITE_BYTES 159
04451 #define SSL_F_SSL3_WRITE_PENDING 160
04452 #define SSL_F_SSL_BAD_METHOD 161
04453 #define SSL_F_SSL_BYTES_TO_CIPHER_LIST 162
04454 #define SSL_F_SSL_CERT_NEW 163
04455 #define SSL_F_SSL_CHECK_PRIVATE_KEY 164
04456 #define SSL_F_SSL_CIPHER_DESCRIPTION 216
04457 #define SSL_F_SSL_CLEAR 165
04458 #define SSL_F_SSL_CREATE_CIPHER_LIST 166
04459 #define SSL_F_SSL_CTX_ADD_CERTIFICATE_TO_STORE 234
04460 #define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 167
04461 #define SSL_F_SSL_CTX_LOAD_VERIFY_LOCATIONS 220
04462 #define SSL_F_SSL_CTX_NEW 168
04463 #define SSL_F_SSL_CTX_SET_DEFAULT_VERIFY_PATHS 221
04464 #define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 222
04465 #define SSL_F_SSL_CTX_USE_CERTIFICATE 171
04466 #define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 172
04467 #define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 173
04468 #define SSL_F_SSL_CTX_USE_PRIVATEKEY 174
04469 #define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 175
04470 #define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 176
04471 #define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 177
04472 #define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 178
04473 #define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 179
04474 #define SSL_F_SSL_DH_NEW 227
04475 #define SSL_F_SSL_DH_SET_METH_DATA 231
04476 #define SSL_F_SSL_DO_HANDSHAKE 180
04477 #define SSL_F_SSL_DSA_NEW 228
04478 #define SSL_F_SSL_DSA_SET_METH_DATA 232
04479 #define SSL_F_SSL_GET_NEW_SESSION 181
04480 #define SSL_F_SSL_GET_SERVER_SEND_CERT 182
04481 #define SSL_F_SSL_GET_SIGN_PKEY 183
04482 #define SSL_F_SSL_INIT_WBIO_BUFFER 184
04483 #define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185
04484 #define SSL_F_SSL_NEW 186
04485 #define SSL_F_SSL_NFAST_SETUP_PKEY 225
04486 #define SSL_F_SSL_RSA_NEW 230
04487 #define SSL_F_SSL_RSA_PRIVATE_DECRYPT 187
04488 #define SSL_F_SSL_RSA_PUBLIC_ENCRYPT 188
04489 #define SSL_F_SSL_RSA_SET_METH_DATA 233
04490 #define SSL_F_SSL_SESSION_NEW 189
04491 #define SSL_F_SSL_SESSION_PRINT_FP 190
04492 #define SSL_F_SSL_SET_CERT 191
04493 #define SSL_F_SSL_SET_FD 193
04494 #define SSL_F_SSL_SET_PKEY 194
04495 #define SSL_F_SSL_SET_RFD 195
04496 #define SSL_F_SSL_SET_SESSION 196
04497 #define SSL_F_SSL_SET_SESSION_ID_CONTEXT 224
04498 #define SSL_F_SSL_SET_WFD 197
04499 #define SSL_F_SSL_UNDEFINED_FUNCTION 198
04500 #define SSL_F_SSL_USE_CERTIFICATE 199
04501 #define SSL_F_SSL_USE_CERTIFICATE_ASN1 200
04502 #define SSL_F_SSL_USE_CERTIFICATE_FILE 201
04503 #define SSL_F_SSL_USE_PRIVATEKEY 202
04504 #define SSL_F_SSL_USE_PRIVATEKEY_ASN1 203
04505 #define SSL_F_SSL_USE_PRIVATEKEY_FILE 204
04506 #define SSL_F_SSL_USE_RSAPRIVATEKEY 205
04507 #define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 206
04508 #define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 207
04509 #define SSL_F_SSL_VERIFY_CERT_CHAIN 208
04510 #define SSL_F_SSL_WRITE 209
04511 #define SSL_F_TLS1_CHANGE_CIPHER_STATE 210
04512 #define SSL_F_TLS1_SETUP_KEY_BLOCK 212
04513 #define SSL_F_WRITE_PENDING 213
04514 #define SSL_F_SSL3_SEND_SERVER_HELLO 214
04515
04516 /* Reason codes. */
04517 #define SSL_R_APP_DATA_IN_HANDSHAKE 100
04518 #define SSL_R_BAD_ALERT_RECORD 101
04519 #define SSL_R_BAD_AUTHENTICATION_TYPE 102
04520 #define SSL_R_BAD_CHANGE_CIPHER_SPEC 103
04521 #define SSL_R_BAD_CHECKSUM 104
04522 #define SSL_R_BAD_CLIENT_REQUEST 105
04523 #define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106
04524 #define SSL_R_BAD_DECOMPRESSION 107
04525 #define SSL_R_BAD_DH_G_LENGTH 108
04526 #define SSL_R_BAD_DH_PUB_KEY_LENGTH 109
04527 #define SSL_R_BAD_DH_P_LENGTH 110
04528 #define SSL_R_BAD_DIGEST_LENGTH 111
04529 #define SSL_R_BAD_DSA_SIGNATURE 112
04530 #define SSL_R_BAD_LENGTH 1103
04531 #define SSL_R_BAD_MAC_DECODE 113
04532 #define SSL_R_BAD_MESSAGE_TYPE 114
04533 #define SSL_R_BAD_PACKET_LENGTH 115
04534 #define SSL_R_BAD_RESPONSE_ARGUMENT 117
04535 #define SSL_R_BAD_RSA_DECRYPT 118
04536 #define SSL_R_BAD_RSA_ENCRYPT 119
04537 #define SSL_R_BAD_RSA_E_LENGTH 120
04538 #define SSL_R_BAD_RSA_E_VALUE 1200
04539 #define SSL_R_BAD_RSA_MODULUS_LENGTH 121
04540 #define SSL_R_BAD_RSA_SIGNATURE 122
04541 #define SSL_R_BAD_SIGNATURE 123
04542 #define SSL_R_BAD_SSL_FILETYPE 124
04543 #define SSL_R_BAD_SSL_SESSION_ID_LENGTH 125
04544 #define SSL_R_BAD_STATE 126
04545 #define SSL_R_BAD_WRITE_RETRY 127
04546 #define SSL_R_BIO_NOT_SET 128
04547 #define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129
04548 #define SSL_R_CA_DN_LENGTH_MISMATCH 131
04549 #define SSL_R_CA_DN_TOO_LONG 132
04550 #define SSL_R_CCS_RECEIVED_EARLY 133
04551 #define SSL_R_CERTIFICATE_VERIFY_FAILED 134
04552 #define SSL_R_CERT_LENGTH_MISMATCH 135
04553 #define SSL_R_CHALLENGE_IS_DIFFERENT 136
04554 #define SSL_R_CIPHER_CODE_WRONG_LENGTH 137
04555 #define SSL_R_CIPHER_OR_HASH_UNAVAILABLE 138
04556 #define SSL_R_CIPHER_TABLE_SRC_ERROR 139
04557 #define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140
04558 #define SSL_R_COMPRESSION_FAILURE 141
04559 #define SSL_R_COMPRESSION_LIBRARY_ERROR 142
04560 #define SSL_R_CONNECTION_ID_IS_DIFFERENT 143
04561 #define SSL_R_CONNECTION_TYPE_NOT_SET 144
04562 #define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145
04563 #define SSL_R_DATA_LENGTH_TOO_LONG 146
04564 #define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148
04565 #define SSL_R_DIGEST_CHECK_FAILED 149
04566 #define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150
04567 #define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151
04568 #define SSL_R_EXCESSIVE_MESSAGE_SIZE 152
04569 #define SSL_R_EXTRA_DATA_IN_MESSAGE 153
04570 #define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154
04571 #define SSL_R_HTTPS_PROXY_REQUEST 155
04572 #define SSL_R_HTTP_REQUEST 156
04573 #define SSL_R_INTERNAL_ERROR 157
04574 #define SSL_R_INVALID_CHALLENGE_LENGTH 158
04575 #define SSL_R_INVALID_CONNECTION_ID_LENGTH 1110
04576 #define SSL_R_INVALID_KEY_ARG_LENGTH 1111
04577 #define SSL_R_INVALID_MASTER_KEY_LENGTH 1112
04578 #define SSL_R_LENGTH_MISMATCH 159
04579 #define SSL_R_LENGTH_TOO_SHORT 160
04580 #define SSL_R_LIBRARY_HAS_NO_CIPHERS 161
04581 #define SSL_R_MISSING_DH_DSA_CERT 162
04582 #define SSL_R_MISSING_DH_KEY 163
04583 #define SSL_R_MISSING_DH_RSA_CERT 164
04584 #define SSL_R_MISSING_DSA_SIGNING_CERT 165
04585 #define SSL_R_MISSING_EXPORT_TMP_DH_KEY 166
04586 #define SSL_R_MISSING_EXPORT_TMP_RSA_KEY 167
04587 #define SSL_R_MISSING_RSA_CERTIFICATE 168
04588 #define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169
04589 #define SSL_R_MISSING_RSA_SIGNING_CERT 170
04590 #define SSL_R_MISSING_TMP_DH_KEY 171
04591 #define SSL_R_MISSING_TMP_RSA_KEY 172
04592 #define SSL_R_MISSING_TMP_RSA_PKEY 173
04593 #define SSL_R_MISSING_VERIFY_MESSAGE 174
04594 #define SSL_R_NON_SSLV2_INITIAL_PACKET 175
04595 #define SSL_R_NO_CERTIFICATES_RETURNED 176
04596 #define SSL_R_NO_CERTIFICATE_ASSIGNED 177
04597 #define SSL_R_NO_CERTIFICATE_RETURNED 178
04598 #define SSL_R_NO_CERTIFICATE_SET 179
04599 #define SSL_R_NO_CERTIFICATE_SPECIFIED 180
04600 #define SSL_R_NO_CIPHERS_AVAILABLE 181
04601 #define SSL_R_NO_CIPHERS_LOADED 1108
04602 #define SSL_R_NO_CIPHERS_PASSED 182
04603 #define SSL_R_NO_CIPHERS_SPECIFIED 183
04604 #define SSL_R_NO_CIPHER_LIST 184
04605 #define SSL_R_NO_CIPHER_MATCH 185
04606 #define SSL_R_NO_CLIENT_CERT_RECEIVED 186
04607 #define SSL_R_NO_COMPRESSION_SPECIFIED 187
04608 #define SSL_R_NO_METHOD_SPECIFIED 188
04609 #define SSL_R_NO_PRIVATEKEY 189
04610 #define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190
04611 #define SSL_R_NO_PROTOCOLS_AVAILABLE 191
04612 #define SSL_R_NO_PUBLICKEY 192
04613 #define SSL_R_NO_SHARED_CIPHER 193
04614 #define SSL_R_NO_SSL_MESSAGE_DIGEST 1107
04615 #define SSL_R_NO_VERIFY_CALLBACK 194
04616 #define SSL_R_NULL_SSL_CTX 195
04617 #define SSL_R_NULL_SSL_METHOD_PASSED 196
04618 #define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197
04619 #define SSL_R_PACKET_LENGTH_TOO_LONG 198
04620 #define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199
04621 #define SSL_R_PEER_ERROR 200
04622 #define SSL_R_PEER_ERROR_CERTIFICATE 201
04623 #define SSL_R_PEER_ERROR_NO_CERTIFICATE 202
04624 #define SSL_R_PEER_ERROR_NO_CIPHER 203
04625 #define SSL_R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE 204
04626 #define SSL_R_PRE_MAC_LENGTH_TOO_LONG 205
04627 #define SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS 206
04628 #define SSL_R_PROTOCOL_IS_SHUTDOWN 207
04629 #define SSL_R_PUBLIC_KEY_ENCRYPT_ERROR 208
04630 #define SSL_R_PUBLIC_KEY_IS_NOT_RSA 209
04631 #define SSL_R_PUBLIC_KEY_NOT_RSA 210
04632 #define SSL_R_READ_BIO_NOT_SET 211
04633 #define SSL_R_READ_WRONG_PACKET_TYPE 212
04634 #define SSL_R_RECORD_LENGTH_MISMATCH 213
04635 #define SSL_R_RECORD_TOO_LARGE 214
04636 #define SSL_R_REQUIRED_CIPHER_MISSING 215
04637 #define SSL_R_REUSE_CERT_LENGTH_NOT_ZERO 216
04638 #define SSL_R_REUSE_CERT_TYPE_NOT_ZERO 217
04639 #define SSL_R_REUSE_CIPHER_LIST_NOT_ZERO 218
04640 #define SSL_R_R_RAND_FAILURE 1116
04641 #define SSL_R_SHORT_READ 219
04642 #define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220
04643 #define SSL_R_SSL23_DOING_SESSION_ID_REUSE 221
04644 #define SSL_R_SSL3_SESSION_ID_TOO_LONG 1105
04645 #define SSL_R_SSL3_SESSION_ID_TOO_SHORT 222
04646 #define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042
04647 #define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020
04648 #define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045
04649 #define SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044
04650 #define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046
04651 #define SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030
04652 #define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040
04653 #define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047
04654 #define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041
04655 #define SSL_R_SSLV3_ALERT_PEER_ERROR_CERTIFICATE 223
04656 #define SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CERTIFICATE 224
04657 #define SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CIPHER 225
04658 #define SSL_R_SSLV3_ALERT_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE 226
04659 #define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010
04660 #define SSL_R_SSLV3_ALERT_UNKNOWN_REMOTE_ERROR_TYPE 227
04661 #define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043
04662 #define SSL_R_SSL_CERT_IS_DEFAULT 1109
04663 #define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228
04664 #define SSL_R_SSL_HANDSHAKE_FAILURE 229
04665 #define SSL_R_SSL_MODE_NOT_SET 1101
04666 #define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 1106
04667 #define SSL_R_SSL_SESSION_ID_IS_DIFFERENT 231
04668 #define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049
04669 #define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050
04670 #define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021
04671 #define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051
04672 #define SSL_R_TLSV1_ALERT_EXPORT_RESTRICION 1060
04673 #define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071
04674 #define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080
04675 #define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100
04676 #define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION 1070
04677 #define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022
04678 #define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048
04679 #define SSL_R_TLSV1_ALERT_USER_CANCLED 1090
04680 #define SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER 232
04681 #define SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST 233
04682 #define SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG 234
04683 #define SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER 235
04684 #define SSL_R_UNABLE_TO_DECODE_DH_CERTS 236
04685 #define SSL_R_UNABLE_TO_EXTRACT_PUBLIC_KEY 237
04686 #define SSL_R_UNABLE_TO_FIND_DH_PARAMETERS 238
04687 #define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239
04688 #define SSL_R_UNABLE_TO_FIND_SSL_METHOD 240
04689 #define SSL_R_UNABLE_TO_LOAD_DSA_SHA1_ROUTINES 1102
04690 #define SSL_R_UNABLE_TO_LOAD_SSL2_MD5_ROUTINES 241
04691 #define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242
04692 #define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243
04693 #define SSL_R_UNEXPECTED_MESSAGE 244
04694 #define SSL_R_UNEXPECTED_RECORD 245
04695 #define SSL_R_UNKNOWN_ALERT_TYPE 246
04696 #define SSL_R_UNKNOWN_CERTIFICATE_TYPE 247
04697 #define SSL_R_UNKNOWN_CIPHER_RETURNED 248
04698 #define SSL_R_UNKNOWN_CIPHER_TYPE 249
04699 #define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250
04700 #define SSL_R_UNKNOWN_PKEY_TYPE 251
04701 #define SSL_R_UNKNOWN_PROTOCOL 252
04702 #define SSL_R_UNKNOWN_REMOTE_ERROR_TYPE 253
04703 #define SSL_R_UNKNOWN_SSL_VERSION 254
04704 #define SSL_R_UNKNOWN_STATE 255
04705 #define SSL_R_UNSUPPORTED_CIPHER 256
04706 #define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257
04707 #define SSL_R_UNSUPPORTED_PROTOCOL 258
04708 #define SSL_R_UNSUPPORTED_SSL_VERSION 259
04709 #define SSL_R_WRITE_BIO_NOT_SET 260
04710 #define SSL_R_WRONG_CIPHER_RETURNED 261
04711 #define SSL_R_WRONG_MESSAGE_TYPE 262
04712 #define SSL_R_WRONG_SIGNATURE_LENGTH 264
04713 #define SSL_R_WRONG_SIGNATURE_SIZE 265
04714 #define SSL_R_WRONG_SSL_VERSION 266
04715 #define SSL_R_WRONG_VERSION_NUMBER 267
04716 #define SSL_R_X509_LIB 268
04717 #define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS 269
04718 #define SSL_R_INVALID_PUBLIC_KEY_FIELD_SIZE 270
04719 #define SSL_R_INVALID_BUFFER_SIZE 1117
04720 #define SSL_R_HARDWARE_FAILURE 1118
04721 #define SSL_R_ERROR_PARSING_FILE_PARAM 1119
04722 #define SSL_R_DUPLICATE_FIELDS_IN_FILE_PARAM 1120
04723
04724 #ifdef __cplusplus
04725 }
04726 #endif
04727 #endif
04728