| RSA BSAFE SSL-C |
Security protocol components for C |
| Search |
00001 /* $Id: ssl.h,v 1.493 2004/11/23 23:53:58 jmckee 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
00159 /* SSL features - run time controlled features */
00178 #define SSL_FEATURE_DH 0x00000001
00179
00187 #define SSL_FEATURE_DSA 0x00000002
00188
00196 #define SSL_FEATURE_ALLOW_ENULL 0x00000004
00197
00205 #define SSL_FEATURE_ALLOW_ANULL 0x00000008
00206
00215 #define SSL_FEATURE_ALLOW_ADH SSL_FEATURE_ALLOW_ANULL
00216
00221 #define SSL_TMP_512_RSA 0x0001
00222
00224 #define SSL_TMP_512_DH 0x0002
00225
00227 #define SSL_TMP_1024_DH 0x0004
00228
00230 #define SSL_TMP_2048_DH 0x0008
00231
00233 #define SSL_TMP_1024_RSA 0x0010
00234
00236 #define SSL_TMP_GENERATE_NOW 0
00237
00239 #define SSL_TMP_GENERATE_LATER 1
00240
00255 #define SSL_FILETYPE_ASN1 X509_FILETYPE_ASN1
00256
00257 #define SSL_FILETYPE_PEM X509_FILETYPE_PEM
00258
00259 #define SSL_FILETYPE_HARDWARE 4
00260
00265 /* Options for setting the message size for handshake certificates */
00266
00277 #define SSL_SZ_CERT_ALL 100
00278
00279 #define SSL_SZ_CLIENT_CERT 101
00280
00281 #define SSL_SZ_SERVER_CERT 102
00282
00283 #if defined(MSDOS) && !defined(WIN32)
00284
00285 #define SSL_SZ_CERT_DEFAULT_SZ 30720
00286 #else
00287
00288 #define SSL_SZ_CERT_DEFAULT_SZ 102400
00289 #endif
00290
00295 /* version number for ASN.1 encoding of the session information */
00296
00297 /*
00298 * Version 0 - initial version - pre SSL-C 1.0
00299 * Version 1 - added the optional peer certificate - SSL-C 1.0
00300 */
00301
00302 #define SSL_SESSION_ASN1_VERSION 0x0001
00303
00366 #define SSL_OP_MICROSOFT_SESS_ID_BUG 0x00000001L
00367
00380 #define SSL_OP_NETSCAPE_CHALLENGE_BUG 0x00000002L
00381
00389 #define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG 0x00000008L
00390
00398 #define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG 0x00000010L
00399
00407 #define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER 0x00000020L
00408
00415 #define SSL_OP_MSIE_SSLV2_RSA_PADDING 0x00000040L
00416
00422 #define SSL_OP_SSLEAY_080_CLIENT_DH_BUG 0x00000080L
00423
00431 #define SSL_OP_TLS_D5_BUG 0x00000100L
00432
00438 #define SSL_OP_TLS_BLOCK_PADDING_BUG 0x00000200L
00439
00448 #define SSL_OP_TLS_ROLLBACK_BUG 0x00000400L
00449
00455 #define SSL_OP_MS_SGC 0x00000800L
00456
00460 #define SSL_OP_DHANON_NULL_SIGNATURE_OK 0x00001000L
00461
00478 #define SSL_OP_ALL 0x0000FFFFL
00479
00482 #define SSL_OP_MULTIPRIME_TMP_RSA_KEYS 0x00010000L
00483
00488 #define SSL_OP_QUIET_SHUTDOWN 0x00020000L
00489
00494 #define SSL_OP_ANYTIME_SHUTDOWN 0x00040000L
00495
00499 #define SSL_OP_SSLC2_DH_BUG 0x00080000L
00500
00504 #define SSL_OP_SINGLE_DH_USE 0x00100000L
00505
00508 #define SSL_OP_EPHEMERAL_RSA 0x00200000L
00509
00522 #define SSL_OP_REUSE_DELAY_CLIENT_FINISHED 0x00400000L
00523
00530 #define SSL_OP_DELAY_READ_SERVER_FINISHED 0x00800000L
00531
00537 #define SSL_OP_NO_SSLv2 0x01000000L
00538
00544 #define SSL_OP_NO_SSLv3 0x02000000L
00545
00551 #define SSL_OP_NO_TLSv1 0x04000000L
00552
00556 #define SSL_OP_PKCS1_CHECK_1 0x08000000L
00557
00561 #define SSL_OP_PKCS1_CHECK_2 0x10000000L
00562
00571 #define SSL_OP_NETSCAPE_CA_DN_BUG 0x20000000L
00572
00577 #define SSL_OP_NON_EXPORT_FIRST 0x40000000L
00578
00581 #define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG 0x80000000L
00582
00586 #ifndef NO_SESSION_CACHE
00587
00671 #define SSL_SESS_CACHE_OFF 0x0000
00672
00677 #define SSL_SESS_CACHE_CLIENT 0x0001
00678
00681 #define SSL_SESS_CACHE_SERVER 0x0002
00682
00687 #define SSL_SESS_CACHE_BOTH (SSL_SESS_CACHE_CLIENT|SSL_SESS_CACHE_SERVER)
00688
00692 #define SSL_SESS_CACHE_NO_AUTO_CLEAR 0x0080
00693
00694 #ifndef SSLC_SMALL_CODE
00695
00703 #define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP 0x0100
00704 #endif /* !SSLC_SMALL_CODE */
00705
00712 #define SSL_SESS_CACHE_OFF_NON_ZERO_ID 0x0200
00713
00719 #define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT (1024*20)
00720 /* end group SSL_SESS_CACHE_MODE_DEF */
00736 #define SSL_EXT_SESS_CACHE_ADD 1
00737
00740 #define SSL_EXT_SESS_CACHE_DEL 2
00741
00744 #define SSL_EXT_SESS_CACHE_FIND 3
00745 /* end group SSL_EXT_SESS_DEF */
00750 #endif /* !NO_SESSION_CACHE */
00751
00752
00770 #define SSL_NOTHING 1
00771
00774 #define SSL_WRITING 2
00775
00778 #define SSL_READING 3
00779
00782 #define SSL_X509_LOOKUP 4
00783 /* end group SSL Non-Blocking IO States */
00788 /* take out SSL v2 for SSL-C ME and small code builds */
00789 #if !defined(NO_SSL2) || defined(NO_SSL2IMPL)
00790 #include "ssl2.h"
00791 #include "ssl23.h"
00792 #endif /* !NO_SSL2 && !NO_SSL2IMPL */
00793 #include "ssl3.h"
00794 #include "tls1.h" /* mostly sslv3 with some modifications */
00795
00811 #define SSL_ST_CONNECT 0x1000
00812
00813 #define SSL_ST_ACCEPT 0x2000
00814
00815 #define SSL_ST_MASK 0x0FFF
00816
00819 #define SSL_ST_INIT (SSL_ST_CONNECT|SSL_ST_ACCEPT)
00820
00821 #define SSL_ST_BEFORE 0x4000
00822
00823 #define SSL_ST_OK 0x03
00824
00825 #define SSL_ST_RENEGOTIATE (0x04|SSL_ST_INIT)
00826
00827 #define SSL_CB_LOOP 0x01
00828
00829 #define SSL_CB_EXIT 0x02
00830
00831 #define SSL_CB_READ 0x04
00832
00833 #define SSL_CB_WRITE 0x08
00834
00835 #define SSL_CB_ALERT 0x4000
00836
00837 #define SSL_CB_READ_ALERT (SSL_CB_ALERT|SSL_CB_READ)
00838
00839 #define SSL_CB_WRITE_ALERT (SSL_CB_ALERT|SSL_CB_WRITE)
00840
00841 #define SSL_CB_ACCEPT_LOOP (SSL_ST_ACCEPT|SSL_CB_LOOP)
00842
00843 #define SSL_CB_ACCEPT_EXIT (SSL_ST_ACCEPT|SSL_CB_EXIT)
00844
00845 #define SSL_CB_CONNECT_LOOP (SSL_ST_CONNECT|SSL_CB_LOOP)
00846
00847 #define SSL_CB_CONNECT_EXIT (SSL_ST_CONNECT|SSL_CB_EXIT)
00848
00849 #define SSL_CB_HANDSHAKE_START 0x10
00850
00851 #define SSL_CB_HANDSHAKE_DONE 0x20
00852 /* end group SSL_PROTOCOL_STATE_IDS */
00857 /*
00858 * The following 2 states are kept in ssl->rstate when reads fail,
00859 * you should not need these
00860 */
00861
00862 #define SSL_ST_READ_HEADER 0xF0
00863 #define SSL_ST_READ_BODY 0xF1
00864 #define SSL_ST_READ_DONE 0xF2
00865
00899 /* end group SSL_CERTIFICATE_MANAGEMENT */
00943 /* end group SSL_KEY_MANAGEMENT */
00964 #define SSL_VERIFY_NONE 0x00
00965
00968 #define SSL_VERIFY_PEER 0x01
00969
00973 #define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
00974
00978 #define SSL_VERIFY_CLIENT_ONCE 0x04
00979 /* end group SSL_VERIFY_MODE_DEF */
00985 #define SSL_FLUSH_ALL 0
00986
00987 #define SSL_FLUSH_OLD 1
00988
00989 #define SSL_AD_REASON_OFFSET 1000
00990
00991 /* These alert types are for SSLv3 and TLSv1 */
00992
00993 #define SSL_AD_CLOSE_NOTIFY SSL3_AD_CLOSE_NOTIFY
00994
00995 #define SSL_AD_UNEXPECTED_MESSAGE SSL3_AD_UNEXPECTED_MESSAGE
00996
00997 #define SSL_AD_BAD_RECORD_MAC SSL3_AD_BAD_RECORD_MAC
00998 #define SSL_AD_DECRYPTION_FAILED TLS1_AD_DECRYPTION_FAILED
00999 #define SSL_AD_RECORD_OVERFLOW TLS1_AD_RECORD_OVERFLOW
01000
01001 #define SSL_AD_DECOMPRESSION_FAILURE SSL3_AD_DECOMPRESSION_FAILURE
01002
01003 #define SSL_AD_HANDSHAKE_FAILURE SSL3_AD_HANDSHAKE_FAILURE
01004
01005 #define SSL_AD_NO_CERTIFICATE SSL3_AD_NO_CERTIFICATE
01006 #define SSL_AD_BAD_CERTIFICATE SSL3_AD_BAD_CERTIFICATE
01007 #define SSL_AD_UNSUPPORTED_CERTIFICATE SSL3_AD_UNSUPPORTED_CERTIFICATE
01008 #define SSL_AD_CERTIFICATE_REVOKED SSL3_AD_CERTIFICATE_REVOKED
01009 #define SSL_AD_CERTIFICATE_EXPIRED SSL3_AD_CERTIFICATE_EXPIRED
01010 #define SSL_AD_CERTIFICATE_UNKNOWN SSL3_AD_CERTIFICATE_UNKNOWN
01011
01012 #define SSL_AD_ILLEGAL_PARAMETER SSL3_AD_ILLEGAL_PARAMETER
01013
01014 #define SSL_AD_UNKNOWN_CA TLS1_AD_UNKNOWN_CA
01015
01016 #define SSL_AD_ACCESS_DENIED TLS1_AD_ACCESS_DENIED
01017
01018 #define SSL_AD_DECODE_ERROR TLS1_AD_DECODE_ERROR
01019 #define SSL_AD_DECRYPT_ERROR TLS1_AD_DECRYPT_ERROR
01020
01021 #define SSL_AD_EXPORT_RESTRICION TLS1_AD_EXPORT_RESTRICION
01022
01023 #define SSL_AD_PROTOCOL_VERSION TLS1_AD_PROTOCOL_VERSION
01024
01025 #define SSL_AD_INSUFFICIENT_SECURITY TLS1_AD_INSUFFICIENT_SECURITY
01026
01027 #define SSL_AD_INTERNAL_ERROR TLS1_AD_INTERNAL_ERROR
01028 #define SSL_AD_USER_CANCLED TLS1_AD_USER_CANCLED
01029 #define SSL_AD_NO_RENEGOTIATION TLS1_AD_NO_RENEGOTIATION
01030
01044 #define SSL_ERROR_NONE 0
01045
01049 #define SSL_ERROR_SSL 1
01050
01057 #define SSL_ERROR_WANT_READ 2
01058
01065 #define SSL_ERROR_WANT_WRITE 3
01066
01072 #define SSL_ERROR_WANT_X509_LOOKUP 4
01073
01077 #define SSL_ERROR_SYSCALL 5
01078
01082 #define SSL_ERROR_ZERO_RETURN 6
01083
01087 #define SSL_ERROR_WANT_CONNECT 7
01088 /* end group SSL_ERROR_CODE_DEF */
01093 #define SSL_CTRL_NEED_TMP_RSA 1
01094 #define SSL_CTRL_SET_TMP_RSA 2
01095 #define SSL_CTRL_SET_TMP_DH 3
01096 #define SSL_CTRL_SET_TMP_RSA_CB 4
01097 #define SSL_CTRL_SET_TMP_DH_CB 5
01098
01099 /* #define SSL_CTRL_GET_SESSION_REUSED 6 */
01100
01101 #define SSL_CTRL_GET_CLIENT_CERT_REQUEST 7
01102 #define SSL_CTRL_GET_NUM_RENEGOTIATIONS 8
01103 #define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS 9
01104 #define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS 10
01105 #define SSL_CTRL_GET_FLAGS 11
01106 #define SSL_CTRL_EXTRA_CHAIN_CERT 12
01107 #define SSL_CTRL_NEED_TMP_RSA512 13
01108 #define SSL_CTRL_NEED_TMP_RSA1024 14
01109 #define SSL_CTRL_SET_TMP_RSA512 15
01110 #define SSL_CTRL_SET_TMP_RSA1024 16
01111 #define SSL_CTRL_ADD_EXPLICIT_CERT_CHAIN 17
01112 #define SSL_CTRL_CLEAR_EXPLICIT_CERT_CHAIN 18
01113
01114 /* Stats */
01115
01116 #define SSL_CTRL_SESS_NUMBER 20
01117 #define SSL_CTRL_SESS_CONNECT 21
01118 #define SSL_CTRL_SESS_CONNECT_GOOD 22
01119 #define SSL_CTRL_SESS_CONNECT_RENEGOTIATE 23
01120 #define SSL_CTRL_SESS_ACCEPT 24
01121 #define SSL_CTRL_SESS_ACCEPT_GOOD 25
01122 #define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE 26
01123 #define SSL_CTRL_SESS_HIT 27
01124 #define SSL_CTRL_SESS_CB_HIT 28
01125 #define SSL_CTRL_SESS_MISSES 29
01126 #define SSL_CTRL_SESS_TIMEOUTS 30
01127 #define SSL_CTRL_SESS_CACHE_FULL 31
01128 #define SSL_CTRL_OPTIONS 32
01129
01130 #define SSL_CTRL_SET_SESS_CACHE_SIZE 42
01131 #define SSL_CTRL_GET_SESS_CACHE_SIZE 43
01132 #define SSL_CTRL_SET_SESS_CACHE_MODE 44
01133 #define SSL_CTRL_GET_SESS_CACHE_MODE 45
01134 #define SSL_CTRL_SET_MESSAGE_SIZE 46
01135 #define SSL_CTRL_GET_MESSAGE_SIZE 47
01136
01137 #define SSL_CTRL_SET_WRITE_BUFFER_SIZE 50
01138 #define SSL_CTRL_GET_WRITE_BUFFER_SIZE 51
01139
01140 #define SSL_CTRL_SET_DEBUG 52
01141
01142 #define SSL_CTRL_SET_READ_BUFFER_SIZE 53
01143 #define SSL_CTRL_GET_READ_BUFFER_SIZE 54
01144
01145 #define SSL_CTRL_GET_REFERENCES 55
01146
01147 #define SSL_CTRL_SET_RSA_BLINDING_MODE 56
01148
01149 #define SSL_CTRL_SET_MAX_RSA_N_SIZE 57
01150 #define SSL_CTRL_SET_MAX_RSA_E_SIZE 58
01151
01152
01153 /*
01154 * 'DEFAULT' at the start of the cipher list insert the following string
01155 * in addition to this being the default cipher string
01156 *
01157 */
01158
01159 #ifdef SSLC_SMALL_CODE
01160
01161 #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"
01162
01163 #else /* !SSLC_SMALL_CODE */
01164
01165 #ifndef NO_RSA
01166 #define SSL_DEFAULT_CIPHER_LIST \
01167 "ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP"
01168 #else /* !NO_RSA */
01169 #ifdef SSL_ALLOW_ADH
01170 #define SSL_DEFAULT_CIPHER_LIST "HIGH:MEDIUM:LOW:ADH+3DES:ADH+RC4:ADH+DES:+EXP"
01171 #else /* !SSL_ALLOW_ADH */
01172 #define SSL_DEFAULT_CIPHER_LIST "HIGH:MEDIUM:LOW:+EXP"
01173 #endif /* SSL_ALLOW_ADH */
01174 #endif /* NO_RSA */
01175
01176 #endif /* SSLC_SMALL_CODE */
01177
01178 /* Used in SSL_set_shutdown() / SSL_get_shutdown(); */
01179
01181 #define SSL_SENT_SHUTDOWN 1
01182
01183 #define SSL_RECEIVED_SHUTDOWN 2
01184
01185 /* take out headers not needed for small code builds e.g SSL-C ME*/
01186 #ifndef SSLC_SMALL_CODE
01187 #include "vercfg.h"
01188 #else /* SSLC_SMALL_CODE */
01189 #include "r_time.h"
01190 #endif /* SSLC_SMALL_CODE */
01191
01192 /* data types are opaque for the library-internal functions when
01193 * compiling user code - there are typedefs for all the required
01194 * datatypes referenced in the ssl structures (which
01195 * remain visible for compatibility)
01196 */
01197 #ifndef HEADER_COMMON_STACK_H_TYPEDEF_DEF
01198 #define HEADER_COMMON_STACK_H_TYPEDEF_DEF
01199 typedef struct stack_st STACK;
01200 #endif
01201
01202 #ifndef HEADER_COMMON_EVP_H_TYPEDEF_DEF
01203 #define HEADER_COMMON_EVP_H_TYPEDEF_DEF
01204 typedef struct evp_md_st EVP_MD;
01205 typedef struct evp_md_ctx_st EVP_MD_CTX;
01206 typedef struct evp_cipher_st EVP_CIPHER;
01207 typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX;
01208
01225 typedef struct evp_pkey_st EVP_PKEY;
01226
01227 /* To remove a dependence of the old evp on ASN.1 definitions */
01228 typedef void EVP_ASN1_TYPE;
01229 #endif /* HEADER_COMMON_EVP_H */
01230
01231 #ifndef HEADER_COMMON_E_ENCODE_H
01232 #define HEADER_COMMON_E_ENCODE_H
01233 typedef struct evp_encode_ctx_st EVP_ENCODE_CTX;
01234 #endif /* HEADER_COMMON_E_ENCODE_H */
01235
01236 #ifndef HEADER_COMMON_DH_H_TYPEDEF_DEF
01237 #define HEADER_COMMON_DH_H_TYPEDEF_DEF
01238 typedef struct dh_st DH;
01239 #endif /* HEADER_COMMON_DH_H_TYPEDEF_DEF */
01240
01241 #ifndef HEADER_COMMON_RSA_H_TYPEDEF_DEF
01242 #define HEADER_COMMON_RSA_H_TYPEDEF_DEF
01243 typedef struct rsa_surrender_st RSA_SURRENDER;
01244 typedef struct rsa_st RSA;
01245 #endif /* HEADER_COMMON_RSA_H_TYPEDEF_DEF */
01246
01247 #ifndef HEADER_COMMON_RSA_H
01248 typedef struct rsa_meth_st RSA_METHOD;
01249
01250 RSA * R_CDECL RSA_new(void);
01251 void R_CDECL RSA_free(RSA *rsa);
01252 RSA * R_CDECL RSA_dup(RSA *rsa);
01253 int R_CDECL RSA_size(RSA *rsa);
01254
01255 RSA_METHOD * R_CDECL RSA_default_method(void);
01256 RSA * R_CDECL RSA_new_method(RSA_METHOD *method);
01257 void R_CDECL RSA_set_default_method(RSA_METHOD *method);
01258 #endif /* HEADER_COMMON_RSA_H */
01259
01260 #include "cert.h"
01261
01262 #ifndef HEADER_COMMON_RSA_H_TYPEDEF_DEF
01263 #define HEADER_COMMON_RSA_H_TYPEDEF_DEF
01264 typedef struct rsa_surrender_st RSA_SURRENDER;
01265 typedef struct rsa_st RSA;
01266 #endif /* HEADER_COMMON_RSA_H_TYPEDEF_DEF */
01267
01268 #ifndef HEADER_PEM_H_TYPEDEF_DEF
01269 #define HEADER_PEM_H_TYPEDEF_DEF
01270 typedef int R_CDECL PEM_PASSWORD_CB_T(char *buf, int len, int flag);
01271 #endif /* HEADER_PEM_H_TYPEDEF_DEF */
01272
01276 typedef struct ssl_ctx_st SSL_CTX;
01277
01278 #ifndef HEADER_SSL_H_TYPEDEF_DEF
01279 #define HEADER_SSL_H_TYPEDEF_DEF
01280
01283 typedef struct ssl_st SSL;
01284 #endif /* HEADER_SSL_H_TYPEDEF_DEF*/
01285
01286
01293 typedef struct ssl_cipher_st SSL_CIPHER;
01294
01301 typedef struct ssl_method_st SSL_METHOD;
01302
01303
01313 typedef struct ssl_session_st SSL_SESSION;
01319 typedef struct ssl_simple_session_cache_st SSL_SIMPLE_SESSION_CACHE;
01320
01321 #ifndef HEADER_X509_H_TYPEDEF_DEF
01322 #define HEADER_X509_H_TYPEDEF_DEF
01323 typedef struct x509_st X509;
01324 typedef struct X509_name_entry_st X509_NAME_ENTRY;
01325 typedef struct x509_store_st X509_STORE;
01326 typedef struct x509_store_state_st X509_STORE_CTX;
01327 #ifdef X509_NAME
01328 /*
01329 * wincrypt.h defines this name as well
01330 */
01331 #undef X509_NAME
01332 #endif /* X509_NAME */
01333 typedef struct X509_name_st X509_NAME;
01334 #endif /* HEADER_X509_H_TYPEDEF_DEF */
01335
01336
01347 SSL_SESSION * R_CDECL SSL_SESSION_new(void);
01348 unsigned long R_CDECL SSL_SESSION_hash(SSL_SESSION *sess);
01349 int R_CDECL SSL_SESSION_cmp(SSL_SESSION *sessa, SSL_SESSION *sessb);
01350 void R_CDECL SSL_SESSION_free(SSL_SESSION *sess);
01351 int R_CDECL i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp);
01352 void R_CDECL SSL_SESSION_reference_inc(SSL_SESSION *sess);
01353 int R_CDECL SSL_set_session(SSL *ssl, SSL_SESSION *sess);
01354 SSL_SESSION * R_CDECL d2i_SSL_SESSION(SSL_SESSION **sess,
01355 unsigned char **pp, long length);
01356 R_TIME_T * R_CDECL SSL_SESSION_get_time(SSL_SESSION *sess, R_TIME_T *stime);
01357 R_TIME_T * R_CDECL SSL_SESSION_set_time(SSL_SESSION *sess, R_TIME_T *stime);
01358 long R_CDECL SSL_SESSION_get_timeout(SSL_SESSION *sess);
01359 long R_CDECL SSL_SESSION_set_timeout(SSL_SESSION *sess, long tmout);
01360 void R_CDECL SSL_copy_session(SSL *to,SSL *from);
01361 SSLCERT * R_CDECL SSL_SESSION_get_peer_certificate(SSL_SESSION *sess);
01362 int R_CDECL SSL_SESSION_get_master_key_length(SSL_SESSION *sess);
01363 unsigned char * R_CDECL SSL_SESSION_get_master_key(SSL_SESSION *sess);
01364 unsigned int R_CDECL SSL_SESSION_get_session_id_length(SSL_SESSION *sess);
01365 unsigned char * R_CDECL SSL_SESSION_get_session_id(SSL_SESSION *sess);
01366 int R_CDECL SSL_SESSION_set_not_reusable(SSL_SESSION *sess);
01367 int R_CDECL SSL_SESSION_get_not_reusable(SSL_SESSION *sess);
01368 /* end group SESSION_MANAGEMENT_FUNCS */
01374 #if defined(HEADER_COMMON_BIO_H) || defined(DOXYGEN)
01375
01400 BIO_METHOD * R_CDECL BIO_f_ssl(void);
01401 BIO * R_CDECL BIO_new_ssl(SSL_CTX *ctx,int client);
01402 BIO * R_CDECL BIO_new_ssl_connect(SSL_CTX *ctx);
01403 BIO * R_CDECL BIO_new_buffer_ssl_connect(SSL_CTX *ctx);
01404 int R_CDECL BIO_ssl_copy_session(BIO *to,BIO *from);
01405 int R_CDECL BIO_ssl_shutdown(BIO *bio);
01406 /* end group BIO_SSL_FUNCS */
01415 int R_CDECL SSL_SESSION_print(BIO *bio, SSL_SESSION *sess);
01416 SSL_SESSION * R_CDECL d2i_SSL_SESSION_bio(BIO *bio, unsigned char **s_id);
01417 int R_CDECL i2d_SSL_SESSION_bio(BIO *bio, SSL_SESSION *sess);
01418 int R_CDECL PEM_write_bio_SSL_SESSION(BIO *bio, SSL_SESSION *sess);
01419 SSL_SESSION * R_CDECL PEM_read_bio_SSL_SESSION(BIO *bio, SSL_SESSION **sess,
01420 PEM_PASSWORD_CB_T *callback);
01421
01422 #ifndef NO_FP_API
01423 int R_CDECL SSL_SESSION_print_fp(FILE *fp, SSL_SESSION *sess);
01424 SSL_SESSION * R_CDECL PEM_read_SSL_SESSION(FILE *fp, SSL_SESSION **sess,
01425 PEM_PASSWORD_CB_T *callback);
01426 int R_CDECL PEM_write_SSL_SESSION(FILE *fp, SSL_SESSION *sess);
01427 #endif /* !NO_FP_API */
01428
01429 /* end group SESSION_MANAGEMENT_FUNCS */
01433 #endif /* (HEADER_COMMON_BIO_H) || (DOXYGEN) */
01434
01458 #define SSL_is_init_finished(ssl) (SSL_state(ssl) == SSL_ST_OK)
01459
01472 #define SSL_in_init(ssl) (SSL_state(ssl)&SSL_ST_INIT)
01473
01487 #define SSL_in_before(ssl) (SSL_state(ssl)&SSL_ST_BEFORE)
01488
01502 #define SSL_in_connect_init(ssl) (SSL_state(ssl)&SSL_ST_CONNECT)
01503
01517 #define SSL_in_accept_init(ssl) (SSL_state(ssl)&SSL_ST_ACCEPT)
01518
01519 /* end group SSL_PROTOCOL_FUNCS */
01557 #define SSL_add_explicit_cert_chain(ssl,x509) \
01558 SSL_ctrl((ssl),SSL_CTRL_ADD_EXPLICIT_CERT_CHAIN,0,(char *)x509)
01559
01577 #define SSL_set_max_rsa_n_size(ssl,size) \
01578 SSL_ctrl((ssl),SSL_CTRL_SET_MAX_RSA_N_SIZE,(size),NULL)
01579
01597 #define SSL_set_max_rsa_e_size(ssl,size) \
01598 SSL_ctrl((ssl),SSL_CTRL_SET_MAX_RSA_E_SIZE,(size),NULL)
01599
01600
01614 #define SSL_clear_explicit_cert_chain(ssl) \
01615 SSL_ctrl((ssl),SSL_CTRL_CLEAR_EXPLICIT_CERT_CHAIN,0,NULL)
01616 /* end group SSL_CONNECTION_STATUS_FUNCS */
01648 #define SSL_CTX_sess_set_cache_size(ctx, csize) \
01649 SSL_CTX_ctrl((ctx), SSL_CTRL_SET_SESS_CACHE_SIZE, (csize), NULL)
01650
01664 #define SSL_CTX_sess_get_cache_size(ctx) \
01665 SSL_CTX_ctrl((ctx), SSL_CTRL_GET_SESS_CACHE_SIZE, 0, NULL)
01666
01687 #define SSL_CTX_set_session_cache_mode(ctx,mode) \
01688 (int)SSL_CTX_ctrl((ctx), SSL_CTRL_SET_SESS_CACHE_MODE, (mode), NULL)
01689
01704 #define SSL_CTX_get_session_cache_mode(ctx) \
01705 (int)SSL_CTX_ctrl((ctx), SSL_CTRL_GET_SESS_CACHE_MODE, 0, NULL)
01706
01724 #define SSL_CTX_set_max_rsa_n_size(ssl,size) \
01725 SSL_CTX_ctrl((ssl_ctx),SSL_CTRL_SET_MAX_RSA_N_SIZE,(size),NULL)
01726
01745 #define SSL_CTX_set_max_rsa_e_size(ssl,size) \
01746 SSL_CTX_ctrl((ssl_ctx),SSL_CTRL_SET_MAX_RSA_E_SIZE,(size),NULL)
01747
01748
01749
01750
01762 typedef int R_CDECL SSL_SESS_NEW_CB_T(SSL *ssl, SSL_SESSION *session);
01763 void R_CDECL SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, SSL_SESS_NEW_CB_T *new_session_cb);
01764 SSL_SESS_NEW_CB_T * R_CDECL SSL_CTX_sess_get_new_cb(SSL_CTX *ctx);
01765
01777 typedef void R_CDECL SSL_SESS_REMOVE_CB_T(SSL_CTX *ssl, SSL_SESSION *session);
01778 void R_CDECL SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx,
01779 SSL_SESS_REMOVE_CB_T *remove_session_cb);
01780 SSL_SESS_REMOVE_CB_T * R_CDECL SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx);
01781
01802 typedef SSL_SESSION * R_CDECL SSL_SESS_GET_CB_T(SSL *ssl, unsigned char *sess_id,
01803 int id_len, int *copyflag);
01804 void R_CDECL SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, SSL_SESS_GET_CB_T *get_session_cb);
01805 SSL_SESS_GET_CB_T * R_CDECL SSL_CTX_sess_get_get_cb(SSL_CTX *ctx);
01806 int R_CDECL SSL_CTX_add_session(SSL_CTX *ctx, SSL_SESSION *sess);
01807 int R_CDECL SSL_CTX_remove_session(SSL_CTX *ctx, SSL_SESSION *sess);
01808 int R_CDECL SSL_CTX_flush_sessions(SSL_CTX *ctx, int timeout);
01809 /* end group SSL_SESSION_CACHE_FUNCS */
01838 typedef void R_CDECL SSL_INFO_CB_T(SSL *ssl, int where, int ret);
01839
01840 void R_CDECL SSL_CTX_set_info_cb(SSL_CTX *ctx, SSL_INFO_CB_T *cb);
01841 SSL_INFO_CB_T * R_CDECL SSL_CTX_get_info_cb(SSL_CTX *ctx);
01854 #define SSL_get_references(ssl) \
01855 SSL_ctrl((ssl), SSL_CTRL_GET_REFERENCES, 0, NULL)
01856
01865 #define SSL_CTX_get_references(ctx) \
01866 SSL_CTX_ctrl((ctx), SSL_CTRL_GET_REFERENCES, 0, NULL)
01867
01868 /* API cleanups */
01869 #include "ssl_lib.h"
01870
01871
01876 /* These will only be used when doing non-blocking I/O */
01892 #define SSL_want_nothing(ssl) (SSL_want(ssl) == SSL_NOTHING)
01893
01910 #define SSL_want_read(ssl) (SSL_want(ssl) == SSL_READING)
01911
01912
01929 #define SSL_want_write(ssl) (SSL_want(ssl) == SSL_WRITING)
01930
01947 #define SSL_want_x509_lookup(ssl) (SSL_want(ssl) == SSL_X509_LOOKUP)
01948 /* end group SSL_PROTOCOL_FUNCS */
01949
01950
01968 #define SSL_BLINDING_MODE_OFF 0x00
01969
01973 #define SSL_BLINDING_MODE_NO_UPDATE 0x01
01974
01978 #define SSL_BLINDING_MODE_FULL_UPDATE 0x02
01979
01999 #define SSL_DEFAULT_MAX_RSA_N_SIZE 8192
02000
02004 #define SSL_DEFAULT_MAX_RSA_E_SIZE 128
02005
02010 #define SSL_DEFAULT_MAX_RSA_N_SIZE 8192
02011
02015 #define SSL_DEFAULT_MAX_RSA_E_SIZE 128
02016
02032 SSL_CTX * R_CDECL SSL_CTX_new(SSL_METHOD *meth);
02033 void R_CDECL SSL_CTX_free(SSL_CTX *ctx);
02034 int R_CDECL SSL_CTX_set_cipher_list(SSL_CTX *ctx, char *str);
02035
02040 typedef int SSL_CTX_INFO;
02041 int R_CDECL SSL_CTX_set_info(SSL_CTX *ssl_ctx, SSL_CTX_INFO info_id, void *value);
02042 int R_CDECL SSL_CTX_get_info(SSL_CTX *ssl_ctx, SSL_CTX_INFO info_id, void *value);
02043 int R_CDECL SSL_CTX_set_R_LIB_CTX(SSL_CTX *ssl_ctx, R_LIB_CTX *lib_ctx, int mode);
02044
02057 #define SSL_CTX_set_rsa_blinding_mode(ctx,mode) \
02058 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_RSA_BLINDING_MODE,mode,NULL)
02059
02060 /* end group SSL_CTX_FUNCS */
02077 #define SSLC_FIPS140_SSL_MODE R_LIB_CTX_FIPS140_MODE
02078
02082 #define SSLC_NON_FIPS140_MODE R_LIB_CTX_STANDARD_MODE
02083
02087 #define SSLC_HARDWARE_MODE R_LIB_CTX_HARDWARE_MODE
02088
02092 #define SSLC_SOFTWARE_MODE R_LIB_CTX_SOFTWARE_MODE
02093
02150 #define SSL_CTX_INFO_R_LIB_CTX 1
02151
02166 #define SSL_CTX_INFO_FIPS140_MODE 2
02167
02168 /* end-SSL_CTX_INFO_TYPE */
02173 #define SSL_CTX_INFO_R_CR_CTX 3
02174 #define SSL_CTX_INFO_METH_DATA 4
02175
02230 #define SSL_INFO_R_LIB_CTX SSL_CTX_INFO_R_LIB_CTX
02231
02246 #define SSL_INFO_FIPS140_MODE SSL_CTX_INFO_FIPS140_MODE
02247
02248 /* end-SSL_INFO_TYPE */
02253 #define SSL_INFO_R_CR_CTX SSL_CTX_INFO_R_CR_CTX
02254 #define SSL_INFO_METH_DATA SSL_CTX_INFO_METH_DATA
02255
02260 int R_CDECL SSL_set_cipher_list(SSL *ssl, char *str);
02261 char * R_CDECL SSL_get_cipher_list(SSL *ssl,int idx);
02262 char * R_CDECL SSL_get_shared_ciphers(SSL *ssl, char *buffer, int len);
02263 STACK * R_CDECL SSL_get_ciphers(SSL *ssl);
02264
02265 void R_CDECL SSL_set_connect_state(SSL *ssl);
02266 void R_CDECL SSL_set_accept_state(SSL *ssl);
02267
02268 int R_CDECL SSL_get_peer_cert_chain_count(SSL *ssl);
02269 SSLCERT * R_CDECL SSL_get_peer_cert_chain_item(SSL *ssl, int n);
02270 int R_CDECL SSL_get_ciphers_count(SSL *ssl);
02271 SSL_CIPHER * R_CDECL SSL_get_ciphers_item(SSL *ssl, int n);
02272
02273 int R_CDECL SSL_pending(SSL *ssl);
02274 char * R_CDECL SSL_get_version(SSL *ssl);
02275
02276 SSLCERT * R_CDECL SSL_get_certificate(SSL *ssl);
02277 SSLCERT_PKEY * R_CDECL SSL_get_privatekey(SSL *ssl);
02292 SSL_CIPHER * R_CDECL SSL_get_current_cipher(SSL *ssl);
02293 int R_CDECL SSL_CIPHER_get_bits(SSL_CIPHER *cipher, int *alg_bits);
02294 unsigned long R_CDECL SSL_CIPHER_get_id(SSL_CIPHER *cipher);
02295 char * R_CDECL SSL_CIPHER_get_version(SSL_CIPHER *cipher);
02296 char * R_CDECL SSL_CIPHER_get_name(SSL_CIPHER *cipher);
02297 int R_CDECL SSL_CIPHER_get_valid(SSL_CIPHER *cipher);
02298 char * R_CDECL SSL_CIPHER_description(SSL_CIPHER *cipher, char *buffer, int size);
02299 /* end group SSL_CIPHER_MANAGEMENT_FUNCS */
02316 #ifndef NO_SOCK
02317 int R_CDECL SSL_set_fd(SSL *ssl, int fd);
02318 int R_CDECL SSL_set_rfd(SSL *ssl, int fd);
02319 int R_CDECL SSL_set_wfd(SSL *ssl, int fd);
02320 #endif /* NO_SOCK */
02321 int R_CDECL SSL_get_fd(SSL *ssl);
02330 SSLCERT * R_CDECL SSL_get_peer_certificate(SSL *ssl);
02331 STACK * R_CDECL SSL_get_peer_cert_chain(SSL *ssl);
02336 char * R_CDECL SSL_CTX_get_version(SSL_CTX *ssl_ctx);
02337
02342 long R_CDECL SSL_CTX_set_timeout(SSL_CTX *ctx,long tmout);
02343 long R_CDECL SSL_CTX_get_timeout(SSL_CTX *ctx);
02362 #ifndef NO_X509_STORE
02363
02367 SSLCERT_STORE * R_CDECL SSL_CTX_get_cert_store(SSL_CTX *ctx);
02368 void R_CDECL SSL_CTX_set_cert_store(SSL_CTX *,SSLCERT_STORE *);
02372 #endif /* !NO_X509_STORE */
02373
02374 #if defined(HEADER_COMMON_BIO_H) || defined(DOXYGEN)
02375
02379 void R_CDECL SSL_set_bio(SSL *ssl, BIO *rbio, BIO *wbio);
02383 #endif /* (HEADER_COMMON_BIO_H) || (DOXYGEN) */
02384
02385 void R_CDECL ERR_load_SSL_strings(void);
02386
02396 void R_CDECL SSL_load_error_strings(void);
02410 char * R_CDECL SSL_state_string(SSL *ssl);
02411 char * R_CDECL SSL_rstate_string(SSL *ssl);
02412 char * R_CDECL SSL_state_string_long(SSL *ssl);
02413 char * R_CDECL SSL_rstate_string_long(SSL *ssl);
02422 void R_CDECL SSL_CTX_set_verify_depth(SSL_CTX *ssl_ctx, int depth);
02423 int R_CDECL SSL_CTX_get_verify_depth(SSL_CTX *ssl_ctx);
02424
02425 int R_CDECL SSL_CTX_get_verify_mode(SSL_CTX *ctx);
02426 void R_CDECL SSL_CTX_set_verify_mode(SSL_CTX *ctx,int mode);
02427
02439 typedef int R_CDECL SSL_CTX_CERT_VERIFY_CB_T(SSLCERT_STORE_CTX *store_ctx, char *arg);
02440 void R_CDECL SSL_CTX_set_cert_verify_cb(SSL_CTX *ctx, SSL_CTX_CERT_VERIFY_CB_T *cb,
02441 char *arg);
02442
02459 typedef int R_CDECL SSL_CTX_APP_VERIFY_CB_T(SSL *ssl, SSLCERT **certs, int num,
02460 char *arg, long *verify_result);
02461
02462 void R_CDECL SSL_CTX_set_app_verify_cb(SSL_CTX *ctx, SSL_CTX_APP_VERIFY_CB_T *cb,
02463 char *arg);
02464 SSL_CTX_APP_VERIFY_CB_T * R_CDECL SSL_CTX_get_app_verify_cb(SSL_CTX *ctx);
02465 char * R_CDECL SSL_CTX_get_app_verify_cb_arg(SSL_CTX *ctx);
02466
02471 #ifndef NO_PEM
02472
02476 void R_CDECL SSL_CTX_set_default_passwd_cb(SSL_CTX *ctx, PEM_PASSWORD_CB_T *cb);
02480 #endif /* NO_PEM */
02481
02503 int R_CDECL SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa);
02504 int R_CDECL SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, unsigned char *d, long len);
02505 int R_CDECL SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey);
02506 int R_CDECL SSL_CTX_use_PrivateKey_ASN1(SSL_CTX *ctx, unsigned char *key, long len,
02507 int type);
02508 int R_CDECL SSL_CTX_check_private_key(SSL_CTX *ctx);
02509 int R_CDECL SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa);
02510 int R_CDECL SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *buffer, long len);
02511 int R_CDECL SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey);
02512 int R_CDECL SSL_use_PrivateKey_ASN1(SSL *ssl, unsigned char *data,
02513 long len, int type);
02514 int R_CDECL SSL_check_private_key(SSL *ctx);
02515
02516 EVP_PKEY * R_CDECL PEM_read_bio_PrivateKey(BIO *bio, EVP_PKEY **x,
02517 PEM_PASSWORD_CB_T *callback);
02518
02519 #ifndef NO_STDIO
02520 int R_CDECL SSL_use_RSAPrivateKey_file(SSL *ssl, char *file, int type);
02521 int R_CDECL SSL_use_PrivateKey_file(SSL *ssl, char *file, int type);
02522 int R_CDECL SSL_use_RSAPrivateKey_nFast(SSL *ssl, void *app_handle, void *key_id,
02523 int num_bits);
02524 int R_CDECL SSL_CTX_use_RSAPrivateKey_nFast(SSL_CTX *ctx, void *app_handle,
02525 void *key_id, int num_bits);
02526
02527 int R_CDECL SSL_CTX_use_RSAPrivateKey_file(SSL_CTX *ctx, char *file, int type);
02528 int R_CDECL SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, char *file, int type);
02529 int R_CDECL SSL_CTX_use_RSAPrivateKey_nFast(SSL_CTX *ctx, void *app_handle,
02530 void *key_id, int num_bits);
02531 #endif /* !NO_STDIO */
02532
02550 int R_CDECL SSL_CTX_use_certificate(SSL_CTX *ctx, SSLCERT *x509);
02551 int R_CDECL SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, unsigned char *cert, long len);
02552
02553 int R_CDECL SSL_use_certificate(SSL *ssl, SSLCERT *x509);
02554 int R_CDECL SSL_use_certificate_ASN1(SSL *ssl, unsigned char *buffer, long len);
02555
02556 #ifndef NO_STDIO
02557 int R_CDECL SSL_use_certificate_file(SSL *ssl, char *file, int type);
02558 int R_CDECL SSL_CTX_use_certificate_file(SSL_CTX *ctx, char *file, int type);
02559
02560 #endif /* NO_STDIO */
02561 /* end group SSL_CERTIFICATE_MANAGEMENT_FUNCS */
02575 SSL * R_CDECL SSL_new(SSL_CTX *ctx);
02576 int R_CDECL SSL_clear(SSL *ssl);
02577 void R_CDECL SSL_free(SSL *ssl);
02578 SSL * R_CDECL SSL_dup(SSL *ssl);
02583 typedef int SSL_INFO;
02584 int R_CDECL SSL_set_info(SSL *ssl, SSL_INFO info_id, void *value);
02585 int R_CDECL SSL_get_info(SSL *ssl, SSL_INFO info_id, void *value);
02586 int R_CDECL SSL_set_R_LIB_CTX(SSL *ssl, R_LIB_CTX *lib_ctx, int mode);
02587
02596 int R_CDECL SSL_do_handshake(SSL *ssl);
02597 int R_CDECL SSL_renegotiate(SSL *ssl);
02598 int R_CDECL SSL_shutdown(SSL *ssl);
02599 int R_CDECL SSL_accept(SSL *ssl);
02600 int R_CDECL SSL_connect(SSL *ssl);
02601 int R_CDECL SSL_read(SSL *ssl,char *buffer, int num);
02602 int R_CDECL SSL_peek(SSL *ssl,char *buffer, int num);
02603 int R_CDECL SSL_write(SSL *ssl,char *buffer, int num);
02608 long R_CDECL SSL_ctrl(SSL *ssl,int cmd, long larg, char *parg);
02609 long R_CDECL SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, char *parg);
02610
02615 int R_CDECL SSL_get_error(SSL *ssl, int ret_code);
02620 /* sets the 'default' SSL version that SSL_new() will create */
02621 int R_CDECL SSL_CTX_set_ssl_version(SSL_CTX *ctx, SSL_METHOD *meth);
02622
02634 /* SSLv2 */
02635 SSL_METHOD * R_CDECL SSLv2_method(void);
02636 SSL_METHOD * R_CDECL SSLv2_server_method(void);
02637 SSL_METHOD * R_CDECL SSLv2_client_method(void);
02638
02639 /* SSLv3 */
02640 SSL_METHOD * R_CDECL SSLv3_server_method(void);
02641 SSL_METHOD * R_CDECL SSLv3_client_method(void);
02642 SSL_METHOD * R_CDECL SSLv3_method(void);
02643
02644 /* SSLv3 but can rollback to v2 */
02645 SSL_METHOD * R_CDECL SSLv23_method(void);
02646 SSL_METHOD * R_CDECL SSLv23_server_method(void);
02647 SSL_METHOD * R_CDECL SSLv23_client_method(void);
02648
02649 /* TLSv1.0 */
02650 SSL_METHOD * R_CDECL TLSv1_method(void);
02651 SSL_METHOD * R_CDECL TLSv1_server_method(void);
02652 SSL_METHOD * R_CDECL TLSv1_client_method(void);
02653
02654 int R_CDECL SSL_set_ssl_method(SSL *ssl,SSL_METHOD *meth);
02655 /* end group SSL_METHOD_FUNCS */
02666 char * R_CDECL SSL_alert_type_string_long(int value);
02667 char * R_CDECL SSL_alert_type_string(int value);
02668 char * R_CDECL SSL_alert_desc_string_long(int value);
02669 char * R_CDECL SSL_alert_desc_string(int value);
02674 #ifndef NO_CA_LIST
02675
02686 void R_CDECL SSL_set_client_CA_list(SSL *ssl, STACK *sk);
02687 void R_CDECL SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK *sk);
02688 STACK * R_CDECL SSL_get_client_CA_list(SSL *ssl);
02689 STACK * R_CDECL SSL_CTX_get_client_CA_list(SSL_CTX *ctx);
02690 int R_CDECL SSL_add_client_CA(SSL *ssl, SSLCERT *x509);
02691 int R_CDECL SSL_CTX_add_client_CA(SSL_CTX *ctx, SSLCERT *x509);
02692 #ifndef NO_STDIO
02693 STACK * R_CDECL SSL_load_client_CA_file(char *file);
02694 #endif /* !NO_STDIO */
02695
02696 /* end group SSL_CERTIFICATE_STORE_FUNCS */
02700 #endif /* !NO_CA_LIST */
02701
02702
02707 long R_CDECL SSL_get_default_timeout(SSL *ssl);
02712 #include "ssl_algs.h"
02713
02714 /*
02715 * @defgroup SSL_UTILITY_FUNCS Utility Functions
02716 * This section describes the functions used to support an SSL
02717 * connection.
02718 *
02719 * @{
02720 */
02721 /*
02722 * @}
02723 */
02724
02749 /* Define these quiet shutdown functions for those who are already using
02750 * them
02751 */
02752
02776 #define SSL_CTX_set_quiet_shutdown(ctx, mode) \
02777 if (mode) SSL_CTX_set_options(ctx,SSL_OP_QUIET_SHUTDOWN);\
02778 else SSL_CTX_set_options(ctx,!SSL_OP_QUIET_SHUTDOWN);
02779
02803 #define SSL_CTX_get_quiet_shutdown(ctx) \
02804 ((SSL_CTX_get_options(ctx) & SSL_OP_QUIET_SHUTDOWN) != 0)
02805
02828 #define SSL_set_quiet_shutdown(ssl,mode) \
02829 if (mode) SSL_set_options(ssl,SSL_OP_QUIET_SHUTDOWN);\
02830 else SSL_set_options(ssl,!SSL_OP_QUIET_SHUTDOWN);
02831
02846 #define SSL_get_quiet_shutdown(ssl) \
02847 ((SSL_get_options(ssl) & SSL_OP_QUIET_SHUTDOWN) != 0)
02848
02849 /* Define the anytime shutdown functions for IMODE */
02850
02869 #define SSL_CTX_set_anytime_shutdown(ctx, mode) \
02870 if (mode) SSL_CTX_set_options(ctx,SSL_OP_ANYTIME_SHUTDOWN);\
02871 else SSL_CTX_set_options(ctx,!SSL_OP_ANYTIME_SHUTDOWN)
02872
02889 #define SSL_CTX_get_anytime_shutdown(ctx) \
02890 ((SSL_CTX_get_options(ctx) & SSL_OP_ANYTIME_SHUTDOWN) != 0)
02891
02907 #define SSL_set_anytime_shutdown(ssl,mode) \
02908 if (mode) SSL_set_options(ssl,SSL_OP_ANYTIME_SHUTDOWN);\
02909 else SSL_set_options(ssl,!SSL_OP_ANYTIME_SHUTDOWN)
02910
02927 #define SSL_get_anytime_shutdown(ssl) \
02928 ((SSL_get_options(ssl) & SSL_OP_ANYTIME_SHUTDOWN) != 0)
02929
02940 #define SSL_set_debug(ssl) \
02941 SSL_ctrl((ssl), SSL_CTRL_SET_DEBUG, 1, NULL)
02942
02943 /* end group SSL_SHUTDOWN_FUNCS */
02953 int R_CDECL SSL_CTX_set_default_verify_paths(SSL_CTX *ctx);
02954 int R_CDECL SSL_CTX_load_verify_locations(SSL_CTX *ctx, char *CAfile, char *CApath);
02955 int R_CDECL SSL_CTX_add_certificate_to_store(SSL_CTX *ctx, SSLCERT *cert);
02960 #ifndef NO_CA_LIST
02961
02965 int R_CDECL SSL_get_client_CA_list_count(SSL *ssl);
02966 SSLCERT_NAME * R_CDECL SSL_get_client_CA_list_item(SSL *ssl, int n);
02967 int R_CDECL SSL_CTX_get_client_CA_list_count(SSL_CTX *ctx);
02968 SSLCERT_NAME * R_CDECL SSL_CTX_get_client_CA_list_item(SSL_CTX *ctx, int n);
02969 /* end group SSL_CERTIFICATE_MANAGEMENT_FUNCS */
02973 #endif /* !NO_CA_LIST */
02974
02997 typedef int R_CDECL SSL_CTX_CLIENT_CERT_CB_T(SSL *ssl, void **cpp, EVP_PKEY **kpp);
02998
02999 void R_CDECL SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, SSL_CTX_CLIENT_CERT_CB_T *cb);
03000 SSL_CTX_CLIENT_CERT_CB_T * R_CDECL SSL_CTX_get_client_cert_cb(SSL_CTX *ctx);
03001 /* end group SSL_CERTIFICATE_MANAGEMENT_FUNCS */
03006 #define SSL_CTX_set_tmp_rsa_callback(ctx,cb) \
03007 SSL_CTX_set_tmp_rsa_cb(ctx,cb)
03008 #define SSL_CTX_set_tmp_dh_callback(ctx,dh) \
03009 SSL_CTX_set_tmp_dh_cb(ctx,dh)
03010 #define SSL_set_tmp_rsa_callback(ssl,cb) \
03011 SSL_set_tmp_rsa_cb(ssl,cb)
03012 #define SSL_set_tmp_dh_callback(ssl,dh) \
03013 SSL_set_tmp_dh_cb(ssl,dh)
03014
03015 #define SSL_CTX_need_tmp_RSA(ctx) \
03016 SSL_CTX_ctrl(ctx,SSL_CTRL_NEED_TMP_RSA,0,NULL)
03017
03047 #define SSL_CTX_set_tmp_rsa(ctx,rsa) \
03048 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA,0,(char *)rsa)
03049 #define SSL_CTX_set_tmp_rsa512(ctx,rsa) \
03050 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA512,0,(char *)rsa)
03051 #define SSL_CTX_set_tmp_rsa1024(ctx,rsa) \
03052 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA1024,0,(char *)rsa)
03053
03072 #define SSL_CTX_set_tmp_dh(ctx,dh) \
03073 SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)dh)
03074
03102 typedef RSA * R_CDECL SSL_TMP_RSA_CB_T(SSL *ssl, int export_type);
03103
03126 #define SSL_CTX_set_tmp_rsa_cb(ctx,cb) \
03127 SSL_CTX_ctrl((ctx), SSL_CTRL_SET_TMP_RSA_CB, 0, (char *)(cb))
03128
03129 SSL_TMP_RSA_CB_T * R_CDECL SSL_CTX_get_tmp_rsa_cb(SSL_CTX *ctx);
03130
03149 typedef DH * R_CDECL SSL_TMP_DH_CB_T(SSL *ssl, int export_type);
03150
03166 #define SSL_CTX_set_tmp_dh_cb(ctx, cb) \
03167 SSL_CTX_ctrl((ctx), SSL_CTRL_SET_TMP_DH_CB, 0, (char *)(cb))
03168
03169 SSL_TMP_DH_CB_T * R_CDECL SSL_CTX_get_tmp_dh_cb(SSL_CTX *ctx);
03170
03193 #define SSL_set_tmp_rsa_cb(ssl, callback) \
03194 SSL_ctrl((ssl), SSL_CTRL_SET_TMP_RSA_CB, 0, (char *)(callback))
03195
03196 SSL_TMP_RSA_CB_T * R_CDECL SSL_get_tmp_rsa_cb(SSL *ssl);
03197
03216 #define SSL_set_tmp_dh_cb(ssl, callback) \
03217 SSL_ctrl((ssl), SSL_CTRL_SET_TMP_DH_CB, 0, (char *)(callback))
03218
03219 SSL_TMP_DH_CB_T * R_CDECL SSL_get_tmp_dh_cb(SSL *ssl);
03220
03234 int R_CDECL SSL_CTX_set_tmp_key_mode(SSL_CTX *ctx, int type, int mode);
03235
03240 #ifndef SSLC_SMALL_CODE
03241
03242 #define SSL_CTX_set_alert_info_callback(x,y,z) \
03243 SSL_CTX_set_alert_info_cb(x,y,z)
03244 #define SSL_CTX_get_alert_info_callback(x) \
03245 SSL_CTX_get_alert_info_cb(x)
03246 #define SSL_CTX_get_alert_info_callback_arg(x) \
03247 SSL_CTX_get_alert_info_cb_arg(x)
03248
03249 #define SSL_set_alert_info_callback(x,y,z) \
03250 SSL_set_alert_info_cb(x,y,z)
03251 #define SSL_get_alert_info_callback(x) \
03252 SSL_get_alert_info_cb(x)
03253 #define SSL_get_alert_info_callback_arg(x) \
03254 SSL_get_alert_info_cb_arg(x)
03255
03256 #define SSL_CTX_sess_number(ctx) \
03257 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL)
03258 #define SSL_CTX_sess_connect(ctx) \
03259 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL)
03260 #define SSL_CTX_sess_connect_good(ctx) \
03261 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL)
03262 #define SSL_CTX_sess_connect_renegotiate(ctx) \
03263 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL)
03264 #define SSL_CTX_sess_accept(ctx) \
03265 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL)
03266 #define SSL_CTX_sess_accept_renegotiate(ctx) \
03267 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL)
03268 #define SSL_CTX_sess_accept_good(ctx) \
03269 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL)
03270 #define SSL_CTX_sess_hits(ctx) \
03271 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL)
03272 #define SSL_CTX_sess_cb_hits(ctx) \
03273 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL)
03274 #define SSL_CTX_sess_misses(ctx) \
03275 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL)
03276 #define SSL_CTX_sess_timeouts(ctx) \
03277 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL)
03278 #define SSL_CTX_sess_cache_full(ctx) \
03279 SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL)
03280
03281 #define SSL_num_renegotiations(ssl) \
03282 SSL_ctrl((ssl),SSL_CTRL_GET_NUM_RENEGOTIATIONS,0,NULL)
03283 #define SSL_clear_num_renegotiations(ssl) \
03284 SSL_ctrl((ssl),SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS,0,NULL)
03285 #define SSL_total_renegotiations(ssl) \
03286 SSL_ctrl((ssl),SSL_CTRL_GET_TOTAL_RENEGOTIATIONS,0,NULL)
03287
03288 /* Is the SSL_connection established? */
03289 #define SSL_get_state(a) SSL_state(a)
03290
03312 #define SSL_CTX_set_verify(ctx,mode,cb) SSL_CTX_set_verify_cb((ctx), \
03313 (SSL_VERIFY_CB_T *)(cb)); \
03314 SSL_CTX_set_verify_mode((ctx), (mode))
03315
03333 #define SSL_set_verify(ssl,mode,cb) SSL_set_verify_cb((ssl), \
03334 (SSL_VERIFY_CB_T *)(cb)); \
03335 SSL_set_verify_mode((ssl),(mode))
03336
03360 typedef void R_CDECL SSL_ALERT_INFO_CB_T(SSL *s, int where, int ret, char *arg);
03361
03362 void R_CDECL SSL_CTX_set_alert_info_cb(SSL_CTX *ctx, SSL_ALERT_INFO_CB_T *cb,
03363 char *arg);
03364 SSL_ALERT_INFO_CB_T * R_CDECL SSL_CTX_get_alert_info_cb(SSL_CTX *ctx);
03365 char * R_CDECL SSL_CTX_get_alert_info_cb_arg(SSL_CTX *ctx);
03366
03367 SSL_ALERT_INFO_CB_T * R_CDECL SSL_get_alert_info_cb(SSL *ssl);
03368 void R_CDECL SSL_set_alert_info_cb(SSL *ssl,SSL_ALERT_INFO_CB_T *cb, char *arg);
03369 char * R_CDECL SSL_get_alert_info_cb_arg(SSL *ssl);
03370 /* end group DIAGNOSTIC_CALLBACK_FUNCS */
03395 typedef int R_CDECL SSL_VERIFY_CB_T(int ok, SSLCERT_STORE_CTX *store_ctx);
03396
03397 void R_CDECL SSL_CTX_set_verify_cb(SSL_CTX *ctx, SSL_VERIFY_CB_T *cb);
03398 SSL_VERIFY_CB_T * R_CDECL SSL_CTX_get_verify_cb(SSL_CTX *ctx);
03399 void R_CDECL SSL_set_verify_cb(SSL *s, SSL_VERIFY_CB_T *cb);
03400 SSL_VERIFY_CB_T * R_CDECL SSL_get_verify_cb(SSL *ssl);
03410 int R_CDECL SSL_feature_set(long feature);
03411 int R_CDECL SSL_feature_clear(long feature);
03412 int R_CDECL SSL_feature_test(long feature);
03413 int R_CDECL SSL_feature_reset(void);
03422 void R_CDECL SSL_set_info_cb(SSL *ssl, SSL_INFO_CB_T *info_cb);
03423 SSL_INFO_CB_T * R_CDECL SSL_get_info_cb(SSL *ssl);
03433 SSL_METHOD * R_CDECL SSL_get_ssl_method(SSL *ssl);
03442 void R_CDECL SSL_set_shutdown(SSL *ssl,int mode);
03443 int R_CDECL SSL_get_shutdown(SSL *ssl);
03448 #if defined(HEADER_COMMON_BIO_H) || defined(DOXYGEN)
03449
03453 BIO * R_CDECL SSL_get_rbio(SSL *ssl);
03454 BIO * R_CDECL SSL_get_wbio(SSL *ssl);
03458 #endif /* (HEADER_COMMON_BIO_H) || (DOXYGEN) */
03459
03464 int R_CDECL SSL_version(SSL *ssl);
03473 SSL_SESSION * R_CDECL SSL_get_session(SSL *ssl);
03482 SSL_CTX * R_CDECL SSL_get_SSL_CTX(SSL *ssl);
03491 int R_CDECL SSL_state(SSL *ssl);
03500 int R_CDECL SSL_reuse(SSL *ssl);
03510 void R_CDECL SSL_set_verify_result(SSL *ssl, long verify);
03511 long R_CDECL SSL_get_verify_result(SSL *ssl);
03512 int R_CDECL SSL_get_verify_depth(SSL *ssl);
03513 void R_CDECL SSL_set_verify_depth(SSL *ssl, int depth);
03514 int R_CDECL SSL_get_verify_mode(SSL * ssl);
03515 void R_CDECL SSL_set_verify_mode(SSL *ssl, int mode);
03525 int R_CDECL SSL_want(SSL *ssl);
03531 #define SSL_CTX_add_extra_chain_cert(ctx,x509) \
03532 SSL_CTX_ctrl((ctx), SSL_CTRL_EXTRA_CHAIN_CERT, 0, (char *)(x509))
03533
03534 STACK * R_CDECL SSL_CTX_get_extra_certs(SSL_CTX *ctx);
03535 void R_CDECL SSL_CTX_set_extra_certs(SSL_CTX *ctx,STACK *certs);
03536
03537 int R_CDECL SSL_CTX_set_session_id_context(SSL_CTX *ctx,const unsigned char *sid_ctx,
03538 unsigned int sid_ctx_len);
03539 int R_CDECL SSL_set_session_id_context(SSL *ssl,const unsigned char *sid_ctx,
03540 unsigned int sid_ctx_len);
03541
03542 #define SSL_copy_session_id(a,b) SSL_copy_session((a),(b))
03543 #define BIO_ssl_copy_session_id(a,b) BIO_ssl_copy_session((a),(b))
03544
03545 #define SSL_session_reused(s) SSL_reuse(s)
03546
03547 /* @brief macro to aid migration from SSLeay to SSL-C */
03548 #define SSLeay_add_ssl_algorithms() SSL_library_evp_setup()
03549
03550 /* More backward compatibility */
03551
03552 #define SSL_get_cipher(s) \
03553 SSL_CIPHER_get_name(SSL_get_current_cipher(s))
03554 #define SSL_get_cipher_bits(s,np) \
03555 SSL_CIPHER_get_bits(SSL_get_current_cipher(s),np)
03556 #define SSL_get_cipher_version(s) \
03557 SSL_CIPHER_get_version(SSL_get_current_cipher(s))
03558 #define SSL_get_cipher_name(s) \
03559 SSL_CIPHER_get_name(SSL_get_current_cipher(s))
03560
03561 #define SSL_get_time(a,b) SSL_SESSION_get_time(a,b)
03562 #define SSL_set_time(a,b) SSL_SESSION_set_time((a),(b))
03563 #define SSL_get_timeout(a) SSL_SESSION_get_timeout(a)
03564 #define SSL_set_timeout(a,b) SSL_SESSION_set_timeout((a),(b))
03565
03566 /* The VMS linker has a 31 char name limit */
03567 #define SSL_CTX_set_cert_verify_callback(a,b,c) \
03568 SSL_CTX_set_cert_verify_cb((a),(b),(c))
03569
03570 /* macros for old names */
03571 #define SSL_get_verify_callback(s) SSL_get_verify_cb(s)
03572 #define SSL_CTX_get_verify_callback(x) SSL_CTX_get_verify_cb(x)
03573 #define SSL_set_info_callback(x,y) SSL_set_info_cb(x,y)
03574 #define SSL_get_info_callback(x) SSL_get_info_cb(x)
03575 #define SSL_CTX_set_info_callback(x,y) SSL_CTX_set_info_cb(x,y)
03576 #define SSL_CTX_get_info_callback(x) SSL_CTX_get_info_cb(x)
03577
03578
03579 #define SSL_set_app_data_callback(x,y,z) SSL_set_app_data_cb(x,y,z)
03580 #define SSL_get_app_data_callback(x) SSL_get_app_data_cb(x)
03581 #define SSL_get_app_data_callback_arg(x) SSL_get_app_data_cb_arg(x)
03582 #define SSL_CTX_set_app_data_callback(x,y,z) SSL_CTX_set_app_data_cb(x,y,z)
03583 #define SSL_CTX_set_application_data_callback(x,y,z) \
03584 SSL_CTX_set_app_data_cb(x,y,z)
03585 #define SSL_CTX_get_app_data_callback(x) SSL_CTX_get_app_data_cb(x)
03586 #define SSL_CTX_get_application_data_callback(x) SSL_CTX_get_app_data_cb(x)
03587 #define SSL_CTX_get_app_data_callback_arg(x) SSL_CTX_get_app_data_cb_arg(x)
03588 #define SSL_CTX_get_application_data_callback_arg(x) \
03589 SSL_CTX_get_app_data_cb_arg(x)
03590
03591 #define SSL_CTX_set_application_verify_cb SSL_CTX_set_app_verify_cb
03592 #define SSL_CTX_get_application_verify_cb SSL_CTX_get_app_verify_cb
03593 #define SSL_CTX_get_application_verify_cb_arg SSL_CTX_get_app_verify_cb_arg
03594
03595 #define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx)
03596 #define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m)
03597
03615 typedef void R_CDECL SSL_APP_DATA_CB_T(SSL *s, int where, char *arg);
03616
03617 void R_CDECL SSL_CTX_set_app_data_cb(SSL_CTX *ctx, SSL_APP_DATA_CB_T *cb, char *arg);
03618 SSL_APP_DATA_CB_T * R_CDECL SSL_CTX_get_app_data_cb(SSL_CTX *ctx);
03619 char * R_CDECL SSL_CTX_get_app_data_cb_arg(SSL_CTX *ctx);
03620
03621 void R_CDECL SSL_set_app_data_cb(SSL *ssl,SSL_APP_DATA_CB_T *cb, char *arg);
03622 SSL_APP_DATA_CB_T * R_CDECL SSL_get_app_data_cb(SSL *ssl);
03623 char * R_CDECL SSL_get_app_data_cb_arg(SSL *ssl);
03624
03625 /* end group DIAGNOSTIC_CALLBACK_FUNCS */
03630 #define SSL_CTX_set_ocsi_server_cb(ctx,cb) ((ctx)->ocsi_server_callback=(cb))
03631 #define SSL_CTX_get_ocsi_server_cb(ctx) ((ctx)->ocsi_server_callback)
03632 #define SSL_CTX_set_ocsi_server_cb_arg(ctx,arg) ((ctx)->ocsi_server_callback_arg=(arg))
03633 #define SSL_CTX_get_ocsi_server_cb_arg(ctx) ((ctx)->ocsi_server_callback_arg)
03634
03635 #endif /* !SSLC_SMALL_CODE */
03636
03637 #if (!defined(SSLC_SMALL_CODE) && !defined(NO_EX_DATA))
03638 /*
03639 * @defgroup SSL_EXTRA_DATA Extra Data
03640 * This section details the methods for loading and managing extra data used
03641 * by the #SSL, #SSL_CTX or #SSL_SESSION structures.
03642 *
03643 * @{
03644 */
03645 /*
03646 * @}
03647 */
03648
03649 /* compatibility */
03650 #define SSL_set_app_data(s,arg) (SSL_set_ex_data(s,0,(char *)arg))
03651 #define SSL_get_app_data(s) (SSL_get_ex_data(s,0))
03652 #define SSL_SESSION_set_app_data(s,a) (SSL_SESSION_set_ex_data(s,0,(char *)a))
03653 #define SSL_SESSION_get_app_data(s) (SSL_SESSION_get_ex_data(s,0))
03654 #define SSL_CTX_get_app_data(ctx) (SSL_CTX_get_ex_data(ctx,0))
03655 #define SSL_CTX_set_app_data(ctx,arg) (SSL_CTX_set_ex_data(ctx,0,(char *)arg))
03656
03657
03681 typedef int R_CDECL SSL_EX_DATA_NEW_CB_T(char *obj, char *item,
03682 char *ad, int index, long argl, char *argp);
03683
03697 typedef void R_CDECL SSL_EX_DATA_FREE_CB_T(char *obj, char *item,
03698 char *ad, int index, long argl, char *argp);
03699
03715 typedef int R_CDECL SSL_EX_DATA_DUP_CB_T(char *obj_to, char *obj_from, char **item,
03716 int index, long argl, char *argp);
03725 int R_CDECL SSL_set_ex_data(SSL *ssl, int idx, char *data);
03726 char * R_CDECL SSL_get_ex_data(SSL *ssl, int idx);
03727 int R_CDECL SSL_get_ex_new_index(long argl, char *argp, SSL_EX_DATA_NEW_CB_T *new_func,
03728 SSL_EX_DATA_DUP_CB_T *dup_func, SSL_EX_DATA_FREE_CB_T *free_func);
03729 int R_CDECL SSL_get_ex_data_SSLCERT_STORE_CTX_idx(void);
03734 /* Compatibility macro for old name */
03735 #define SSL_get_ex_data_X509_STORE_CTX_idx SSL_get_ex_data_SSLCERT_STORE_CTX_idx
03736
03741 int R_CDECL SSL_SESSION_set_ex_data(SSL_SESSION *sess, int idx, char *data);
03742 char * R_CDECL SSL_SESSION_get_ex_data(SSL_SESSION *sess, int idx);
03743 int R_CDECL SSL_SESSION_get_ex_new_index(long argl, char *argp,
03744 SSL_EX_DATA_NEW_CB_T *new_func, SSL_EX_DATA_DUP_CB_T *dup_func,
03745 SSL_EX_DATA_FREE_CB_T *free_func);
03754 int R_CDECL SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx,char *data);
03755 char * R_CDECL SSL_CTX_get_ex_data(SSL_CTX *ssl, int idx);
03756 int R_CDECL SSL_CTX_get_ex_new_index(long argl, char *argp,
03757 SSL_EX_DATA_NEW_CB_T *new_func, SSL_EX_DATA_DUP_CB_T *dup_func,
03758 SSL_EX_DATA_FREE_CB_T *free_func);
03763 #endif /* (!defined(SSLC_SMALL_CODE) && !defined(NO_EX_DATA)) */
03764
03765 #ifdef SSLC_SMALL_CODE
03766
03787 typedef int R_CDECL SSL_SESSION_CACHE_CB_T(SSL_CTX *ctx, int cmd, SSL_SESSION **sess,
03788 void *arg);
03789
03794 int R_CDECL SSL_CTX_set_session_cache_cb(SSL_CTX *ctx, SSL_SESSION_CACHE_CB_T *cb);
03795 SSL_SESSION_CACHE_CB_T * R_CDECL SSL_CTX_get_session_cache_cb(SSL_CTX *ctx);
03796 int R_CDECL SSL_CTX_set_session_cache_cb_arg(SSL_CTX *ctx,void *cb_arg);
03797 void * R_CDECL SSL_CTX_get_session_cache_cb_arg(SSL_CTX *ctx);
03798 int R_CDECL SSL_CTX_simple_session_cb(SSL_CTX *ctx,int cmd,SSL_SESSION **sess_ptr,
03799 void *arg);
03800 int R_CDECL SSL_CTX_simple_session_init(SSL_SIMPLE_SESSION_CACHE **cache_ptr);
03801 int R_CDECL SSL_CTX_simple_session_final(SSL_SIMPLE_SESSION_CACHE **cache_ptr);
03802
03807 /* SSLC small code macro replacements - for use within library */
03808 /* SSL feature tests */
03809 extern int SSLC_ssl_features;
03836 #define SSL_feature_set(feature) ((SSLC_ssl_features|=feature),1)
03837
03856 #define SSL_feature_clear(feature) ((SSLC_ssl_features&=(~feature)),1)
03857
03871 #define SSL_feature_test(feature) (SSLC_ssl_features&=feature)
03872
03887 #define SSL_feature_reset() ((SSLC_ssl_features=0),1)
03888
03911 #define SSL_set_info_cb(ssl, cb) ((ssl)->info_cb = (cb))
03912
03929 #define SSL_get_info_cb(ssl) ((ssl)->info_cb)
03930
03955 #define SSL_get_verify_mode(ssl) ((ssl)->verify_mode)
03956
03969 #define SSL_set_verify_mode(ssl, mode) ((ssl)->verify_mode = (mode))
03970
03986 #define SSL_get_verify_depth(ssl) ((ssl)->verify_depth)
03987
04001 #define SSL_set_verify_depth(ssl, depth) ((ssl)->verify_depth = (depth))
04002
04023 #define SSL_set_verify_result(ssl, verify) ((ssl)->verify_result = (verify))
04024
04041 #define SSL_get_verify_result(ssl) ((ssl)->verify_result)
04042
04067 #define SSL_get_ssl_method(ssl) ((ssl)->method)
04068
04107 #define SSL_set_shutdown(ssl, mode) ((ssl)->shutdown = (mode))
04108
04144 #define SSL_get_shutdown(ssl) ((ssl)->shutdown)
04145
04150 #if defined(HEADER_COMMON_BIO_H) || defined(DOXYGEN)
04151
04172 BIO * R_CDECL SSL_get_rbio(SSL *ssl);
04173 /* can't use macro because doing so will break the build of eut unittests required
04174 * by FIPS140 builds
04175 * #define SSL_get_rbio(ssl) ((ssl)->rbio)
04176 */
04177
04193 BIO * R_CDECL SSL_get_wbio(SSL *ssl);
04194 /* can't use macro because doing so will break the build of eut unittests required
04195 * by FIPS140 builds
04196 * #define SSL_get_wbio(ssl) ((ssl)->wbio)
04197 */
04198
04199 /* end group SSL_IO_OPERATION_FUNCS */
04200
04204 #endif /* (HEADER_COMMON_BIO_H) || (DOXYGEN) */
04205
04206
04233 int R_CDECL SSL_version(SSL *ssl);
04234 /* can't use macro because doing so will break the build of eut unittests required
04235 * by FIPS140 builds
04236 *
04237 * #define SSL_version(ssl) ((ssl)->version)
04238 */
04264 #define SSL_get_session(ssl) ((ssl)->session)
04265
04288 #define SSL_get_SSL_CTX(ssl) ((ssl)->ctx)
04289
04315 #define SSL_state(ssl) ((ssl)->state)
04316
04343 #define SSL_reuse(ssl) ((ssl)->hit)
04344
04369 #define SSL_want(ssl) ((ssl)->rwstate)
04370
04375 #endif /* SSLC_SMALL_CODE */
04376
04377 /* BEGIN ERROR CODES */
04378 /* Error codes for the SSL functions. */
04379
04380 /* Function codes. */
04381 #define SSL_F_CLIENT_CERTIFICATE 100
04382 #define SSL_F_CLIENT_HELLO 101
04383 #define SSL_F_CLIENT_MASTER_KEY 102
04384 #define SSL_F_D2I_SSL_SESSION 103
04385 #define SSL_F_DO_SSL3_WRITE 104
04386 #define SSL_F_GET_CLIENT_FINISHED 105
04387 #define SSL_F_GET_CLIENT_HELLO 106
04388 #define SSL_F_GET_CLIENT_MASTER_KEY 107
04389 #define SSL_F_GET_SERVER_FINISHED 108
04390 #define SSL_F_GET_SERVER_HELLO 109
04391 #define SSL_F_GET_SERVER_VERIFY 110
04392 #define SSL_F_I2D_SSL_SESSION 111
04393 #define SSL_F_READ_N 112
04394 #define SSL_F_REQUEST_CERTIFICATE 113
04395 #define SSL_F_SERVER_HELLO 114
04396 #define SSL_F_SSL23_ACCEPT 115
04397 #define SSL_F_SSL23_CLIENT_HELLO 116
04398 #define SSL_F_SSL23_CONNECT 117
04399 #define SSL_F_SSL23_GET_CLIENT_HELLO 118
04400 #define SSL_F_SSL23_GET_SERVER_HELLO 119
04401 #define SSL_F_SSL23_READ 120
04402 #define SSL_F_SSL23_WRITE 121
04403 #define SSL_F_SSL2_ACCEPT 122
04404 #define SSL_F_SSL2_ALLOC_READ_BUF 218
04405 #define SSL_F_SSL2_CONNECT 123
04406 #define SSL_F_SSL2_ENC_INIT 124
04407 #define SSL_F_SSL2_READ 125
04408 #define SSL_F_SSL2_SETUP_BUFFERS 219
04409 #define SSL_F_SSL2_SET_CERTIFICATE 126
04410 #define SSL_F_SSL2_WRITE 127
04411 #define SSL_F_SSL3_ACCEPT 128
04412 #define SSL_F_SSL3_CHANGE_CIPHER_STATE 129
04413 #define SSL_F_SSL3_CHECK_CERT_AND_ALGORITHM 130
04414 #define SSL_F_SSL3_CLIENT_HELLO 131
04415 #define SSL_F_SSL3_CONNECT 132
04416 #define SSL_F_SSL3_CTRL 226
04417 #define SSL_F_SSL3_CTX_CTRL 217
04418 #define SSL_F_SSL3_ENC 134
04419 #define SSL_F_SSL3_GET_CERTIFICATE_REQUEST 135
04420 #define SSL_F_SSL3_GET_CERT_VERIFY 136
04421 #define SSL_F_SSL3_GET_CLIENT_CERTIFICATE 137
04422 #define SSL_F_SSL3_GET_CLIENT_HELLO 138
04423 #define SSL_F_SSL3_GET_CLIENT_KEY_EXCHANGE 139
04424 #define SSL_F_SSL3_GET_FINISHED 140
04425 #define SSL_F_SSL3_GET_KEY_EXCHANGE 141
04426 #define SSL_F_SSL3_GET_MESSAGE 142
04427 #define SSL_F_SSL3_GET_RECORD 143
04428 #define SSL_F_SSL3_GET_SERVER_CERTIFICATE 144
04429 #define SSL_F_SSL3_GET_SERVER_DONE 145
04430 #define SSL_F_SSL3_GET_SERVER_HELLO 146
04431 #define SSL_F_SSL3_NEW 147
04432 #define SSL_F_SSL3_OUTPUT_CERT_CHAIN 148
04433 #define SSL_F_SSL3_READ_BYTES 149
04434 #define SSL_F_SSL3_READ_N 150
04435 #define SSL_F_SSL3_SEND_CERTIFICATE_REQUEST 151
04436 #define SSL_F_SSL3_SEND_CLIENT_CERTIFICATE 152
04437 #define SSL_F_SSL3_SEND_CLIENT_KEY_EXCHANGE 153
04438 #define SSL_F_SSL3_SEND_CLIENT_VERIFY 154
04439 #define SSL_F_SSL3_SEND_SERVER_CERTIFICATE 155
04440 #define SSL_F_SSL3_SEND_SERVER_KEY_EXCHANGE 156
04441 #define SSL_F_SSL3_SETUP_BUFFERS 157
04442 #define SSL_F_SSL3_SETUP_KEY_BLOCK 158
04443 #define SSL_F_SSL3_WRITE_BYTES 159
04444 #define SSL_F_SSL3_WRITE_PENDING 160
04445 #define SSL_F_SSL_BAD_METHOD 161
04446 #define SSL_F_SSL_BYTES_TO_CIPHER_LIST 162
04447 #define SSL_F_SSL_CERT_NEW 163
04448 #define SSL_F_SSL_CHECK_PRIVATE_KEY 164
04449 #define SSL_F_SSL_CIPHER_DESCRIPTION 216
04450 #define SSL_F_SSL_CLEAR 165
04451 #define SSL_F_SSL_CREATE_CIPHER_LIST 166
04452 #define SSL_F_SSL_CTX_ADD_CERTIFICATE_TO_STORE 234
04453 #define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY 167
04454 #define SSL_F_SSL_CTX_LOAD_VERIFY_LOCATIONS 220
04455 #define SSL_F_SSL_CTX_NEW 168
04456 #define SSL_F_SSL_CTX_SET_DEFAULT_VERIFY_PATHS 221
04457 #define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT 222
04458 #define SSL_F_SSL_CTX_USE_CERTIFICATE 171
04459 #define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1 172
04460 #define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE 173
04461 #define SSL_F_SSL_CTX_USE_PRIVATEKEY 174
04462 #define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1 175
04463 #define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE 176
04464 #define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY 177
04465 #define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1 178
04466 #define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE 179
04467 #define SSL_F_SSL_DH_NEW 227
04468 #define SSL_F_SSL_DH_SET_METH_DATA 231
04469 #define SSL_F_SSL_DO_HANDSHAKE 180
04470 #define SSL_F_SSL_DSA_NEW 228
04471 #define SSL_F_SSL_DSA_SET_METH_DATA 232
04472 #define SSL_F_SSL_GET_NEW_SESSION 181
04473 #define SSL_F_SSL_GET_SERVER_SEND_CERT 182
04474 #define SSL_F_SSL_GET_SIGN_PKEY 183
04475 #define SSL_F_SSL_INIT_WBIO_BUFFER 184
04476 #define SSL_F_SSL_LOAD_CLIENT_CA_FILE 185
04477 #define SSL_F_SSL_NEW 186
04478 #define SSL_F_SSL_NFAST_SETUP_PKEY 225
04479 #define SSL_F_SSL_RSA_NEW 230
04480 #define SSL_F_SSL_RSA_PRIVATE_DECRYPT 187
04481 #define SSL_F_SSL_RSA_PUBLIC_ENCRYPT 188
04482 #define SSL_F_SSL_RSA_SET_METH_DATA 233
04483 #define SSL_F_SSL_SESSION_NEW 189
04484 #define SSL_F_SSL_SESSION_PRINT_FP 190
04485 #define SSL_F_SSL_SET_CERT 191
04486 #define SSL_F_SSL_SET_FD 193
04487 #define SSL_F_SSL_SET_PKEY 194
04488 #define SSL_F_SSL_SET_RFD 195
04489 #define SSL_F_SSL_SET_SESSION 196
04490 #define SSL_F_SSL_SET_SESSION_ID_CONTEXT 224
04491 #define SSL_F_SSL_SET_WFD 197
04492 #define SSL_F_SSL_UNDEFINED_FUNCTION 198
04493 #define SSL_F_SSL_USE_CERTIFICATE 199
04494 #define SSL_F_SSL_USE_CERTIFICATE_ASN1 200
04495 #define SSL_F_SSL_USE_CERTIFICATE_FILE 201
04496 #define SSL_F_SSL_USE_PRIVATEKEY 202
04497 #define SSL_F_SSL_USE_PRIVATEKEY_ASN1 203
04498 #define SSL_F_SSL_USE_PRIVATEKEY_FILE 204
04499 #define SSL_F_SSL_USE_RSAPRIVATEKEY 205
04500 #define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1 206
04501 #define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE 207
04502 #define SSL_F_SSL_VERIFY_CERT_CHAIN 208
04503 #define SSL_F_SSL_WRITE 209
04504 #define SSL_F_TLS1_CHANGE_CIPHER_STATE 210
04505 #define SSL_F_TLS1_SETUP_KEY_BLOCK 212
04506 #define SSL_F_WRITE_PENDING 213
04507
04508 /* Reason codes. */
04509 #define SSL_R_APP_DATA_IN_HANDSHAKE 100
04510 #define SSL_R_BAD_ALERT_RECORD 101
04511 #define SSL_R_BAD_AUTHENTICATION_TYPE 102
04512 #define SSL_R_BAD_CHANGE_CIPHER_SPEC 103
04513 #define SSL_R_BAD_CHECKSUM 104
04514 #define SSL_R_BAD_CLIENT_REQUEST 105
04515 #define SSL_R_BAD_DATA_RETURNED_BY_CALLBACK 106
04516 #define SSL_R_BAD_DECOMPRESSION 107
04517 #define SSL_R_BAD_DH_G_LENGTH 108
04518 #define SSL_R_BAD_DH_PUB_KEY_LENGTH 109
04519 #define SSL_R_BAD_DH_P_LENGTH 110
04520 #define SSL_R_BAD_DIGEST_LENGTH 111
04521 #define SSL_R_BAD_DSA_SIGNATURE 112
04522 #define SSL_R_BAD_LENGTH 1103
04523 #define SSL_R_BAD_MAC_DECODE 113
04524 #define SSL_R_BAD_MESSAGE_TYPE 114
04525 #define SSL_R_BAD_PACKET_LENGTH 115
04526 #define SSL_R_BAD_RESPONSE_ARGUMENT 117
04527 #define SSL_R_BAD_RSA_DECRYPT 118
04528 #define SSL_R_BAD_RSA_ENCRYPT 119
04529 #define SSL_R_BAD_RSA_E_LENGTH 120
04530 #define SSL_R_BAD_RSA_E_VALUE 1200
04531 #define SSL_R_BAD_RSA_MODULUS_LENGTH 121
04532 #define SSL_R_BAD_RSA_SIGNATURE 122
04533 #define SSL_R_BAD_SIGNATURE 123
04534 #define SSL_R_BAD_SSL_FILETYPE 124
04535 #define SSL_R_BAD_SSL_SESSION_ID_LENGTH 125
04536 #define SSL_R_BAD_STATE 126
04537 #define SSL_R_BAD_WRITE_RETRY 127
04538 #define SSL_R_BIO_NOT_SET 128
04539 #define SSL_R_BLOCK_CIPHER_PAD_IS_WRONG 129
04540 #define SSL_R_CA_DN_LENGTH_MISMATCH 131
04541 #define SSL_R_CA_DN_TOO_LONG 132
04542 #define SSL_R_CCS_RECEIVED_EARLY 133
04543 #define SSL_R_CERTIFICATE_VERIFY_FAILED 134
04544 #define SSL_R_CERT_LENGTH_MISMATCH 135
04545 #define SSL_R_CHALLENGE_IS_DIFFERENT 136
04546 #define SSL_R_CIPHER_CODE_WRONG_LENGTH 137
04547 #define SSL_R_CIPHER_OR_HASH_UNAVAILABLE 138
04548 #define SSL_R_CIPHER_TABLE_SRC_ERROR 139
04549 #define SSL_R_COMPRESSED_LENGTH_TOO_LONG 140
04550 #define SSL_R_COMPRESSION_FAILURE 141
04551 #define SSL_R_COMPRESSION_LIBRARY_ERROR 142
04552 #define SSL_R_CONNECTION_ID_IS_DIFFERENT 143
04553 #define SSL_R_CONNECTION_TYPE_NOT_SET 144
04554 #define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED 145
04555 #define SSL_R_DATA_LENGTH_TOO_LONG 146
04556 #define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG 148
04557 #define SSL_R_DIGEST_CHECK_FAILED 149
04558 #define SSL_R_ENCRYPTED_LENGTH_TOO_LONG 150
04559 #define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST 151
04560 #define SSL_R_EXCESSIVE_MESSAGE_SIZE 152
04561 #define SSL_R_EXTRA_DATA_IN_MESSAGE 153
04562 #define SSL_R_GOT_A_FIN_BEFORE_A_CCS 154
04563 #define SSL_R_HTTPS_PROXY_REQUEST 155
04564 #define SSL_R_HTTP_REQUEST 156
04565 #define SSL_R_INTERNAL_ERROR 157
04566 #define SSL_R_INVALID_CHALLENGE_LENGTH 158
04567 #define SSL_R_INVALID_CONNECTION_ID_LENGTH 1110
04568 #define SSL_R_INVALID_KEY_ARG_LENGTH 1111
04569 #define SSL_R_INVALID_MASTER_KEY_LENGTH 1112
04570 #define SSL_R_LENGTH_MISMATCH 159
04571 #define SSL_R_LENGTH_TOO_SHORT 160
04572 #define SSL_R_LIBRARY_HAS_NO_CIPHERS 161
04573 #define SSL_R_MISSING_DH_DSA_CERT 162
04574 #define SSL_R_MISSING_DH_KEY 163
04575 #define SSL_R_MISSING_DH_RSA_CERT 164
04576 #define SSL_R_MISSING_DSA_SIGNING_CERT 165
04577 #define SSL_R_MISSING_EXPORT_TMP_DH_KEY 166
04578 #define SSL_R_MISSING_EXPORT_TMP_RSA_KEY 167
04579 #define SSL_R_MISSING_RSA_CERTIFICATE 168
04580 #define SSL_R_MISSING_RSA_ENCRYPTING_CERT 169
04581 #define SSL_R_MISSING_RSA_SIGNING_CERT 170
04582 #define SSL_R_MISSING_TMP_DH_KEY 171
04583 #define SSL_R_MISSING_TMP_RSA_KEY 172
04584 #define SSL_R_MISSING_TMP_RSA_PKEY 173
04585 #define SSL_R_MISSING_VERIFY_MESSAGE 174
04586 #define SSL_R_NON_SSLV2_INITIAL_PACKET 175
04587 #define SSL_R_NO_CERTIFICATES_RETURNED 176
04588 #define SSL_R_NO_CERTIFICATE_ASSIGNED 177
04589 #define SSL_R_NO_CERTIFICATE_RETURNED 178
04590 #define SSL_R_NO_CERTIFICATE_SET 179
04591 #define SSL_R_NO_CERTIFICATE_SPECIFIED 180
04592 #define SSL_R_NO_CIPHERS_AVAILABLE 181
04593 #define SSL_R_NO_CIPHERS_LOADED 1108
04594 #define SSL_R_NO_CIPHERS_PASSED 182
04595 #define SSL_R_NO_CIPHERS_SPECIFIED 183
04596 #define SSL_R_NO_CIPHER_LIST 184
04597 #define SSL_R_NO_CIPHER_MATCH 185
04598 #define SSL_R_NO_CLIENT_CERT_RECEIVED 186
04599 #define SSL_R_NO_COMPRESSION_SPECIFIED 187
04600 #define SSL_R_NO_METHOD_SPECIFIED 188
04601 #define SSL_R_NO_PRIVATEKEY 189
04602 #define SSL_R_NO_PRIVATE_KEY_ASSIGNED 190
04603 #define SSL_R_NO_PROTOCOLS_AVAILABLE 191
04604 #define SSL_R_NO_PUBLICKEY 192
04605 #define SSL_R_NO_SHARED_CIPHER 193
04606 #define SSL_R_NO_SSL_MESSAGE_DIGEST 1107
04607 #define SSL_R_NO_VERIFY_CALLBACK 194
04608 #define SSL_R_NULL_SSL_CTX 195
04609 #define SSL_R_NULL_SSL_METHOD_PASSED 196
04610 #define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED 197
04611 #define SSL_R_PACKET_LENGTH_TOO_LONG 198
04612 #define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE 199
04613 #define SSL_R_PEER_ERROR 200
04614 #define SSL_R_PEER_ERROR_CERTIFICATE 201
04615 #define SSL_R_PEER_ERROR_NO_CERTIFICATE 202
04616 #define SSL_R_PEER_ERROR_NO_CIPHER 203
04617 #define SSL_R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE 204
04618 #define SSL_R_PRE_MAC_LENGTH_TOO_LONG 205
04619 #define SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS 206
04620 #define SSL_R_PROTOCOL_IS_SHUTDOWN 207
04621 #define SSL_R_PUBLIC_KEY_ENCRYPT_ERROR 208
04622 #define SSL_R_PUBLIC_KEY_IS_NOT_RSA 209
04623 #define SSL_R_PUBLIC_KEY_NOT_RSA 210
04624 #define SSL_R_READ_BIO_NOT_SET 211
04625 #define SSL_R_READ_WRONG_PACKET_TYPE 212
04626 #define SSL_R_RECORD_LENGTH_MISMATCH 213
04627 #define SSL_R_RECORD_TOO_LARGE 214
04628 #define SSL_R_REQUIRED_CIPHER_MISSING 215
04629 #define SSL_R_REUSE_CERT_LENGTH_NOT_ZERO 216
04630 #define SSL_R_REUSE_CERT_TYPE_NOT_ZERO 217
04631 #define SSL_R_REUSE_CIPHER_LIST_NOT_ZERO 218
04632 #define SSL_R_R_RAND_FAILURE 1116
04633 #define SSL_R_SHORT_READ 219
04634 #define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE 220
04635 #define SSL_R_SSL23_DOING_SESSION_ID_REUSE 221
04636 #define SSL_R_SSL3_SESSION_ID_TOO_LONG 1105
04637 #define SSL_R_SSL3_SESSION_ID_TOO_SHORT 222
04638 #define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE 1042
04639 #define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC 1020
04640 #define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED 1045
04641 #define SSL_R_SSLV3_ALERT_CERTIFICATE_REVOKED 1044
04642 #define SSL_R_SSLV3_ALERT_CERTIFICATE_UNKNOWN 1046
04643 #define SSL_R_SSLV3_ALERT_DECOMPRESSION_FAILURE 1030
04644 #define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE 1040
04645 #define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER 1047
04646 #define SSL_R_SSLV3_ALERT_NO_CERTIFICATE 1041
04647 #define SSL_R_SSLV3_ALERT_PEER_ERROR_CERTIFICATE 223
04648 #define SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CERTIFICATE 224
04649 #define SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CIPHER 225
04650 #define SSL_R_SSLV3_ALERT_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE 226
04651 #define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE 1010
04652 #define SSL_R_SSLV3_ALERT_UNKNOWN_REMOTE_ERROR_TYPE 227
04653 #define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE 1043
04654 #define SSL_R_SSL_CERT_IS_DEFAULT 1109
04655 #define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION 228
04656 #define SSL_R_SSL_HANDSHAKE_FAILURE 229
04657 #define SSL_R_SSL_MODE_NOT_SET 1101
04658 #define SSL_R_SSL_SESSION_ID_CONTEXT_TOO_LONG 1106
04659 #define SSL_R_SSL_SESSION_ID_IS_DIFFERENT 231
04660 #define SSL_R_TLSV1_ALERT_ACCESS_DENIED 1049
04661 #define SSL_R_TLSV1_ALERT_DECODE_ERROR 1050
04662 #define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED 1021
04663 #define SSL_R_TLSV1_ALERT_DECRYPT_ERROR 1051
04664 #define SSL_R_TLSV1_ALERT_EXPORT_RESTRICION 1060
04665 #define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY 1071
04666 #define SSL_R_TLSV1_ALERT_INTERNAL_ERROR 1080
04667 #define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION 1100
04668 #define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION 1070
04669 #define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW 1022
04670 #define SSL_R_TLSV1_ALERT_UNKNOWN_CA 1048
04671 #define SSL_R_TLSV1_ALERT_USER_CANCLED 1090
04672 #define SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER 232
04673 #define SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST 233
04674 #define SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG 234
04675 #define SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER 235
04676 #define SSL_R_UNABLE_TO_DECODE_DH_CERTS 236
04677 #define SSL_R_UNABLE_TO_EXTRACT_PUBLIC_KEY 237
04678 #define SSL_R_UNABLE_TO_FIND_DH_PARAMETERS 238
04679 #define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS 239
04680 #define SSL_R_UNABLE_TO_FIND_SSL_METHOD 240
04681 #define SSL_R_UNABLE_TO_LOAD_DSA_SHA1_ROUTINES 1102
04682 #define SSL_R_UNABLE_TO_LOAD_SSL2_MD5_ROUTINES 241
04683 #define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES 242
04684 #define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES 243
04685 #define SSL_R_UNEXPECTED_MESSAGE 244
04686 #define SSL_R_UNEXPECTED_RECORD 245
04687 #define SSL_R_UNKNOWN_ALERT_TYPE 246
04688 #define SSL_R_UNKNOWN_CERTIFICATE_TYPE 247
04689 #define SSL_R_UNKNOWN_CIPHER_RETURNED 248
04690 #define SSL_R_UNKNOWN_CIPHER_TYPE 249
04691 #define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE 250
04692 #define SSL_R_UNKNOWN_PKEY_TYPE 251
04693 #define SSL_R_UNKNOWN_PROTOCOL 252
04694 #define SSL_R_UNKNOWN_REMOTE_ERROR_TYPE 253
04695 #define SSL_R_UNKNOWN_SSL_VERSION 254
04696 #define SSL_R_UNKNOWN_STATE 255
04697 #define SSL_R_UNSUPPORTED_CIPHER 256
04698 #define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM 257
04699 #define SSL_R_UNSUPPORTED_PROTOCOL 258
04700 #define SSL_R_UNSUPPORTED_SSL_VERSION 259
04701 #define SSL_R_WRITE_BIO_NOT_SET 260
04702 #define SSL_R_WRONG_CIPHER_RETURNED 261
04703 #define SSL_R_WRONG_MESSAGE_TYPE 262
04704 #define SSL_R_WRONG_SIGNATURE_LENGTH 264
04705 #define SSL_R_WRONG_SIGNATURE_SIZE 265
04706 #define SSL_R_WRONG_SSL_VERSION 266
04707 #define SSL_R_WRONG_VERSION_NUMBER 267
04708 #define SSL_R_X509_LIB 268
04709 #define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS 269
04710 #define SSL_R_INVALID_PUBLIC_KEY_FIELD_SIZE 270
04711 #define SSL_R_INVALID_BUFFER_SIZE 1117
04712 #define SSL_R_HARDWARE_FAILURE 1118
04713 #define SSL_R_ERROR_PARSING_FILE_PARAM 1119
04714 #define SSL_R_DUPLICATE_FIELDS_IN_FILE_PARAM 1120
04715
04716 #ifdef __cplusplus
04717 }
04718 #endif
04719 #endif
04720