RSA BSAFE SSL-C

Security protocol components for C

Search

ssl.h

Go to the documentation of this file.
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 

Copyright (c) 1999-2004 RSA Security Inc. All rights reserved. 050-001001-2600-000-000 - 2.6