RSA BSAFE Micro Edition Suite

Streamlined security for mobile and embedded devices

Search  Print

ssl.h

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

Copyright (c) 1999-2005 RSA Security Inc. All rights reserved. 072-001001-2100-001-000 - 2.1