Generate errors when public/private key check is done.
[oweals/openssl.git] / ssl / ssl.h
index cf8f9651b2b0f63ecffa60f8a92ff63bb3d1d5f5..e6a1327ce39611ac32bb8a2b9ba8a6b076b49207 100644 (file)
--- a/ssl/ssl.h
+++ b/ssl/ssl.h
@@ -1,3 +1,15 @@
+#define SSL_CTX_sess_set_new_cb(ctx,cb)        ((ctx)->new_session_cb=(cb))
+#define SSL_CTX_sess_get_new_cb(ctx)   ((ctx)->new_session_cb)
+#define SSL_CTX_sess_set_remove_cb(ctx,cb)     ((ctx)->remove_session_cb=(cb))
+#define SSL_CTX_sess_get_remove_cb(ctx)        ((ctx)->remove_session_cb)
+#define SSL_CTX_sess_set_get_cb(ctx,cb)        ((ctx)->get_session_cb=(cb))
+#define SSL_CTX_sess_get_get_cb(ctx)   ((ctx)->get_session_cb)
+#define SSL_CTX_set_info_callback(ctx,cb)      ((ctx)->info_callback=(cb))
+#define SSL_CTX_get_info_callback(ctx)         ((ctx)->info_callback)
+
+#define SSL_CTX_set_client_cert_cb(ctx,cb)     ((ctx)->client_cert_cb=(cb))
+#define SSL_CTX_get_client_cert_cb(ctx)                ((ctx)->client_cert_cb)
+
 /* ssl/ssl.h */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
@@ -124,6 +136,7 @@ extern "C" {
 #define SSL_TXT_EXPORT         "EXPORT"
 #define SSL_TXT_SSLV2          "SSLv2"
 #define SSL_TXT_SSLV3          "SSLv3"
+#define SSL_TXT_TLSV1          "TLSv1"
 #define SSL_TXT_ALL            "ALL"
 
 /* 'DEFAULT' at the start of the cipher list insert the following string
@@ -164,37 +177,37 @@ typedef struct ssl_cipher_st
        unsigned long mask;             /* used for matching */
        } SSL_CIPHER;
 
+typedef struct ssl_st SSL;
+typedef struct ssl_ctx_st SSL_CTX;
+
 /* Used to hold functions for SSLv2 or SSLv3/TLSv1 functions */
 typedef struct ssl_method_st
        {
        int version;
-       int (*ssl_new)();
-       void (*ssl_clear)();
-       void (*ssl_free)();
-       int (*ssl_accept)();
-       int (*ssl_connect)();
-       int (*ssl_read)();
-       int (*ssl_peek)();
-       int (*ssl_write)();
-       int (*ssl_shutdown)();
-       int (*ssl_renegotiate)();
-       long (*ssl_ctrl)();
-       long (*ssl_ctx_ctrl)();
-       SSL_CIPHER *(*get_cipher_by_char)();
-       int (*put_cipher_by_char)();
-       int (*ssl_pending)();
-       int (*num_ciphers)();
-       SSL_CIPHER *(*get_cipher)();
-       struct ssl_method_st *(*get_ssl_method)();
-       long (*get_timeout)();
+       int (*ssl_new)(SSL *s);
+       void (*ssl_clear)(SSL *s);
+       void (*ssl_free)(SSL *s);
+       int (*ssl_accept)(SSL *s);
+       int (*ssl_connect)(SSL *s);
+       int (*ssl_read)(SSL *s,char *buf,int len);
+       int (*ssl_peek)(SSL *s,char *buf,int len);
+       int (*ssl_write)(SSL *s,const char *buf,int len);
+       int (*ssl_shutdown)(SSL *s);
+       int (*ssl_renegotiate)(SSL *s);
+       int (*ssl_renegotiate_check)(SSL *s);
+       long (*ssl_ctrl)(SSL *s,int cmd,long larg,char *parg);
+       long (*ssl_ctx_ctrl)(SSL_CTX *ctx,int cmd,long larg,char *parg);
+       SSL_CIPHER *(*get_cipher_by_char)(const unsigned char *ptr);
+       int (*put_cipher_by_char)(const SSL_CIPHER *cipher,unsigned char *ptr);
+       int (*ssl_pending)(SSL *s);
+       int (*num_ciphers)(void);
+       SSL_CIPHER *(*get_cipher)(unsigned ncipher);
+       struct ssl_method_st *(*get_ssl_method)(int version);
+       long (*get_timeout)(void);
        struct ssl3_enc_method *ssl3_enc; /* Extra SSLv3/TLS stuff */
+       int (*ssl_version)();
        } SSL_METHOD;
 
-typedef struct ssl_compression_st
-       {
-       char *stuff;
-       } SSL_COMPRESSION;
-
 /* Lets make this into an ASN.1 type structure as follows
  * SSL_SESSION_ID ::= SEQUENCE {
  *     version                 INTEGER,        -- structure version number
@@ -206,6 +219,7 @@ typedef struct ssl_compression_st
  *     Time [ 1 ] EXPLICIT     INTEGER,        -- optional Start Time
  *     Timeout [ 2 ] EXPLICIT  INTEGER,        -- optional Timeout ins seconds
  *     Peer [ 3 ] EXPLICIT     X509,           -- optional Peer Certificate
+ *     Compression [4] IMPLICIT ASN1_OBJECT    -- compression OID XXXXX
  *     }
  * Look in ssl/ssl_asn1.c for more details
  * I'm using EXPLICIT tags so I can read the damn things using asn1parse :-).
@@ -237,8 +251,7 @@ typedef struct ssl_session_st
        long timeout;
        long time;
 
-       SSL_COMPRESSION *read_compression;
-       SSL_COMPRESSION *write_compression;
+       int compress_meth;              /* Need to lookup the method */
 
        SSL_CIPHER *cipher;
        unsigned long cipher_id;        /* when ASN.1 loaded, this
@@ -262,35 +275,50 @@ typedef struct ssl_session_st
 #define SSL_OP_MSIE_SSLV2_RSA_PADDING                  0x00000040L
 #define SSL_OP_SSLEAY_080_CLIENT_DH_BUG                        0x00000080L
 #define SSL_OP_TLS_D5_BUG                              0x00000100L
-#define        SSL_OP_TLS_BLOCK_PADDING_BUG                    0x00000200L
+#define SSL_OP_TLS_BLOCK_PADDING_BUG                   0x00000200L
+#define SSL_OP_TLS_ROLLBACK_BUG                                0x00000400L
 
 /* If set, only use tmp_dh parameters once */
 #define SSL_OP_SINGLE_DH_USE                           0x00100000L
 /* Set to also use the tmp_rsa key when doing RSA operations. */
 #define SSL_OP_EPHEMERAL_RSA                           0x00200000L
 
+/* The next flag deliberatly changes the ciphertest, this is a check
+ * for the PKCS#1 attack */
+#define SSL_OP_PKCS1_CHECK_1                           0x08000000L
+#define SSL_OP_PKCS1_CHECK_2                           0x10000000L
 #define SSL_OP_NETSCAPE_CA_DN_BUG                      0x20000000L
 #define SSL_OP_NON_EXPORT_FIRST                        0x40000000L
 #define SSL_OP_NETSCAPE_DEMO_CIPHER_CHANGE_BUG         0x80000000L
 #define SSL_OP_ALL                                     0x000FFFFFL
 
-#define SSL_CTX_set_options(ctx,op)    ((ctx)->options|=(op))
-#define SSL_set_options(ssl,op)                ((ssl)->options|=(op))
+#define SSL_CTX_set_options(ctx,op) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_OPTIONS,op,NULL)
+#define SSL_CTX_get_options(ctx) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_OPTIONS,0,NULL)
+#define SSL_set_options(ssl,op) \
+       SSL_ctrl(ctx,SSL_CTRL_OPTIONS,0,NULL)
+#define SSL_get_options(ssl) \
+        SSL_ctrl(ctx,SSL_CTRL_OPTIONS,0,NULL)
 
 #define SSL_OP_NO_SSLv2                                        0x01000000L
 #define SSL_OP_NO_SSLv3                                        0x02000000L
 #define SSL_OP_NO_TLSv1                                        0x04000000L
 
-/* Normally you will only use these if your application wants to use
- * the certificate store in other places, perhaps PKCS7 */
-#define SSL_CTX_get_cert_store(ctx)     ((ctx)->cert_store)
-#define SSL_CTX_set_cert_store(ctx,cs) \
-                (X509_STORE_free((ctx)->cert_store),(ctx)->cert_store=(cs))
-
-
 #define SSL_SESSION_CACHE_MAX_SIZE_DEFAULT     (1024*20)
 
-typedef struct ssl_ctx_st
+typedef struct ssl_comp_st
+{
+    int id;
+    char *name;
+#ifdef HEADER_COMP_H
+    COMP_METHOD *method;
+#else
+    char *method;
+#endif
+} SSL_COMP;
+
+struct ssl_ctx_st
        {
        SSL_METHOD *method;
        unsigned long options;
@@ -339,53 +367,60 @@ typedef struct ssl_ctx_st
        SSL_SESSION *(*get_session_cb)();
 #endif
 
-       int sess_connect;       /* SSL new connection - started */
-       int sess_connect_renegotiate;/* SSL renegotiatene  - requested */
-       int sess_connect_good;  /* SSL new connection/renegotiate - finished */
-       int sess_accept;        /* SSL new accept - started */
-       int sess_accept_renegotiate;/* SSL renegotiatene - requested */
-       int sess_accept_good;   /* SSL accept/renegotiate - finished */
-       int sess_miss;          /* session lookup misses  */
-       int sess_timeout;       /* session reuse attempt on timeouted session */
-       int sess_cache_full;    /* session removed due to full cache */
-       int sess_hit;           /* session reuse actually done */
-       int sess_cb_hit;        /* session-id that was not in the cache was
-                                * passed back via the callback.  This
-                                * indicates that the application is supplying
-                                * session-id's from other processes -
-                                * spooky :-) */
+       struct
+               {
+               int sess_connect;       /* SSL new conn - started */
+               int sess_connect_renegotiate;/* SSL reneg - requested */
+               int sess_connect_good;  /* SSL new conne/reneg - finished */
+               int sess_accept;        /* SSL new accept - started */
+               int sess_accept_renegotiate;/* SSL reneg - requested */
+               int sess_accept_good;   /* SSL accept/reneg - finished */
+               int sess_miss;          /* session lookup misses  */
+               int sess_timeout;       /* reuse attempt on timeouted session */
+               int sess_cache_full;    /* session removed due to full cache */
+               int sess_hit;           /* session reuse actually done */
+               int sess_cb_hit;        /* session-id that was not
+                                        * in the cache was
+                                        * passed back via the callback.  This
+                                        * indicates that the application is
+                                        * supplying session-id's from other
+                                        * processes - spooky :-) */
+               } stats;
 
        int references;
 
-       void (*info_callback)();
+/**/   void (*info_callback)();
 
        /* if defined, these override the X509_verify_cert() calls */
-       int (*app_verify_callback)();
-       char *app_verify_arg;
+/**/   int (*app_verify_callback)();
+/**/   char *app_verify_arg;
 
        /* default values to use in SSL structures */
-       struct cert_st /* CERT */ *default_cert;
-       int default_read_ahead;
-       int default_verify_mode;
-       int (*default_verify_callback)();
+/**/   struct cert_st /* CERT */ *default_cert;
+/**/   int read_ahead;
+/**/   int verify_mode;
+/**/   int (*default_verify_callback)();
 
        /* Default password callback. */
-       int (*default_passwd_callback)();
+/**/   int (*default_passwd_callback)();
 
        /* get client cert callback */
-       int (*client_cert_cb)(/* SSL *ssl, X509 **x509, EVP_PKEY **pkey */);
+/**/   int (*client_cert_cb)(/* SSL *ssl, X509 **x509, EVP_PKEY **pkey */);
 
        /* what we put in client requests */
        STACK *client_CA;
 
-       int quiet_shutdown;
+/**/   int quiet_shutdown;
 
        CRYPTO_EX_DATA ex_data;
 
        EVP_MD *rsa_md5;/* For SSLv2 - name is 'ssl2-md5' */
        EVP_MD *md5;    /* For SSLv3/TLSv1 'ssl3-md5' */
        EVP_MD *sha1;   /* For SSLv3/TLSv1 'ssl3->sha1' */
-       } SSL_CTX;
+
+       STACK *extra_certs;
+        STACK *comp_methods; /* stack of SSL_COMP, SSLv3/TLSv1 */
+       };
 
 #define SSL_SESS_CACHE_OFF                     0x0000
 #define SSL_SESS_CACHE_CLIENT                  0x0001
@@ -397,41 +432,30 @@ typedef struct ssl_ctx_st
  * defined, this will still get called. */
 #define SSL_SESS_CACHE_NO_INTERNAL_LOOKUP      0x0100
 
-#define SSL_CTX_sessions(ctx)          ((ctx)->sessions)
-/* You will need to include lhash.h to access the following #define */
-#define SSL_CTX_sess_number(ctx)       ((ctx)->sessions->num_items)
-#define SSL_CTX_sess_connect(ctx)      ((ctx)->sess_connect)
-#define SSL_CTX_sess_connect_good(ctx) ((ctx)->sess_connect_good)
-#define SSL_CTX_sess_accept(ctx)       ((ctx)->sess_accept)
-#define SSL_CTX_sess_accept_renegotiate(ctx)   ((ctx)->sess_accept_renegotiate)
-#define SSL_CTX_sess_connect_renegotiate(ctx)  ((ctx)->sess_connect_renegotiate)
-#define SSL_CTX_sess_accept_good(ctx)  ((ctx)->sess_accept_good)
-#define SSL_CTX_sess_hits(ctx)         ((ctx)->sess_hit)
-#define SSL_CTX_sess_cb_hits(ctx)      ((ctx)->sess_cb_hit)
-#define SSL_CTX_sess_misses(ctx)       ((ctx)->sess_miss)
-#define SSL_CTX_sess_timeouts(ctx)     ((ctx)->sess_timeout)
-#define SSL_CTX_sess_cache_full(ctx)   ((ctx)->sess_cache_full)
-
-#define SSL_CTX_sess_set_cache_size(ctx,t) ((ctx)->session_cache_size=(t))
-#define SSL_CTX_sess_get_cache_size(ctx)   ((ctx)->session_cache_size)
-
-#define SSL_CTX_sess_set_new_cb(ctx,cb)        ((ctx)->new_session_cb=(cb))
-#define SSL_CTX_sess_get_new_cb(ctx)   ((ctx)->new_session_cb)
-#define SSL_CTX_sess_set_remove_cb(ctx,cb)     ((ctx)->remove_session_cb=(cb))
-#define SSL_CTX_sess_get_remove_cb(ctx)        ((ctx)->remove_session_cb)
-#define SSL_CTX_sess_set_get_cb(ctx,cb)        ((ctx)->get_session_cb=(cb))
-#define SSL_CTX_sess_get_get_cb(ctx)   ((ctx)->get_session_cb)
-#define SSL_CTX_set_session_cache_mode(ctx,m)  ((ctx)->session_cache_mode=(m))
-#define SSL_CTX_get_session_cache_mode(ctx)    ((ctx)->session_cache_mode)
-#define SSL_CTX_set_timeout(ctx,t)     ((ctx)->session_timeout=(t))
-#define SSL_CTX_get_timeout(ctx)       ((ctx)->session_timeout)
-
-#define SSL_CTX_set_info_callback(ctx,cb)      ((ctx)->info_callback=(cb))
-#define SSL_CTX_get_info_callback(ctx)         ((ctx)->info_callback)
-#define SSL_CTX_set_default_read_ahead(ctx,m) (((ctx)->default_read_ahead)=(m))
-
-#define SSL_CTX_set_client_cert_cb(ctx,cb)     ((ctx)->client_cert_cb=(cb))
-#define SSL_CTX_get_client_cert_cb(ctx)                ((ctx)->client_cert_cb)
+#define SSL_CTX_sess_number(ctx) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_NUMBER,0,NULL)
+#define SSL_CTX_sess_connect(ctx) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT,0,NULL)
+#define SSL_CTX_sess_connect_good(ctx) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_GOOD,0,NULL)
+#define SSL_CTX_sess_connect_renegotiate(ctx) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CONNECT_RENEGOTIATE,0,NULL)
+#define SSL_CTX_sess_accept(ctx) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT,0,NULL)
+#define SSL_CTX_sess_accept_renegotiate(ctx) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_RENEGOTIATE,0,NULL)
+#define SSL_CTX_sess_accept_good(ctx) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_ACCEPT_GOOD,0,NULL)
+#define SSL_CTX_sess_hits(ctx) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_HIT,0,NULL)
+#define SSL_CTX_sess_cb_hits(ctx) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CB_HIT,0,NULL)
+#define SSL_CTX_sess_misses(ctx) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_MISSES,0,NULL)
+#define SSL_CTX_sess_timeouts(ctx) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_TIMEOUTS,0,NULL)
+#define SSL_CTX_sess_cache_full(ctx) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL)
 
 #define SSL_NOTHING    1
 #define SSL_WRITING    2
@@ -439,13 +463,12 @@ typedef struct ssl_ctx_st
 #define SSL_X509_LOOKUP        4
 
 /* These will only be used when doing non-blocking IO */
-#define SSL_want(s)            ((s)->rwstate)
-#define SSL_want_nothing(s)    ((s)->rwstate == SSL_NOTHING)
-#define SSL_want_read(s)       ((s)->rwstate == SSL_READING)
-#define SSL_want_write(s)      ((s)->rwstate == SSL_WRITING)
-#define SSL_want_x509_lookup(s)        ((s)->rwstate == SSL_X509_LOOKUP)
+#define SSL_want_nothing(s)    (SSL_want(s) == SSL_NOTHING)
+#define SSL_want_read(s)       (SSL_want(s) == SSL_READING)
+#define SSL_want_write(s)      (SSL_want(s) == SSL_WRITING)
+#define SSL_want_x509_lookup(s)        (SSL_want(s) == SSL_X509_LOOKUP)
 
-typedef struct ssl_st
+struct ssl_st
        {
        /* procol version
         * 2 for SSLv2
@@ -480,7 +503,7 @@ typedef struct ssl_st
        int in_handshake;
        int (*handshake_func)();
 
-/*     int server;*/   /* are we the server side? */
+       int server;     /* are we the server side? - mostly used by SSL_clear*/
 
        int new_session;/* 1 if we are to use a new session */
        int quiet_shutdown;/* don't send shutdown packets */
@@ -512,11 +535,19 @@ typedef struct ssl_st
 
        EVP_CIPHER_CTX *enc_read_ctx;           /* cryptographic state */
        EVP_MD *read_hash;                      /* used for mac generation */
-       SSL_COMPRESSION *read_compression;      /* compression */
+#ifdef HEADER_COMP_H
+       COMP_CTX *expand;                       /* uncompress */
+#else
+       char *expand;
+#endif
 
        EVP_CIPHER_CTX *enc_write_ctx;          /* cryptographic state */
        EVP_MD *write_hash;                     /* used for mac generation */
-       SSL_COMPRESSION *write_compression;     /* compression */
+#ifdef HEADER_COMP_H
+       COMP_CTX *compress;                     /* compression */
+#else
+       char *compress; 
+#endif
 
        /* session info */
 
@@ -551,7 +582,9 @@ typedef struct ssl_st
        int references;
        unsigned long options;
        int first_packet;
-       } SSL;
+       int client_version;     /* what was passed, used for
+                                * SSLv3/TLS rolback check */
+       };
 
 #include "ssl2.h"
 #include "ssl3.h"
@@ -616,6 +649,8 @@ typedef struct ssl_st
 #define SSL_VERIFY_FAIL_IF_NO_PEER_CERT        0x02
 #define SSL_VERIFY_CLIENT_ONCE         0x04
 
+#define SSLeay_add_ssl_algorithms()    SSL_library_init()
+
 /* this is for backward compatablility */
 #if 0 /* NEW_SSLEAY */
 #define SSL_CTX_set_default_verify(a,b,c) SSL_CTX_set_verify(a,b,c)
@@ -660,6 +695,7 @@ typedef struct ssl_st
                PEM_STRING_SSL_SESSION,bp, (char *)x, NULL,NULL,0,NULL)
 #endif
 
+#define SSL_AD_REASON_OFFSET           1000
 /* These alert types are for SSLv3 and TLSv1 */
 #define SSL_AD_CLOSE_NOTIFY            SSL3_AD_CLOSE_NOTIFY
 #define SSL_AD_UNEXPECTED_MESSAGE      SSL3_AD_UNEXPECTED_MESSAGE /* fatal */
@@ -706,6 +742,30 @@ typedef struct ssl_st
 #define SSL_CTRL_GET_NUM_RENEGOTIATIONS                8
 #define SSL_CTRL_CLEAR_NUM_RENEGOTIATIONS      9
 #define SSL_CTRL_GET_TOTAL_RENEGOTIATIONS      10
+#define SSL_CTRL_GET_FLAGS                     11
+#define SSL_CTRL_EXTRA_CHAIN_CERT              12
+
+/* Stats */
+#define SSL_CTRL_SESS_NUMBER                   20
+#define SSL_CTRL_SESS_CONNECT                  21
+#define SSL_CTRL_SESS_CONNECT_GOOD             22
+#define SSL_CTRL_SESS_CONNECT_RENEGOTIATE      23
+#define SSL_CTRL_SESS_ACCEPT                   24
+#define SSL_CTRL_SESS_ACCEPT_GOOD              25
+#define SSL_CTRL_SESS_ACCEPT_RENEGOTIATE       26
+#define SSL_CTRL_SESS_HIT                      27
+#define SSL_CTRL_SESS_CB_HIT                   28
+#define SSL_CTRL_SESS_MISSES                   29
+#define SSL_CTRL_SESS_TIMEOUTS                 30
+#define SSL_CTRL_SESS_CACHE_FULL               31
+#define SSL_CTRL_OPTIONS                       32
+
+#define SSL_CTRL_GET_READ_AHEAD                        40
+#define SSL_CTRL_SET_READ_AHEAD                        41
+#define SSL_CTRL_SET_SESS_CACHE_SIZE           42
+#define SSL_CTRL_GET_SESS_CACHE_SIZE           43
+#define SSL_CTRL_SET_SESS_CACHE_MODE           44
+#define SSL_CTRL_GET_SESS_CACHE_MODE           45
 
 #define SSL_session_reused(ssl) \
        SSL_ctrl((ssl),SSL_CTRL_GET_SESSION_REUSED,0,NULL)
@@ -723,14 +783,8 @@ typedef struct ssl_st
 #define SSL_CTX_set_tmp_dh(ctx,dh) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH,0,(char *)dh)
 
-/* For the next 2, the callbacks are 
- * RSA *tmp_rsa_cb(int export)
- * DH *tmp_dh_cb(int export)
- */
-#define SSL_CTX_set_tmp_rsa_callback(ctx,cb) \
-       SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_RSA_CB,0,(char *)cb)
-#define SSL_CTX_set_tmp_dh_callback(ctx,dh) \
-       SSL_CTX_ctrl(ctx,SSL_CTRL_SET_TMP_DH_CB,0,(char *)dh)
+#define SSL_CTX_add_extra_chain_cert(ctx,x509) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509)
 
 #ifndef NOPROTO
 
@@ -747,7 +801,13 @@ void BIO_ssl_shutdown(BIO *ssl_bio);
 int    SSL_CTX_set_cipher_list(SSL_CTX *,char *str);
 SSL_CTX *SSL_CTX_new(SSL_METHOD *meth);
 void   SSL_CTX_free(SSL_CTX *);
-void   SSL_clear(SSL *s);
+long SSL_CTX_set_timeout(SSL_CTX *ctx,long t);
+long SSL_CTX_get_timeout(SSL_CTX *ctx);
+X509_STORE *SSL_CTX_get_cert_store(SSL_CTX *);
+void SSL_CTX_set_cert_store(SSL_CTX *,X509_STORE *);
+int SSL_want(SSL *s);
+int    SSL_clear(SSL *s);
+
 void   SSL_CTX_flush_sessions(SSL_CTX *ctx,long tm);
 
 SSL_CIPHER *SSL_get_current_cipher(SSL *s);
@@ -780,7 +840,7 @@ int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len);
 int    SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey);
 int    SSL_use_PrivateKey_ASN1(int pk,SSL *ssl, unsigned char *d, long len);
 int    SSL_use_certificate(SSL *ssl, X509 *x);
-int    SSL_use_certificate_ASN1(SSL *ssl, int len, unsigned char *d);
+int    SSL_use_certificate_ASN1(SSL *ssl, unsigned char *d, int len);
 
 #ifndef NO_STDIO
 int    SSL_use_RSAPrivateKey_file(SSL *ssl, char *file, int type);
@@ -828,7 +888,7 @@ STACK *     SSL_get_peer_cert_chain(SSL *s);
 
 int SSL_CTX_get_verify_mode(SSL_CTX *ctx);
 int (*SSL_CTX_get_verify_callback(SSL_CTX *ctx))();
-void SSL_CTX_set_verify(SSL_CTX *ctx,int mode,int (*callback)());
+void SSL_CTX_set_verify(SSL_CTX *ctx,int mode,int (*callback)(int, X509_STORE_CTX *));
 void SSL_CTX_set_cert_verify_cb(SSL_CTX *ctx, int (*cb)(),char *arg);
 int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa);
 int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, unsigned char *d, long len);
@@ -844,13 +904,12 @@ int SSL_CTX_check_private_key(SSL_CTX *ctx);
 int SSL_check_private_key(SSL *ctx);
 
 SSL *  SSL_new(SSL_CTX *ctx);
-void    SSL_clear(SSL *s);
 void   SSL_free(SSL *ssl);
 int    SSL_accept(SSL *ssl);
 int    SSL_connect(SSL *ssl);
 int    SSL_read(SSL *ssl,char *buf,int num);
 int    SSL_peek(SSL *ssl,char *buf,int num);
-int    SSL_write(SSL *ssl,char *buf,int num);
+int    SSL_write(SSL *ssl,const char *buf,int num);
 long   SSL_ctrl(SSL *ssl,int cmd, long larg, char *parg);
 long   SSL_CTX_ctrl(SSL_CTX *ctx,int cmd, long larg, char *parg);
 
@@ -901,7 +960,7 @@ void SSL_set_accept_state(SSL *s);
 
 long SSL_get_default_timeout(SSL *s);
 
-void SSLeay_add_ssl_algorithms(void );
+int SSL_library_init(void );
 
 char *SSL_CIPHER_description(SSL_CIPHER *,char *buf,int size);
 STACK *SSL_dup_CA_list(STACK *sk);
@@ -944,6 +1003,38 @@ char *SSL_CTX_get_ex_data(SSL_CTX *ssl,int idx);
 int SSL_CTX_get_ex_new_index(long argl, char *argp, int (*new_func)(),
        int (*dup_func)(), void (*free_func)());
 
+int SSL_get_ex_data_X509_STORE_CTX_idx(void );
+
+#define SSL_CTX_sess_set_cache_size(ctx,t) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_SIZE,t,NULL)
+#define SSL_CTX_sess_get_cache_size(ctx) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_SIZE,0,NULL)
+#define SSL_CTX_set_session_cache_mode(ctx,m) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_SET_SESS_CACHE_MODE,m,NULL)
+#define SSL_CTX_get_session_cache_mode(ctx) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_GET_SESS_CACHE_MODE,0,NULL)
+
+#define SSL_CTX_get_default_read_ahead(ctx) SSL_CTX_get_read_ahead(ctx)
+#define SSL_CTX_set_default_read_ahead(ctx,m) SSL_CTX_set_read_ahead(ctx,m)
+#define SSL_CTX_get_read_ahead(ctx) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_GET_READ_AHEAD,0,NULL)
+#define SSL_CTX_set_read_ahead(ctx,m) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_SET_READ_AHEAD,0,NULL)
+
+/* For the next 2, the callbacks are 
+ * RSA *tmp_rsa_cb(SSL *ssl,int export)
+ * DH *tmp_dh_cb(SSL *ssl,int export)
+ */
+void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx,
+                                 RSA *(*cb)(SSL *ssl,int export));
+void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx,DH *(*dh)(SSL *ssl,int export));
+
+#ifdef HEADER_COMP_H
+int SSL_COMP_add_compression_method(int id,COMP_METHOD *cm);
+#else
+int SSL_COMP_add_compression_method(int id,char *cm);
+#endif
+
 #else
 
 BIO_METHOD *BIO_f_ssl();
@@ -953,6 +1044,12 @@ BIO *BIO_new_buffer_ssl_connect();
 int BIO_ssl_copy_session_id();
 void BIO_ssl_shutdown();
 
+long SSL_CTX_set_timeout();
+long SSL_CTX_get_timeout();
+X509_STORE *SSL_CTX_get_cert_store();
+void SSL_CTX_set_cert_store();
+int SSL_want();
+
 int    SSL_CTX_set_cipher_list();
 SSL_CTX *SSL_CTX_new();
 void   SSL_CTX_free();
@@ -1108,7 +1205,7 @@ void SSL_set_accept_state();
 
 long SSL_get_default_timeout();
 
-void SSLeay_add_ssl_algorithms();
+int SSL_library_init();
 
 char *SSL_CIPHER_description();
 STACK *SSL_dup_CA_list();
@@ -1120,6 +1217,7 @@ X509 *SSL_get_certificate();
 
 #ifdef this_is_for_mk1mf_pl
 EVP *SSL_get_privatekey();
+#endif
 
 void SSL_CTX_set_quiet_shutdown();
 int SSL_CTX_get_quiet_shutdown();
@@ -1133,7 +1231,7 @@ int SSL_CTX_load_verify_locations();
 SSL_SESSION *SSL_get_session();
 SSL_CTX *SSL_get_SSL_CTX();
 void SSL_set_info_callback();
-int (*SSL_get_info_callback())();
+void (*SSL_get_info_callback())();
 int SSL_state();
 void SSL_set_verify_result();
 long SSL_get_verify_result();
@@ -1150,7 +1248,17 @@ int SSL_CTX_set_ex_data();
 char *SSL_CTX_get_ex_data();
 int SSL_CTX_get_ex_new_index();
 
-#endif
+int SSL_get_ex_data_X509_STORE_CTX_idx();
+int SSL_COMP_add_compression_method();
+
+/* For the next 2, the callbacks are 
+ * RSA *tmp_rsa_cb(SSL *ssl,int export)
+ * DH *tmp_dh_cb(SSL *ssl,int export)
+ */
+void SSL_CTX_set_tmp_rsa_callback();
+void SSL_CTX_set_tmp_dh_callback();
+
+/* #endif */
 
 #endif
 
@@ -1222,51 +1330,54 @@ int SSL_CTX_get_ex_new_index();
 #define SSL_F_SSL_BYTES_TO_CIPHER_LIST                  161
 #define SSL_F_SSL_CERT_NEW                              162
 #define SSL_F_SSL_CHECK_PRIVATE_KEY                     163
-#define SSL_F_SSL_CREATE_CIPHER_LIST                    164
-#define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY                         165
-#define SSL_F_SSL_CTX_NEW                               166
-#define SSL_F_SSL_CTX_SET_SSL_VERSION                   167
-#define SSL_F_SSL_CTX_USE_CERTIFICATE                   168
-#define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1              169
-#define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE              170
-#define SSL_F_SSL_CTX_USE_PRIVATEKEY                    171
-#define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1               172
-#define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE               173
-#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY                         174
-#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1            175
-#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE            176
-#define SSL_F_SSL_DO_HANDSHAKE                          177
-#define SSL_F_SSL_GET_NEW_SESSION                       178
-#define SSL_F_SSL_GET_SERVER_SEND_CERT                  179
-#define SSL_F_SSL_GET_SIGN_PKEY                                 180
-#define SSL_F_SSL_INIT_WBIO_BUFFER                      181
-#define SSL_F_SSL_LOAD_CLIENT_CA_FILE                   182
-#define SSL_F_SSL_NEW                                   183
-#define SSL_F_SSL_RSA_PRIVATE_DECRYPT                   184
-#define SSL_F_SSL_RSA_PUBLIC_ENCRYPT                    185
-#define SSL_F_SSL_SESSION_NEW                           186
-#define SSL_F_SSL_SESSION_PRINT_FP                      187
-#define SSL_F_SSL_SET_CERT                              188
-#define SSL_F_SSL_SET_FD                                189
-#define SSL_F_SSL_SET_PKEY                              190
-#define SSL_F_SSL_SET_RFD                               191
-#define SSL_F_SSL_SET_SESSION                           192
-#define SSL_F_SSL_SET_WFD                               193
-#define SSL_F_SSL_UNDEFINED_FUNCTION                    194
-#define SSL_F_SSL_USE_CERTIFICATE                       195
-#define SSL_F_SSL_USE_CERTIFICATE_ASN1                  196
-#define SSL_F_SSL_USE_CERTIFICATE_FILE                  197
-#define SSL_F_SSL_USE_PRIVATEKEY                        198
-#define SSL_F_SSL_USE_PRIVATEKEY_ASN1                   199
-#define SSL_F_SSL_USE_PRIVATEKEY_FILE                   200
-#define SSL_F_SSL_USE_RSAPRIVATEKEY                     201
-#define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1                202
-#define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE                203
-#define SSL_F_SSL_WRITE                                         204
-#define SSL_F_TLS1_CHANGE_CIPHER_STATE                  205
-#define SSL_F_TLS1_ENC                                  206
-#define SSL_F_TLS1_SETUP_KEY_BLOCK                      207
-#define SSL_F_WRITE_PENDING                             208
+#define SSL_F_SSL_CLEAR                                         164
+#define SSL_F_SSL_COMP_ADD_COMPRESSION_METHOD           165
+#define SSL_F_SSL_CREATE_CIPHER_LIST                    166
+#define SSL_F_SSL_CTX_CHECK_PRIVATE_KEY                         168
+#define SSL_F_SSL_CTX_NEW                               169
+#define SSL_F_SSL_CTX_SET_SSL_VERSION                   170
+#define SSL_F_SSL_CTX_USE_CERTIFICATE                   171
+#define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1              172
+#define SSL_F_SSL_CTX_USE_CERTIFICATE_FILE              173
+#define SSL_F_SSL_CTX_USE_PRIVATEKEY                    174
+#define SSL_F_SSL_CTX_USE_PRIVATEKEY_ASN1               175
+#define SSL_F_SSL_CTX_USE_PRIVATEKEY_FILE               176
+#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY                         177
+#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_ASN1            178
+#define SSL_F_SSL_CTX_USE_RSAPRIVATEKEY_FILE            179
+#define SSL_F_SSL_DO_HANDSHAKE                          180
+#define SSL_F_SSL_GET_NEW_SESSION                       181
+#define SSL_F_SSL_GET_SERVER_SEND_CERT                  182
+#define SSL_F_SSL_GET_SIGN_PKEY                                 183
+#define SSL_F_SSL_INIT_WBIO_BUFFER                      184
+#define SSL_F_SSL_LOAD_CLIENT_CA_FILE                   185
+#define SSL_F_SSL_NEW                                   186
+#define SSL_F_SSL_RSA_PRIVATE_DECRYPT                   187
+#define SSL_F_SSL_RSA_PUBLIC_ENCRYPT                    188
+#define SSL_F_SSL_SESSION_NEW                           189
+#define SSL_F_SSL_SESSION_PRINT_FP                      190
+#define SSL_F_SSL_SET_CERT                              191
+#define SSL_F_SSL_SET_FD                                192
+#define SSL_F_SSL_SET_PKEY                              193
+#define SSL_F_SSL_SET_RFD                               194
+#define SSL_F_SSL_SET_SESSION                           195
+#define SSL_F_SSL_SET_WFD                               196
+#define SSL_F_SSL_UNDEFINED_FUNCTION                    197
+#define SSL_F_SSL_USE_CERTIFICATE                       198
+#define SSL_F_SSL_USE_CERTIFICATE_ASN1                  199
+#define SSL_F_SSL_USE_CERTIFICATE_FILE                  200
+#define SSL_F_SSL_USE_PRIVATEKEY                        201
+#define SSL_F_SSL_USE_PRIVATEKEY_ASN1                   202
+#define SSL_F_SSL_USE_PRIVATEKEY_FILE                   203
+#define SSL_F_SSL_USE_RSAPRIVATEKEY                     204
+#define SSL_F_SSL_USE_RSAPRIVATEKEY_ASN1                205
+#define SSL_F_SSL_USE_RSAPRIVATEKEY_FILE                206
+#define SSL_F_SSL_VERIFY_CERT_CHAIN                     207
+#define SSL_F_SSL_WRITE                                         208
+#define SSL_F_TLS1_CHANGE_CIPHER_STATE                  209
+#define SSL_F_TLS1_ENC                                  210
+#define SSL_F_TLS1_SETUP_KEY_BLOCK                      211
+#define SSL_F_WRITE_PENDING                             212
 
 /* Reason codes. */
 #define SSL_R_APP_DATA_IN_HANDSHAKE                     100
@@ -1311,83 +1422,87 @@ int SSL_CTX_get_ex_new_index();
 #define SSL_R_CIPHER_TABLE_SRC_ERROR                    139
 #define SSL_R_COMPRESSED_LENGTH_TOO_LONG                140
 #define SSL_R_COMPRESSION_FAILURE                       141
-#define SSL_R_CONNECTION_ID_IS_DIFFERENT                142
-#define SSL_R_CONNECTION_TYPE_NOT_SET                   143
-#define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED             144
-#define SSL_R_DATA_LENGTH_TOO_LONG                      145
-#define SSL_R_DECRYPTION_FAILED                                 146
-#define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG           147
-#define SSL_R_DIGEST_CHECK_FAILED                       148
-#define SSL_R_ENCRYPTED_LENGTH_TOO_LONG                         149
-#define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST             150
-#define SSL_R_EXCESSIVE_MESSAGE_SIZE                    151
-#define SSL_R_EXTRA_DATA_IN_MESSAGE                     152
-#define SSL_R_GOT_A_FIN_BEFORE_A_CCS                    153
-#define SSL_R_HTTPS_PROXY_REQUEST                       154
-#define SSL_R_HTTP_REQUEST                              155
-#define SSL_R_INTERNAL_ERROR                            156
-#define SSL_R_INVALID_CHALLENGE_LENGTH                  157
-#define SSL_R_LENGTH_MISMATCH                           158
-#define SSL_R_LENGTH_TOO_SHORT                          159
-#define SSL_R_LIBRARY_HAS_NO_CIPHERS                    160
-#define SSL_R_MISSING_DH_DSA_CERT                       161
-#define SSL_R_MISSING_DH_KEY                            162
-#define SSL_R_MISSING_DH_RSA_CERT                       163
-#define SSL_R_MISSING_DSA_SIGNING_CERT                  164
-#define SSL_R_MISSING_EXPORT_TMP_DH_KEY                         165
-#define SSL_R_MISSING_EXPORT_TMP_RSA_KEY                166
-#define SSL_R_MISSING_RSA_CERTIFICATE                   167
-#define SSL_R_MISSING_RSA_ENCRYPTING_CERT               168
-#define SSL_R_MISSING_RSA_SIGNING_CERT                  169
-#define SSL_R_MISSING_TMP_DH_KEY                        170
-#define SSL_R_MISSING_TMP_RSA_KEY                       171
-#define SSL_R_MISSING_TMP_RSA_PKEY                      172
-#define SSL_R_MISSING_VERIFY_MESSAGE                    173
-#define SSL_R_NON_SSLV2_INITIAL_PACKET                  174
-#define SSL_R_NO_CERTIFICATES_RETURNED                  175
-#define SSL_R_NO_CERTIFICATE_ASSIGNED                   176
-#define SSL_R_NO_CERTIFICATE_RETURNED                   177
-#define SSL_R_NO_CERTIFICATE_SET                        178
-#define SSL_R_NO_CERTIFICATE_SPECIFIED                  179
-#define SSL_R_NO_CIPHERS_AVAILABLE                      180
-#define SSL_R_NO_CIPHERS_PASSED                                 181
-#define SSL_R_NO_CIPHERS_SPECIFIED                      182
-#define SSL_R_NO_CIPHER_LIST                            183
-#define SSL_R_NO_CIPHER_MATCH                           184
-#define SSL_R_NO_CLIENT_CERT_RECEIVED                   185
-#define SSL_R_NO_COMPRESSION_SPECIFIED                  186
-#define SSL_R_NO_PRIVATEKEY                             187
-#define SSL_R_NO_PRIVATE_KEY_ASSIGNED                   188
-#define SSL_R_NO_PROTOCOLS_AVAILABLE                    189
-#define SSL_R_NO_PUBLICKEY                              190
-#define SSL_R_NO_SHARED_CIPHER                          191
-#define SSL_R_NULL_SSL_CTX                              192
-#define SSL_R_NULL_SSL_METHOD_PASSED                    193
-#define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED           194
-#define SSL_R_PACKET_LENGTH_TOO_LONG                    195
-#define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE                 196
-#define SSL_R_PEER_ERROR                                197
-#define SSL_R_PEER_ERROR_CERTIFICATE                    198
-#define SSL_R_PEER_ERROR_NO_CERTIFICATE                         199
-#define SSL_R_PEER_ERROR_NO_CIPHER                      200
-#define SSL_R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE   201
-#define SSL_R_PRE_MAC_LENGTH_TOO_LONG                   202
-#define SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS                 203
-#define SSL_R_PROTOCOL_IS_SHUTDOWN                      204
-#define SSL_R_PUBLIC_KEY_ENCRYPT_ERROR                  205
-#define SSL_R_PUBLIC_KEY_IS_NOT_RSA                     206
-#define SSL_R_PUBLIC_KEY_NOT_RSA                        207
-#define SSL_R_READ_BIO_NOT_SET                          208
-#define SSL_R_READ_WRONG_PACKET_TYPE                    209
-#define SSL_R_RECORD_LENGTH_MISMATCH                    210
-#define SSL_R_RECORD_TOO_LARGE                          211
-#define SSL_R_REQUIRED_CIPHER_MISSING                   212
-#define SSL_R_REUSE_CERT_LENGTH_NOT_ZERO                213
-#define SSL_R_REUSE_CERT_TYPE_NOT_ZERO                  214
-#define SSL_R_REUSE_CIPHER_LIST_NOT_ZERO                215
-#define SSL_R_SHORT_READ                                216
-#define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE     217
-#define SSL_R_SSL3_SESSION_ID_TOO_SHORT                         218
+#define SSL_R_COMPRESSION_LIBRARY_ERROR                         142
+#define SSL_R_CONNECTION_ID_IS_DIFFERENT                143
+#define SSL_R_CONNECTION_TYPE_NOT_SET                   144
+#define SSL_R_DATA_BETWEEN_CCS_AND_FINISHED             145
+#define SSL_R_DATA_LENGTH_TOO_LONG                      146
+#define SSL_R_DECRYPTION_FAILED                                 147
+#define SSL_R_DH_PUBLIC_VALUE_LENGTH_IS_WRONG           148
+#define SSL_R_DIGEST_CHECK_FAILED                       149
+#define SSL_R_ENCRYPTED_LENGTH_TOO_LONG                         150
+#define SSL_R_ERROR_IN_RECEIVED_CIPHER_LIST             151
+#define SSL_R_EXCESSIVE_MESSAGE_SIZE                    152
+#define SSL_R_EXTRA_DATA_IN_MESSAGE                     153
+#define SSL_R_GOT_A_FIN_BEFORE_A_CCS                    154
+#define SSL_R_HTTPS_PROXY_REQUEST                       155
+#define SSL_R_HTTP_REQUEST                              156
+#define SSL_R_INTERNAL_ERROR                            157
+#define SSL_R_INVALID_CHALLENGE_LENGTH                  158
+#define SSL_R_LENGTH_MISMATCH                           159
+#define SSL_R_LENGTH_TOO_SHORT                          160
+#define SSL_R_LIBRARY_HAS_NO_CIPHERS                    161
+#define SSL_R_MISSING_DH_DSA_CERT                       162
+#define SSL_R_MISSING_DH_KEY                            163
+#define SSL_R_MISSING_DH_RSA_CERT                       164
+#define SSL_R_MISSING_DSA_SIGNING_CERT                  165
+#define SSL_R_MISSING_EXPORT_TMP_DH_KEY                         166
+#define SSL_R_MISSING_EXPORT_TMP_RSA_KEY                167
+#define SSL_R_MISSING_RSA_CERTIFICATE                   168
+#define SSL_R_MISSING_RSA_ENCRYPTING_CERT               169
+#define SSL_R_MISSING_RSA_SIGNING_CERT                  170
+#define SSL_R_MISSING_TMP_DH_KEY                        171
+#define SSL_R_MISSING_TMP_RSA_KEY                       172
+#define SSL_R_MISSING_TMP_RSA_PKEY                      173
+#define SSL_R_MISSING_VERIFY_MESSAGE                    174
+#define SSL_R_NON_SSLV2_INITIAL_PACKET                  175
+#define SSL_R_NO_CERTIFICATES_RETURNED                  176
+#define SSL_R_NO_CERTIFICATE_ASSIGNED                   177
+#define SSL_R_NO_CERTIFICATE_RETURNED                   178
+#define SSL_R_NO_CERTIFICATE_SET                        179
+#define SSL_R_NO_CERTIFICATE_SPECIFIED                  180
+#define SSL_R_NO_CIPHERS_AVAILABLE                      181
+#define SSL_R_NO_CIPHERS_PASSED                                 182
+#define SSL_R_NO_CIPHERS_SPECIFIED                      183
+#define SSL_R_NO_CIPHER_LIST                            184
+#define SSL_R_NO_CIPHER_MATCH                           185
+#define SSL_R_NO_CLIENT_CERT_RECEIVED                   186
+#define SSL_R_NO_COMPRESSION_SPECIFIED                  187
+#define SSL_R_NO_METHOD_SPECIFIED                       188
+#define SSL_R_NO_PRIVATEKEY                             189
+#define SSL_R_NO_PRIVATE_KEY_ASSIGNED                   190
+#define SSL_R_NO_PROTOCOLS_AVAILABLE                    191
+#define SSL_R_NO_PUBLICKEY                              192
+#define SSL_R_NO_SHARED_CIPHER                          193
+#define SSL_R_NO_VERIFY_CALLBACK                        194
+#define SSL_R_NULL_SSL_CTX                              195
+#define SSL_R_NULL_SSL_METHOD_PASSED                    196
+#define SSL_R_OLD_SESSION_CIPHER_NOT_RETURNED           197
+#define SSL_R_PACKET_LENGTH_TOO_LONG                    198
+#define SSL_R_PEER_DID_NOT_RETURN_A_CERTIFICATE                 199
+#define SSL_R_PEER_ERROR                                200
+#define SSL_R_PEER_ERROR_CERTIFICATE                    201
+#define SSL_R_PEER_ERROR_NO_CERTIFICATE                         202
+#define SSL_R_PEER_ERROR_NO_CIPHER                      203
+#define SSL_R_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE   204
+#define SSL_R_PRE_MAC_LENGTH_TOO_LONG                   205
+#define SSL_R_PROBLEMS_MAPPING_CIPHER_FUNCTIONS                 206
+#define SSL_R_PROTOCOL_IS_SHUTDOWN                      207
+#define SSL_R_PUBLIC_KEY_ENCRYPT_ERROR                  208
+#define SSL_R_PUBLIC_KEY_IS_NOT_RSA                     209
+#define SSL_R_PUBLIC_KEY_NOT_RSA                        210
+#define SSL_R_READ_BIO_NOT_SET                          211
+#define SSL_R_READ_WRONG_PACKET_TYPE                    212
+#define SSL_R_RECORD_LENGTH_MISMATCH                    213
+#define SSL_R_RECORD_TOO_LARGE                          214
+#define SSL_R_REQUIRED_CIPHER_MISSING                   215
+#define SSL_R_REUSE_CERT_LENGTH_NOT_ZERO                216
+#define SSL_R_REUSE_CERT_TYPE_NOT_ZERO                  217
+#define SSL_R_REUSE_CIPHER_LIST_NOT_ZERO                218
+#define SSL_R_SHORT_READ                                219
+#define SSL_R_SIGNATURE_FOR_NON_SIGNING_CERTIFICATE     220
+#define SSL_R_SSL23_DOING_SESSION_ID_REUSE              221
+#define SSL_R_SSL3_SESSION_ID_TOO_SHORT                         222
 #define SSL_R_SSLV3_ALERT_BAD_CERTIFICATE               1042
 #define SSL_R_SSLV3_ALERT_BAD_RECORD_MAC                1020
 #define SSL_R_SSLV3_ALERT_CERTIFICATE_EXPIRED           1045
@@ -1397,54 +1512,67 @@ int SSL_CTX_get_ex_new_index();
 #define SSL_R_SSLV3_ALERT_HANDSHAKE_FAILURE             1040
 #define SSL_R_SSLV3_ALERT_ILLEGAL_PARAMETER             1047
 #define SSL_R_SSLV3_ALERT_NO_CERTIFICATE                1041
-#define SSL_R_SSLV3_ALERT_PEER_ERROR_CERTIFICATE        219
-#define SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CERTIFICATE     220
-#define SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CIPHER          221
-#define SSL_R_SSLV3_ALERT_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE 222
+#define SSL_R_SSLV3_ALERT_PEER_ERROR_CERTIFICATE        223
+#define SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CERTIFICATE     224
+#define SSL_R_SSLV3_ALERT_PEER_ERROR_NO_CIPHER          225
+#define SSL_R_SSLV3_ALERT_PEER_ERROR_UNSUPPORTED_CERTIFICATE_TYPE 226
 #define SSL_R_SSLV3_ALERT_UNEXPECTED_MESSAGE            1010
-#define SSL_R_SSLV3_ALERT_UNKNOWN_REMOTE_ERROR_TYPE     223
+#define SSL_R_SSLV3_ALERT_UNKNOWN_REMOTE_ERROR_TYPE     227
 #define SSL_R_SSLV3_ALERT_UNSUPPORTED_CERTIFICATE       1043
-#define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION        224
-#define SSL_R_SSL_HANDSHAKE_FAILURE                     225
-#define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS                226
-#define SSL_R_SSL_SESSION_ID_IS_DIFFERENT               227
-#define SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER      228
-#define SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST 229
-#define SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG   230
-#define SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER           231
-#define SSL_R_UNABLE_TO_DECODE_DH_CERTS                         232
-#define SSL_R_UNABLE_TO_EXTRACT_PUBLIC_KEY              233
-#define SSL_R_UNABLE_TO_FIND_DH_PARAMETERS              234
-#define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS      235
-#define SSL_R_UNABLE_TO_FIND_SSL_METHOD                         236
-#define SSL_R_UNABLE_TO_LOAD_SSL2_MD5_ROUTINES          237
-#define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES          238
-#define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES                 239
-#define SSL_R_UNEXPECTED_MESSAGE                        240
-#define SSL_R_UNEXPECTED_RECORD                                 241
-#define SSL_R_UNKNOWN_ALERT_TYPE                        242
-#define SSL_R_UNKNOWN_CERTIFICATE_TYPE                  243
-#define SSL_R_UNKNOWN_CIPHER_RETURNED                   244
-#define SSL_R_UNKNOWN_CIPHER_TYPE                       245
-#define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE                         246
-#define SSL_R_UNKNOWN_PKEY_TYPE                                 247
-#define SSL_R_UNKNOWN_PROTOCOL                          248
-#define SSL_R_UNKNOWN_REMOTE_ERROR_TYPE                         249
-#define SSL_R_UNKNOWN_SSL_VERSION                       250
-#define SSL_R_UNKNOWN_STATE                             251
-#define SSL_R_UNSUPPORTED_CIPHER                        252
-#define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM                 253
-#define SSL_R_UNSUPPORTED_PROTOCOL                      254
-#define SSL_R_UNSUPPORTED_SSL_VERSION                   255
-#define SSL_R_WRITE_BIO_NOT_SET                                 256
-#define SSL_R_WRONG_CIPHER_RETURNED                     257
-#define SSL_R_WRONG_MESSAGE_TYPE                        258
-#define SSL_R_WRONG_NUMBER_OF_KEY_BITS                  259
-#define SSL_R_WRONG_SIGNATURE_LENGTH                    260
-#define SSL_R_WRONG_SIGNATURE_SIZE                      261
-#define SSL_R_WRONG_SSL_VERSION                                 262
-#define SSL_R_WRONG_VERSION_NUMBER                      263
-#define SSL_R_X509_LIB                                  264
+#define SSL_R_SSL_CTX_HAS_NO_DEFAULT_SSL_VERSION        228
+#define SSL_R_SSL_HANDSHAKE_FAILURE                     229
+#define SSL_R_SSL_LIBRARY_HAS_NO_CIPHERS                230
+#define SSL_R_SSL_SESSION_ID_IS_DIFFERENT               231
+#define SSL_R_TLSV1_ALERT_ACCESS_DENIED                         1049
+#define SSL_R_TLSV1_ALERT_DECODE_ERROR                  1050
+#define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED             1021
+#define SSL_R_TLSV1_ALERT_DECRYPT_ERROR                         1051
+#define SSL_R_TLSV1_ALERT_EXPORT_RESTRICION             1060
+#define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY                 1071
+#define SSL_R_TLSV1_ALERT_INTERNAL_ERROR                1080
+#define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION              1100
+#define SSL_R_TLSV1_ALERT_PROTOCOL_VERSION              1070
+#define SSL_R_TLSV1_ALERT_RECORD_OVERFLOW               1022
+#define SSL_R_TLSV1_ALERT_UNKNOWN_CA                    1048
+#define SSL_R_TLSV1_ALERT_USER_CANCLED                  1090
+#define SSL_R_TLS_CLIENT_CERT_REQ_WITH_ANON_CIPHER      232
+#define SSL_R_TLS_PEER_DID_NOT_RESPOND_WITH_CERTIFICATE_LIST 233
+#define SSL_R_TLS_RSA_ENCRYPTED_VALUE_LENGTH_IS_WRONG   234
+#define SSL_R_TRIED_TO_USE_UNSUPPORTED_CIPHER           235
+#define SSL_R_UNABLE_TO_DECODE_DH_CERTS                         236
+#define SSL_R_UNABLE_TO_EXTRACT_PUBLIC_KEY              237
+#define SSL_R_UNABLE_TO_FIND_DH_PARAMETERS              238
+#define SSL_R_UNABLE_TO_FIND_PUBLIC_KEY_PARAMETERS      239
+#define SSL_R_UNABLE_TO_FIND_SSL_METHOD                         240
+#define SSL_R_UNABLE_TO_LOAD_SSL2_MD5_ROUTINES          241
+#define SSL_R_UNABLE_TO_LOAD_SSL3_MD5_ROUTINES          242
+#define SSL_R_UNABLE_TO_LOAD_SSL3_SHA1_ROUTINES                 243
+#define SSL_R_UNEXPECTED_MESSAGE                        244
+#define SSL_R_UNEXPECTED_RECORD                                 245
+#define SSL_R_UNKNOWN_ALERT_TYPE                        246
+#define SSL_R_UNKNOWN_CERTIFICATE_TYPE                  247
+#define SSL_R_UNKNOWN_CIPHER_RETURNED                   248
+#define SSL_R_UNKNOWN_CIPHER_TYPE                       249
+#define SSL_R_UNKNOWN_KEY_EXCHANGE_TYPE                         250
+#define SSL_R_UNKNOWN_PKEY_TYPE                                 251
+#define SSL_R_UNKNOWN_PROTOCOL                          252
+#define SSL_R_UNKNOWN_REMOTE_ERROR_TYPE                         253
+#define SSL_R_UNKNOWN_SSL_VERSION                       254
+#define SSL_R_UNKNOWN_STATE                             255
+#define SSL_R_UNSUPPORTED_CIPHER                        256
+#define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM                 257
+#define SSL_R_UNSUPPORTED_PROTOCOL                      258
+#define SSL_R_UNSUPPORTED_SSL_VERSION                   259
+#define SSL_R_WRITE_BIO_NOT_SET                                 260
+#define SSL_R_WRONG_CIPHER_RETURNED                     261
+#define SSL_R_WRONG_MESSAGE_TYPE                        262
+#define SSL_R_WRONG_NUMBER_OF_KEY_BITS                  263
+#define SSL_R_WRONG_SIGNATURE_LENGTH                    264
+#define SSL_R_WRONG_SIGNATURE_SIZE                      265
+#define SSL_R_WRONG_SSL_VERSION                                 266
+#define SSL_R_WRONG_VERSION_NUMBER                      267
+#define SSL_R_X509_LIB                                  268
+#define SSL_R_X509_VERIFICATION_SETUP_PROBLEMS          269
  
 #ifdef  __cplusplus
 }