Fix indent comment corruption issue
[openssl.git] / ssl / ssl.h
index e4a0ff1f7e996e8302e560c30a2cc1d0fbd06f07..4816abd908764c71e0689f1a06d48739081da389 100644 (file)
--- a/ssl/ssl.h
+++ b/ssl/ssl.h
@@ -171,7 +171,8 @@ extern "C" {
 #endif
 
 /* SSLeay version number for ASN.1 encoding of the session information */
-/* Version 0 - initial version
+/*-
+ * Version 0 - initial version
  * Version 1 - added the optional peer certificate
  */
 #define SSL_SESSION_ASN1_VERSION 0x0001
@@ -245,11 +246,13 @@ extern "C" {
 #define SSL_TXT_kDHd           "kDHd"
 #define SSL_TXT_kDH            "kDH"
 #define SSL_TXT_kEDH           "kEDH"
+#define SSL_TXT_kDHE           "kDHE" /* alias for kEDH */
 #define SSL_TXT_kKRB5          "kKRB5"
 #define SSL_TXT_kECDHr         "kECDHr"
 #define SSL_TXT_kECDHe         "kECDHe"
 #define SSL_TXT_kECDH          "kECDH"
 #define SSL_TXT_kEECDH         "kEECDH"
+#define SSL_TXT_kECDHE         "kECDHE" /* alias for kEECDH */
 #define SSL_TXT_kPSK            "kPSK"
 #define SSL_TXT_kGOST          "kGOST"
 #define SSL_TXT_kSRP           "kSRP"
@@ -264,14 +267,17 @@ extern "C" {
 #define SSL_TXT_aGOST94        "aGOST94"
 #define SSL_TXT_aGOST01 "aGOST01"
 #define SSL_TXT_aGOST  "aGOST"
+#define SSL_TXT_aSRP            "aSRP"
 
 #define        SSL_TXT_DSS             "DSS"
 #define SSL_TXT_DH             "DH"
 #define SSL_TXT_EDH            "EDH" /* same as "kEDH:-ADH" */
+#define SSL_TXT_DHE            "DHE" /* alias for EDH */
 #define SSL_TXT_ADH            "ADH"
 #define SSL_TXT_RSA            "RSA"
 #define SSL_TXT_ECDH           "ECDH"
 #define SSL_TXT_EECDH          "EECDH" /* same as "kEECDH:-AECDH" */
+#define SSL_TXT_ECDHE          "ECDHE" /* alias for ECDHE" */
 #define SSL_TXT_AECDH          "AECDH"
 #define SSL_TXT_ECDSA          "ECDSA"
 #define SSL_TXT_KRB5           "KRB5"
@@ -311,7 +317,7 @@ extern "C" {
 
 #define SSL_TXT_ALL            "ALL"
 
-/*
+/*-
  * COMPLEMENTOF* definitions. These identifiers are used to (de-select)
  * ciphers normally not being used.
  * Example: "RC4" will activate all ciphers using RC4 including ciphers
@@ -384,55 +390,24 @@ typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, i
 typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, STACK_OF(SSL_CIPHER) *peer_ciphers, SSL_CIPHER **cipher, void *arg);
 
 #ifndef OPENSSL_NO_TLSEXT
-/* Callbacks and structures for handling custom TLS Extensions: 
- *   cli_ext_first_cb  - sends data for ClientHello TLS Extension
- *   cli_ext_second_cb - receives data from ServerHello TLS Extension
- *   srv_ext_first_cb  - receives data from ClientHello TLS Extension
- *   srv_ext_second_cb - sends data for ServerHello TLS Extension
- *
- *   All these functions return nonzero on success.  Zero will terminate
- *   the handshake (and return a specific TLS Fatal alert, if the function
- *   declaration has an "al" parameter).  -1 for the "sending" functions
- *   will cause the TLS Extension to be omitted.
- * 
- *   "ext_type" is a TLS "ExtensionType" from 0-65535.
- *   "in" is a pointer to TLS "extension_data" being provided to the cb.
- *   "out" is used by the callback to return a pointer to "extension data"
- *     which OpenSSL will later copy into the TLS handshake.  The contents
- *     of this buffer should not be changed until the handshake is complete.
- *   "inlen" and "outlen" are TLS Extension lengths from 0-65535.
- *   "al" is a TLS "AlertDescription" from 0-255 which WILL be sent as a 
- *     fatal TLS alert, if the callback returns zero.
- */
-typedef int (*custom_cli_ext_first_cb_fn)(SSL *s, unsigned short ext_type,
-                                         const unsigned char **out,
-                                         unsigned short *outlen, void *arg);
-typedef int (*custom_cli_ext_second_cb_fn)(SSL *s, unsigned short ext_type,
-                                          const unsigned char *in,
-                                          unsigned short inlen, int *al,
-                                          void *arg); 
-
-typedef int (*custom_srv_ext_first_cb_fn)(SSL *s, unsigned short ext_type,
-                                         const unsigned char *in,
-                                         unsigned short inlen, int *al,
-                                         void *arg);
-typedef int (*custom_srv_ext_second_cb_fn)(SSL *s, unsigned short ext_type,
-                                          const unsigned char **out,
-                                          unsigned short *outlen, void *arg); 
 
-typedef struct {
-       unsigned short ext_type;
-       custom_cli_ext_first_cb_fn fn1; 
-       custom_cli_ext_second_cb_fn fn2; 
-       void *arg;
-} custom_cli_ext_record;
+/* Typedefs for handling custom extensions */
+
+typedef int (*custom_ext_add_cb)(SSL *s, unsigned int ext_type,
+                                const unsigned char **out,
+                                size_t *outlen, int *al,
+                                void *add_arg);
+
+typedef void (*custom_ext_free_cb)(SSL *s, unsigned int ext_type,
+                                  const unsigned char *out,
+                                  void *add_arg);
+
+typedef int (*custom_ext_parse_cb)(SSL *s, unsigned int ext_type,
+                                  const unsigned char *in,
+                                  size_t inlen, int *al,
+                                  void *parse_arg);
+
 
-typedef struct {
-       unsigned short ext_type;
-       custom_srv_ext_first_cb_fn fn1; 
-       custom_srv_ext_second_cb_fn fn2; 
-       void *arg;
-} custom_srv_ext_record;
 #endif
 
 #ifndef OPENSSL_NO_SSL_INTERN
@@ -494,7 +469,8 @@ struct ssl_method_st
        long (*ssl_ctx_callback_ctrl)(SSL_CTX *s, int cb_id, void (*fp)(void));
        };
 
-/* Lets make this into an ASN.1 type structure as follows
+/*-
+ * Lets make this into an ASN.1 type structure as follows
  * SSL_SESSION_ID ::= SEQUENCE {
  *     version                 INTEGER,        -- structure version number
  *     SSLversion              INTEGER,        -- SSL version number
@@ -596,13 +572,6 @@ struct ssl_session_st
 #endif
 #ifndef OPENSSL_NO_SRP
        char *srp_username;
-#endif
-#ifndef OPENSSL_NO_TLSEXT
-       /* Used by client: the proof for this session.
-        * We store it outside the sess_cert structure, since the proof
-        * is received before the certificate. */
-       unsigned char *audit_proof;
-       size_t audit_proof_length;
 #endif
        };
 
@@ -613,13 +582,18 @@ struct ssl_session_st
 /* Allow initial connection to servers that don't support RI */
 #define SSL_OP_LEGACY_SERVER_CONNECT                   0x00000004L
 #define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG                0x00000008L
-#define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG             0x00000010L
+#define SSL_OP_TLSEXT_PADDING                          0x00000010L
 #define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER              0x00000020L
 #define SSL_OP_SAFARI_ECDHE_ECDSA_BUG                  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
 
+/* Hasn't done anything since OpenSSL 0.9.7h, retained for compatibility */
+#define SSL_OP_MSIE_SSLV2_RSA_PADDING                  0x0
+/* Refers to ancient SSLREF and SSLv2, retained for compatibility */
+#define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG             0x0
+
 /* Disable SSL 3.0/TLS 1.0 CBC vulnerability workaround that was added
  * in OpenSSL 0.9.6d.  Usually (depending on the application protocol)
  * the workaround is not needed.  Unfortunately some broken SSL/TLS
@@ -650,9 +624,8 @@ struct ssl_session_st
 #define SSL_OP_SINGLE_ECDH_USE                         0x00080000L
 /* If set, always create a new key when using tmp_dh parameters */
 #define SSL_OP_SINGLE_DH_USE                           0x00100000L
-/* Set to always use the tmp_rsa key when doing RSA operations,
- * even when this violates protocol specs */
-#define SSL_OP_EPHEMERAL_RSA                           0x00200000L
+/* Does nothing: retained for compatibiity */
+#define SSL_OP_EPHEMERAL_RSA                           0x0
 /* Set on servers to choose the cipher according to the server's
  * preferences */
 #define SSL_OP_CIPHER_SERVER_PREFERENCE                        0x00400000L
@@ -713,6 +686,15 @@ struct ssl_session_st
  */
 #define SSL_MODE_SEND_CLIENTHELLO_TIME 0x00000020L
 #define SSL_MODE_SEND_SERVERHELLO_TIME 0x00000040L
+/* Send TLS_FALLBACK_SCSV in the ClientHello.
+ * To be set only by applications that reconnect with a downgraded protocol
+ * version; see draft-ietf-tls-downgrade-scsv-00 for details.
+ *
+ * DO NOT ENABLE THIS if your application attempts a normal handshake.
+ * Only use this in explicit fallback retries, following the guidance
+ * in draft-ietf-tls-downgrade-scsv-00.
+ */
+#define SSL_MODE_SEND_FALLBACK_SCSV 0x00000080L
 
 /* Cert related flags */
 /* Many implementations ignore some aspects of the TLS standards such as
@@ -732,9 +714,15 @@ struct ssl_session_st
 
 /* Flags for building certificate chains */
 /* Treat any existing certificates as untrusted CAs */
-#define SSL_BUILD_CHAIN_FLAG_UNTRUSTED 0x1
+#define SSL_BUILD_CHAIN_FLAG_UNTRUSTED         0x1
 /* Don't include root CA in chain */
-#define SSL_BUILD_CHAIN_FLAG_NO_ROOT   0x2
+#define SSL_BUILD_CHAIN_FLAG_NO_ROOT           0x2
+/* Just check certificates already there */
+#define SSL_BUILD_CHAIN_FLAG_CHECK             0x4
+/* Ignore verification errors */
+#define SSL_BUILD_CHAIN_FLAG_IGNORE_ERROR      0x8
+/* Clear verification errors from queue */
+#define SSL_BUILD_CHAIN_FLAG_CLEAR_ERROR       0x10
 
 /* Flags returned by SSL_check_chain */
 /* Certificate can be used with this session */
@@ -763,6 +751,12 @@ struct ssl_session_st
 #define SSL_CONF_FLAG_CLIENT           0x4
 #define SSL_CONF_FLAG_SERVER           0x8
 #define SSL_CONF_FLAG_SHOW_ERRORS      0x10
+#define SSL_CONF_FLAG_CERTIFICATE      0x20
+/* Configuration value types */
+#define SSL_CONF_TYPE_UNKNOWN          0x0
+#define SSL_CONF_TYPE_STRING           0x1
+#define SSL_CONF_TYPE_FILE             0x2
+#define SSL_CONF_TYPE_DIR              0x3
 
 /* Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value,
  * they cannot be used to clear bits. */
@@ -794,6 +788,10 @@ struct ssl_session_st
         SSL_ctrl((ssl),SSL_CTRL_MODE,0,NULL)
 #define SSL_set_mtu(ssl, mtu) \
         SSL_ctrl((ssl),SSL_CTRL_SET_MTU,(mtu),NULL)
+#define DTLS_set_link_mtu(ssl, mtu) \
+        SSL_ctrl((ssl),DTLS_CTRL_SET_LINK_MTU,(mtu),NULL)
+#define DTLS_get_link_min_mtu(ssl) \
+        SSL_ctrl((ssl),DTLS_CTRL_GET_LINK_MIN_MTU,0,NULL)
 
 #define SSL_get_secure_renegotiation_support(ssl) \
        SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL)
@@ -995,7 +993,8 @@ struct ssl_ctx_st
 
        /* Default values used when no per-SSL value is defined follow */
 
-       void (*info_callback)(const SSL *ssl,int type,int val); /* used if SSL's info_callback is NULL */
+       /* used if SSL's info_callback is NULL */
+       void (*info_callback)(const SSL *ssl,int type,int val);
 
        /* what we put in client cert requests */
        STACK_OF(X509_NAME) *client_CA;
@@ -1017,7 +1016,8 @@ struct ssl_ctx_st
        int verify_mode;
        unsigned int sid_ctx_length;
        unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH];
-       int (*default_verify_callback)(int ok,X509_STORE_CTX *ctx); /* called 'verify_callback' in the SSL */
+       /* called 'verify_callback' in the SSL */
+       int (*default_verify_callback)(int ok,X509_STORE_CTX *ctx);
 
        /* Default generate session ID callback. */
        GEN_SESSION_CB generate_session_id;
@@ -1037,7 +1037,7 @@ struct ssl_ctx_st
         */
        unsigned int max_send_fragment;
 
-#ifndef OPENSSL_ENGINE
+#ifndef OPENSSL_NO_ENGINE
        /* Engine to pass requests for client certs to
         */
        ENGINE *client_cert_engine;
@@ -1106,18 +1106,22 @@ struct ssl_ctx_st
                                    void *arg);
        void *next_proto_select_cb_arg;
 # endif
+       /* SRTP profiles we are willing to do from RFC 5764 */
+       STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles;
 
        /* ALPN information
         * (we are in the process of transitioning from NPN to ALPN.) */
 
-       /* For a server, this contains a callback function that allows the
+       /*-
+        * For a server, this contains a callback function that allows the
         * server to select the protocol for the connection.
         *   out: on successful return, this must point to the raw protocol
         *        name (without the length prefix).
         *   outlen: on successful return, this contains the length of |*out|.
         *   in: points to the client's list of supported protocols in
         *       wire-format.
-        *   inlen: the length of |in|. */
+        *   inlen: the length of |in|. 
+        */
        int (*alpn_select_cb)(SSL *s,
                              const unsigned char **out,
                              unsigned char *outlen,
@@ -1131,8 +1135,6 @@ struct ssl_ctx_st
        unsigned char* alpn_client_proto_list;
        unsigned alpn_client_proto_list_len;
 
-        /* SRTP profiles we are willing to do from RFC 5764 */
-       STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles;
 # ifndef OPENSSL_NO_EC
        /* EC extension values inherited by SSL structure */
        size_t tlsext_ecpointformatlist_length;
@@ -1140,15 +1142,7 @@ struct ssl_ctx_st
        size_t tlsext_ellipticcurvelist_length;
        unsigned char *tlsext_ellipticcurvelist;
 # endif /* OPENSSL_NO_EC */
-       int (*tlsext_authz_server_audit_proof_cb)(SSL *s, void *arg);
-       void *tlsext_authz_server_audit_proof_cb_arg;
 #endif
-
-       /* Arrays containing the callbacks for custom TLS Extensions. */
-       custom_cli_ext_record *custom_cli_ext_records;
-       size_t custom_cli_ext_records_count;
-       custom_srv_ext_record *custom_srv_ext_records;
-       size_t custom_srv_ext_records_count;
        };
 
 #endif
@@ -1217,17 +1211,19 @@ void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s,
                                                 const unsigned char *in,
                                                 unsigned int inlen, void *arg),
                                      void *arg);
+void SSL_get0_next_proto_negotiated(const SSL *s,
+                                   const unsigned char **data, unsigned *len);
+#endif
 
+#ifndef OPENSSL_NO_TLSEXT
 int SSL_select_next_proto(unsigned char **out, unsigned char *outlen,
                          const unsigned char *in, unsigned int inlen,
                          const unsigned char *client, unsigned int client_len);
-void SSL_get0_next_proto_negotiated(const SSL *s,
-                                   const unsigned char **data, unsigned *len);
+#endif
 
 #define OPENSSL_NPN_UNSUPPORTED        0
 #define OPENSSL_NPN_NEGOTIATED 1
 #define OPENSSL_NPN_NO_OVERLAP 2
-#endif
 
 int SSL_CTX_set_alpn_protos(SSL_CTX *ctx, const unsigned char* protos,
                            unsigned protos_len);
@@ -1270,29 +1266,24 @@ const char *SSL_get_psk_identity(const SSL *s);
 #endif
 
 #ifndef OPENSSL_NO_TLSEXT
-/* Register callbacks to handle custom TLS Extensions as client or server.
- * 
- * Returns nonzero on success.  You cannot register twice for the same 
- * extension number, and registering for an extension number already 
- * handled by OpenSSL will succeed, but the callbacks will not be invoked.
- *
- * NULL can be registered for any callback function.  For the client
- * functions, a NULL custom_cli_ext_first_cb_fn sends an empty ClientHello
- * Extension, and a NULL custom_cli_ext_second_cb_fn ignores the ServerHello
- * response (if any).
- *
- * For the server functions, a NULL custom_srv_ext_first_cb_fn means the
- * ClientHello extension's data will be ignored, but the extension will still
- * be noted and custom_srv_ext_second_cb_fn will still be invoked.  A NULL
- * custom_srv_ext_second_cb doesn't send a ServerHello extension.
- */
-int SSL_CTX_set_custom_cli_ext(SSL_CTX *ctx, unsigned short ext_type,
-                              custom_cli_ext_first_cb_fn fn1, 
-                              custom_cli_ext_second_cb_fn fn2, void *arg);
+/* Register callbacks to handle custom TLS Extensions for client or server. */
+
+int SSL_CTX_add_client_custom_ext(SSL_CTX *ctx, unsigned int ext_type,
+                                 custom_ext_add_cb add_cb,
+                                 custom_ext_free_cb free_cb,
+                                 void *add_arg,
+                                 custom_ext_parse_cb parse_cb,
+                                 void *parse_arg);
+
+int SSL_CTX_add_server_custom_ext(SSL_CTX *ctx, unsigned int ext_type,
+                                 custom_ext_add_cb add_cb,
+                                 custom_ext_free_cb free_cb,
+                                 void *add_arg,
+                                 custom_ext_parse_cb parse_cb,
+                                 void *parse_arg);
+
+int SSL_extension_supported(unsigned int ext_type);
 
-int SSL_CTX_set_custom_srv_ext(SSL_CTX *ctx, unsigned short ext_type,
-                              custom_srv_ext_first_cb_fn fn1, 
-                              custom_srv_ext_second_cb_fn fn2, void *arg);
 #endif
 
 #define SSL_NOTHING    1
@@ -1317,22 +1308,28 @@ struct ssl_st
         * (one of SSL2_VERSION, SSL3_VERSION, TLS1_VERSION, DTLS1_VERSION)
         */
        int version;
-       int type; /* SSL_ST_CONNECT or SSL_ST_ACCEPT */
+       /* SSL_ST_CONNECT or SSL_ST_ACCEPT */
+       int type;
 
-       const SSL_METHOD *method; /* SSLv3 */
+       /* SSLv3 */
+       const SSL_METHOD *method;
 
        /* There are 2 BIO's even though they are normally both the
         * same.  This is so data can be read and written to different
         * handlers */
 
 #ifndef OPENSSL_NO_BIO
-       BIO *rbio; /* used by SSL_read */
-       BIO *wbio; /* used by SSL_write */
-       BIO *bbio; /* used during session-id reuse to concatenate
-                   * messages */
+       /* used by SSL_read */
+       BIO *rbio;
+       /* used by SSL_write */
+       BIO *wbio;
+       /* used during session-id reuse to concatenate messages */
+       BIO *bbio;
 #else
-       char *rbio; /* used by SSL_read */
-       char *wbio; /* used by SSL_write */
+       /* used by SSL_read */
+       char *rbio;
+       /* used by SSL_write */
+       char *wbio;
        char *bbio;
 #endif
        /* This holds a variable that indicates what we were doing
@@ -1353,17 +1350,24 @@ struct ssl_st
         * test instead of an "init" member.
         */
 
-       int server;     /* are we the server side? - mostly used by SSL_clear*/
+       /* are we the server side? - mostly used by SSL_clear*/
+       int server;
 
-       int new_session;/* Generate a new session or reuse an old one.
-                        * NB: For servers, the 'new' session may actually be a previously
-                        * cached session or even the previous session unless
-                        * SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION is set */
-       int quiet_shutdown;/* don't send shutdown packets */
-       int shutdown;   /* we have shut things down, 0x01 sent, 0x02
-                        * for received */
-       int state;      /* where we are */
-       int rstate;     /* where we are when reading */
+       /*
+        * Generate a new session or reuse an old one.
+        * NB: For servers, the 'new' session may actually be a previously
+        * cached session or even the previous session unless
+        * SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION is set
+        */
+       int new_session;
+       /* don't send shutdown packets */
+       int quiet_shutdown;
+       /* we have shut things down, 0x01 sent, 0x02 for received */
+       int shutdown;
+       /* where we are */
+       int state;
+       /* where we are when reading */
+       int rstate;
 
        BUF_MEM *init_buf;      /* buffer used during init */
        void *init_msg;         /* pointer to handshake message body, set by ssl3_get_message() */
@@ -1435,17 +1439,25 @@ struct ssl_st
        GEN_SESSION_CB generate_session_id;
 
        /* Used in SSL2 and SSL3 */
-       int verify_mode;        /* 0 don't care about verify failure.
-                                * 1 fail if verify fails */
-       int (*verify_callback)(int ok,X509_STORE_CTX *ctx); /* fail if callback returns 0 */
+       /*
+        * 0 don't care about verify failure.
+        * 1 fail if verify fails
+        */
+       int verify_mode;
+       /* fail if callback returns 0 */
+       int (*verify_callback)(int ok,X509_STORE_CTX *ctx);
 
-       void (*info_callback)(const SSL *ssl,int type,int val); /* optional informational callback */
+       /* optional informational callback */
+       void (*info_callback)(const SSL *ssl,int type,int val);
 
-       int error;              /* error bytes to be written */
-       int error_code;         /* actual code */
+       /* error bytes to be written */
+       int error;
+       /* actual code */
+       int error_code;
 
 #ifndef OPENSSL_NO_KRB5
-       KSSL_CTX *kssl_ctx;     /* Kerberos 5 context */
+       /* Kerberos 5 context */
+       KSSL_CTX *kssl_ctx;
 #endif /* OPENSSL_NO_KRB5 */
 
 #ifndef OPENSSL_NO_PSK
@@ -1469,12 +1481,14 @@ struct ssl_st
        STACK_OF(X509_NAME) *client_CA;
 
        int references;
-       unsigned long options; /* protocol behaviour */
-       unsigned long mode; /* API behaviour */
+       /* protocol behaviour */
+       unsigned long options;
+       /* API behaviour */
+       unsigned long mode;
        long max_cert_list;
        int first_packet;
-       int client_version;     /* what was passed, used for
-                                * SSLv3/TLS rollback check */
+       /* what was passed, used for SSLv3/TLS rollback check */
+       int client_version;
        unsigned int max_send_fragment;
 #ifndef OPENSSL_NO_TLSEXT
        /* TLS extension debug callback */
@@ -1483,11 +1497,13 @@ struct ssl_st
                                        void *arg);
        void *tlsext_debug_arg;
        char *tlsext_hostname;
-       int servername_done;   /* no further mod of servername 
-                                 0 : call the servername extension callback.
-                                 1 : prepare 2, allow last ack just after in server callback.
-                                 2 : don't call servername callback, no ack in server hello
-                              */
+    /*-
+     * no further mod of servername 
+     * 0 : call the servername extension callback.
+     * 1 : prepare 2, allow last ack just after in server callback.
+     * 2 : don't call servername callback, no ack in server hello
+     */
+       int servername_done;
        /* certificate status request info */
        /* Status type or -1 if no status type */
        int tlsext_status_type;
@@ -1504,9 +1520,11 @@ struct ssl_st
        int tlsext_ticket_expected;
 #ifndef OPENSSL_NO_EC
        size_t tlsext_ecpointformatlist_length;
-       unsigned char *tlsext_ecpointformatlist; /* our list */
+       /* our list */
+       unsigned char *tlsext_ecpointformatlist;
        size_t tlsext_ellipticcurvelist_length;
-       unsigned char *tlsext_ellipticcurvelist; /* our list */
+       /* our list */
+       unsigned char *tlsext_ellipticcurvelist;
 #endif /* OPENSSL_NO_EC */
 
        /* draft-rescorla-tls-opaque-prf-input-00.txt information to be used for handshakes */
@@ -1540,36 +1558,43 @@ struct ssl_st
 
 #define session_ctx initial_ctx
 
-       STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles;  /* What we'll do */
-       SRTP_PROTECTION_PROFILE *srtp_profile;            /* What's been chosen */
-
-       unsigned int tlsext_heartbeat;  /* Is use of the Heartbeat extension negotiated?
-                                          0: disabled
-                                          1: enabled
-                                          2: enabled, but not allowed to send Requests
-                                        */
-       unsigned int tlsext_hb_pending; /* Indicates if a HeartbeatRequest is in flight */
-       unsigned int tlsext_hb_seq;     /* HeartbeatRequest sequence number */
-
-       /* For a client, this contains the list of supported protocols in wire
-        * format. */
-       unsigned char* alpn_client_proto_list;
-       unsigned alpn_client_proto_list_len;
+       /* What we'll do */
+       STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles;
+       /* What's been chosen */
+       SRTP_PROTECTION_PROFILE *srtp_profile;
+
+       /*-
+        * Is use of the Heartbeat extension negotiated?
+        * 0: disabled
+        * 1: enabled
+        * 2: enabled, but not allowed to send Requests
+        */
+       unsigned int tlsext_heartbeat;
+       /* Indicates if a HeartbeatRequest is in flight */
+       unsigned int tlsext_hb_pending;
+       /* HeartbeatRequest sequence number */
+       unsigned int tlsext_hb_seq;
 #else
 #define session_ctx ctx
 #endif /* OPENSSL_NO_TLSEXT */
 
-       int renegotiate;/* 1 if we are renegotiating.
-                        * 2 if we are a server and are inside a handshake
-                        * (i.e. not just sending a HelloRequest) */
+    /*-
+     * 1 if we are renegotiating.
+     * 2 if we are a server and are inside a handshake
+     * (i.e. not just sending a HelloRequest)
+     */
+       int renegotiate;
 
 #ifndef OPENSSL_NO_SRP
-       SRP_CTX srp_ctx; /* ctx for SRP authentication */
-#endif
-#ifndef OPENSSL_NO_DANE
-       unsigned char *tlsa_record;
-       int tlsa_witness;
+       /* ctx for SRP authentication */
+       SRP_CTX srp_ctx;
 #endif
+#ifndef OPENSSL_NO_TLSEXT
+       /* For a client, this contains the list of supported protocols in wire
+        * format. */
+       unsigned char* alpn_client_proto_list;
+       unsigned alpn_client_proto_list_len;
+#endif /* OPENSSL_NO_TLSEXT */
        };
 
 #endif
@@ -1640,10 +1665,12 @@ extern "C" {
 #define SSL_ST_READ_BODY                       0xF1
 #define SSL_ST_READ_DONE                       0xF2
 
-/* Obtain latest Finished message
+/*-
+ * Obtain latest Finished message
  *   -- that we sent (SSL_get_finished)
  *   -- that we expected from peer (SSL_get_peer_finished).
- * Returns length (0 == no Finished so far), copies up to 'count' bytes. */
+ * Returns length (0 == no Finished so far), copies up to 'count' bytes.
+ */
 size_t SSL_get_finished(const SSL *s, void *buf, size_t count);
 size_t SSL_get_peer_finished(const SSL *s, void *buf, size_t count);
 
@@ -1717,6 +1744,7 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION)
 #define SSL_AD_BAD_CERTIFICATE_STATUS_RESPONSE TLS1_AD_BAD_CERTIFICATE_STATUS_RESPONSE
 #define SSL_AD_BAD_CERTIFICATE_HASH_VALUE TLS1_AD_BAD_CERTIFICATE_HASH_VALUE
 #define SSL_AD_UNKNOWN_PSK_IDENTITY     TLS1_AD_UNKNOWN_PSK_IDENTITY /* fatal */
+#define SSL_AD_INAPPROPRIATE_FALLBACK  TLS1_AD_INAPPROPRIATE_FALLBACK /* fatal */
 
 #define SSL_ERROR_NONE                 0
 #define SSL_ERROR_SSL                  1
@@ -1814,9 +1842,6 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION)
 #define SSL_CTRL_GET_TLS_EXT_HEARTBEAT_PENDING         86
 #define SSL_CTRL_SET_TLS_EXT_HEARTBEAT_NO_REQUESTS     87
 #endif
-/* Callback for verifying audit proofs (client only) */
-#define SSL_CTRL_SET_TLSEXT_AUTHZ_SERVER_AUDIT_PROOF_CB 95
-#define SSL_CTRL_SET_TLSEXT_AUTHZ_SERVER_AUDIT_PROOF_CB_ARG 96
 #endif /* OPENSSL_NO_TLSEXT */
 
 #define DTLS_CTRL_GET_TIMEOUT          73
@@ -1853,9 +1878,19 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION)
 #define SSL_CTRL_GET_SERVER_TMP_KEY            109
 #define SSL_CTRL_GET_RAW_CIPHERLIST            110
 #define SSL_CTRL_GET_EC_POINT_FORMATS          111
-#define SSL_CTRL_GET_TLSA_RECORD               112
-#define SSL_CTRL_SET_TLSA_RECORD               113
-#define SSL_CTRL_PULL_TLSA_RECORD              114
+
+#define SSL_CTRL_GET_CHAIN_CERTS               115
+#define SSL_CTRL_SELECT_CURRENT_CERT           116
+#define SSL_CTRL_SET_CURRENT_CERT              117
+
+#define SSL_CTRL_CHECK_PROTO_VERSION           119
+#define DTLS_CTRL_SET_LINK_MTU                 120
+#define DTLS_CTRL_GET_LINK_MIN_MTU             121
+
+
+#define SSL_CERT_SET_FIRST                     1
+#define SSL_CERT_SET_NEXT                      2
+#define SSL_CERT_SET_SERVER                    3
 
 #define DTLSv1_get_timeout(ssl, arg) \
        SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)arg)
@@ -1895,6 +1930,8 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION)
        SSL_CTX_ctrl(ctx,SSL_CTRL_EXTRA_CHAIN_CERT,0,(char *)x509)
 #define SSL_CTX_get_extra_chain_certs(ctx,px509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,0,px509)
+#define SSL_CTX_get_extra_chain_certs_only(ctx,px509) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_GET_EXTRA_CHAIN_CERTS,1,px509)
 #define SSL_CTX_clear_extra_chain_certs(ctx) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_CLEAR_EXTRA_CHAIN_CERTS,0,NULL)
 
@@ -1906,8 +1943,17 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION)
        SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)x509)
 #define SSL_CTX_add1_chain_cert(ctx,x509) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)x509)
+#define SSL_CTX_get0_chain_certs(ctx,px509) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509)
+#define SSL_CTX_clear_chain_certs(ctx) \
+       SSL_CTX_set0_chain(ctx,NULL)
 #define SSL_CTX_build_cert_chain(ctx, flags) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL)
+#define SSL_CTX_select_current_cert(ctx,x509) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)x509)
+
+#define SSL_CTX_set_current_cert(ctx, op) \
+       SSL_CTX_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL)
 
 #define SSL_CTX_set0_verify_cert_store(ctx,st) \
        SSL_CTX_ctrl(ctx,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)st)
@@ -1926,8 +1972,17 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION)
        SSL_ctrl(ctx,SSL_CTRL_CHAIN_CERT,0,(char *)x509)
 #define SSL_add1_chain_cert(ctx,x509) \
        SSL_ctrl(ctx,SSL_CTRL_CHAIN_CERT,1,(char *)x509)
+#define SSL_get0_chain_certs(ctx,px509) \
+       SSL_ctrl(ctx,SSL_CTRL_GET_CHAIN_CERTS,0,px509)
+#define SSL_clear_chain_certs(ctx) \
+       SSL_set0_chain(ctx,NULL)
 #define SSL_build_cert_chain(s, flags) \
        SSL_ctrl(s,SSL_CTRL_BUILD_CERT_CHAIN, flags, NULL)
+#define SSL_select_current_cert(ctx,x509) \
+       SSL_ctrl(ctx,SSL_CTRL_SELECT_CURRENT_CERT,0,(char *)x509)
+#define SSL_set_current_cert(ctx,op) \
+       SSL_ctrl(ctx,SSL_CTRL_SET_CURRENT_CERT, op, NULL)
+
 #define SSL_set0_verify_cert_store(s,st) \
        SSL_ctrl(s,SSL_CTRL_SET_VERIFY_CERT_STORE,0,(char *)st)
 #define SSL_set1_verify_cert_store(s,st) \
@@ -1987,15 +2042,10 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION)
        SSL_ctrl(s,SSL_CTRL_GET_SERVER_TMP_KEY,0,pk)
 
 #define SSL_get0_raw_cipherlist(s, plst) \
-       SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,plst)
+       SSL_ctrl(s,SSL_CTRL_GET_RAW_CIPHERLIST,0,(char *)plst)
 
 #define SSL_get0_ec_point_formats(s, plst) \
-       SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,plst)
-
-#define SSL_set_tlsa_record(s,tlsa) \
-       SSL_ctrl(s,SSL_CTRL_SET_TLSA_RECORD,0,(void *)tlsa)
-#define SSL_pull_tlsa_record(s,host,port) \
-       SSL_ctrl(s,SSL_CTRL_PULL_TLSA_RECORD,port,host)
+       SSL_ctrl(s,SSL_CTRL_GET_EC_POINT_FORMATS,0,(char *)plst)
 
 #ifndef OPENSSL_NO_BIO
 BIO_METHOD *BIO_f_ssl(void);
@@ -2061,17 +2111,6 @@ int      SSL_use_certificate(SSL *ssl, X509 *x);
 int    SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len);
 
 #ifndef OPENSSL_NO_TLSEXT
-/* Set authz data for the current active cert. */
-int    SSL_CTX_use_authz(SSL_CTX *ctx, unsigned char *authz, size_t authz_length);
-int    SSL_use_authz(SSL *ssl, unsigned char *authz, size_t authz_length);
-/* Get the authz of type 'type' associated with the current active cert. */
-const unsigned char *SSL_CTX_get_authz_data(SSL_CTX *ctx, unsigned char type,
-                                           size_t *data_length);
-#ifndef OPENSSL_NO_STDIO
-int    SSL_CTX_use_authz_file(SSL_CTX *ctx, const char *file);
-int    SSL_use_authz_file(SSL *ssl, const char *file);
-#endif
-
 /* Set serverinfo data for the current active cert. */
 int    SSL_CTX_use_serverinfo(SSL_CTX *ctx, const unsigned char *serverinfo,
                               size_t serverinfo_length);
@@ -2125,10 +2164,6 @@ int      SSL_SESSION_print_fp(FILE *fp,const SSL_SESSION *ses);
 #ifndef OPENSSL_NO_BIO
 int    SSL_SESSION_print(BIO *fp,const SSL_SESSION *ses);
 #endif
-#ifndef OPENSSL_NO_TLSEXT
-unsigned char *SSL_SESSION_get_tlsext_authz_server_audit_proof(SSL_SESSION *s,
-       size_t *proof_length);
-#endif
 void   SSL_SESSION_free(SSL_SESSION *ses);
 int    i2d_SSL_SESSION(SSL_SESSION *in,unsigned char **pp);
 int    SSL_set_session(SSL *to, SSL_SESSION *session);
@@ -2186,6 +2221,9 @@ int SSL_set_trust(SSL *s, int trust);
 int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm);
 int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm);
 
+X509_VERIFY_PARAM *SSL_CTX_get0_param(SSL_CTX *ctx);
+X509_VERIFY_PARAM *SSL_get0_param(SSL *ssl);
+
 #ifndef OPENSSL_NO_SRP
 int SSL_CTX_set_srp_username(SSL_CTX *ctx,char *name);
 int SSL_CTX_set_srp_password(SSL_CTX *ctx,char *password);
@@ -2234,13 +2272,15 @@ const SSL_METHOD *SSLv2_server_method(void);    /* SSLv2 */
 const SSL_METHOD *SSLv2_client_method(void);   /* SSLv2 */
 #endif
 
+#ifndef OPENSSL_NO_SSL3_METHOD
 const SSL_METHOD *SSLv3_method(void);          /* SSLv3 */
 const SSL_METHOD *SSLv3_server_method(void);   /* SSLv3 */
 const SSL_METHOD *SSLv3_client_method(void);   /* SSLv3 */
+#endif
 
-const SSL_METHOD *SSLv23_method(void); /* SSLv3 but can rollback to v2 */
-const SSL_METHOD *SSLv23_server_method(void);  /* SSLv3 but can rollback to v2 */
-const SSL_METHOD *SSLv23_client_method(void);  /* SSLv3 but can rollback to v2 */
+const SSL_METHOD *SSLv23_method(void); /* Negotiate highest available SSL/TLS version */
+const SSL_METHOD *SSLv23_server_method(void);  /* Negotiate highest available SSL/TLS version */
+const SSL_METHOD *SSLv23_client_method(void);  /* Negotiate highest available SSL/TLS version */
 
 const SSL_METHOD *TLSv1_method(void);          /* TLSv1.0 */
 const SSL_METHOD *TLSv1_server_method(void);   /* TLSv1.0 */
@@ -2275,6 +2315,7 @@ int SSL_renegotiate_abbreviated(SSL *s);
 int SSL_renegotiate_pending(SSL *s);
 int SSL_shutdown(SSL *s);
 
+const SSL_METHOD *SSL_CTX_get_ssl_method(SSL_CTX *ctx);
 const SSL_METHOD *SSL_get_ssl_method(SSL *s);
 int SSL_set_ssl_method(SSL *s, const SSL_METHOD *method);
 const char *SSL_alert_type_string_long(int value);
@@ -2302,7 +2343,10 @@ STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk);
 SSL *SSL_dup(SSL *ssl);
 
 X509 *SSL_get_certificate(const SSL *ssl);
-/* EVP_PKEY */ struct evp_pkey_st *SSL_get_privatekey(SSL *ssl);
+/* EVP_PKEY */ struct evp_pkey_st *SSL_get_privatekey(const SSL *ssl);
+
+X509 *SSL_CTX_get0_certificate(const SSL_CTX *ctx);
+EVP_PKEY *SSL_CTX_get0_privatekey(const SSL_CTX *ctx);
 
 void SSL_CTX_set_quiet_shutdown(SSL_CTX *ctx,int mode);
 int SSL_CTX_get_quiet_shutdown(const SSL_CTX *ctx);
@@ -2406,6 +2450,8 @@ const COMP_METHOD *SSL_get_current_compression(SSL *s);
 const COMP_METHOD *SSL_get_current_expansion(SSL *s);
 const char *SSL_COMP_get_name(const COMP_METHOD *comp);
 STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void);
+STACK_OF(SSL_COMP) *SSL_COMP_set0_compression_methods(STACK_OF(SSL_COMP) *meths);
+void SSL_COMP_free_compression_methods(void);
 int SSL_COMP_add_compression_method(int id,COMP_METHOD *cm);
 #else
 const void *SSL_get_current_compression(SSL *s);
@@ -2431,6 +2477,7 @@ int SSL_cache_hit(SSL *s);
 int SSL_is_server(SSL *s);
 
 SSL_CONF_CTX *SSL_CONF_CTX_new(void);
+int SSL_CONF_CTX_finish(SSL_CONF_CTX *cctx);
 void SSL_CONF_CTX_free(SSL_CONF_CTX *cctx);
 unsigned int SSL_CONF_CTX_set_flags(SSL_CONF_CTX *cctx, unsigned int flags);
 unsigned int SSL_CONF_CTX_clear_flags(SSL_CONF_CTX *cctx, unsigned int flags);
@@ -2441,6 +2488,7 @@ void SSL_CONF_CTX_set_ssl_ctx(SSL_CONF_CTX *cctx, SSL_CTX *ctx);
 
 int SSL_CONF_cmd(SSL_CONF_CTX *cctx, const char *cmd, const char *value);
 int SSL_CONF_cmd_argv(SSL_CONF_CTX *cctx, int *pargc, char ***pargv);
+int SSL_CONF_cmd_value_type(SSL_CONF_CTX *cctx, const char *cmd);
 
 #ifndef OPENSSL_NO_SSL_TRACE
 void SSL_trace(int write_p, int version, int content_type,
@@ -2448,7 +2496,9 @@ void SSL_trace(int write_p, int version, int content_type,
 const char *SSL_CIPHER_standard_name(const SSL_CIPHER *c);
 #endif
 
-unsigned char *SSL_get_tlsa_record_byname(const char *name,int port,int type);
+#ifndef OPENSSL_NO_UNIT_TEST
+const struct openssl_ssl_test_functions *SSL_test_functions(void);
+#endif
 
 /* BEGIN ERROR CODES */
 /* The following lines are auto generated by the script mkerr.pl. Any changes
@@ -2459,8 +2509,6 @@ void ERR_load_SSL_strings(void);
 /* Error codes for the SSL functions. */
 
 /* Function codes. */
-#define SSL_F_AUTHZ_FIND_DATA                           330
-#define SSL_F_AUTHZ_VALIDATE                            323
 #define SSL_F_CHECK_SUITEB_CIPHER_LIST                  331
 #define SSL_F_CLIENT_CERTIFICATE                        100
 #define SSL_F_CLIENT_FINISHED                           167
@@ -2472,7 +2520,7 @@ void ERR_load_SSL_strings(void);
 #define SSL_F_DTLS1_ACCEPT                              246
 #define SSL_F_DTLS1_ADD_CERT_TO_BUF                     295
 #define SSL_F_DTLS1_BUFFER_RECORD                       247
-#define SSL_F_DTLS1_CHECK_TIMEOUT_NUM                   318
+#define SSL_F_DTLS1_CHECK_TIMEOUT_NUM                   316
 #define SSL_F_DTLS1_CLIENT_HELLO                        248
 #define SSL_F_DTLS1_CONNECT                             249
 #define SSL_F_DTLS1_ENC                                         250
@@ -2504,7 +2552,6 @@ void ERR_load_SSL_strings(void);
 #define SSL_F_GET_SERVER_HELLO                          109
 #define SSL_F_GET_SERVER_VERIFY                                 110
 #define SSL_F_I2D_SSL_SESSION                           111
-#define SSL_F_READ_AUTHZ                                329
 #define SSL_F_READ_N                                    112
 #define SSL_F_REQUEST_CERTIFICATE                       113
 #define SSL_F_SERVER_FINISH                             239
@@ -2574,8 +2621,8 @@ void ERR_load_SSL_strings(void);
 #define SSL_F_SSL3_SETUP_WRITE_BUFFER                   291
 #define SSL_F_SSL3_WRITE_BYTES                          158
 #define SSL_F_SSL3_WRITE_PENDING                        159
-#define SSL_F_SSL_ADD_CERT_CHAIN                        316
-#define SSL_F_SSL_ADD_CERT_TO_BUF                       317
+#define SSL_F_SSL_ADD_CERT_CHAIN                        318
+#define SSL_F_SSL_ADD_CERT_TO_BUF                       319
 #define SSL_F_SSL_ADD_CLIENTHELLO_RENEGOTIATE_EXT       298
 #define SSL_F_SSL_ADD_CLIENTHELLO_TLSEXT                277
 #define SSL_F_SSL_ADD_CLIENTHELLO_USE_SRTP_EXT          307
@@ -2610,7 +2657,6 @@ void ERR_load_SSL_strings(void);
 #define SSL_F_SSL_CTX_SET_SESSION_ID_CONTEXT            219
 #define SSL_F_SSL_CTX_SET_SSL_VERSION                   170
 #define SSL_F_SSL_CTX_SET_TRUST                                 229
-#define SSL_F_SSL_CTX_USE_AUTHZ                                 324
 #define SSL_F_SSL_CTX_USE_CERTIFICATE                   171
 #define SSL_F_SSL_CTX_USE_CERTIFICATE_ASN1              172
 #define SSL_F_SSL_CTX_USE_CERTIFICATE_CHAIN_FILE        220
@@ -2629,7 +2675,7 @@ void ERR_load_SSL_strings(void);
 #define SSL_F_SSL_GET_PREV_SESSION                      217
 #define SSL_F_SSL_GET_SERVER_CERT_INDEX                         322
 #define SSL_F_SSL_GET_SERVER_SEND_CERT                  182
-#define SSL_F_SSL_GET_SERVER_SEND_PKEY                  319
+#define SSL_F_SSL_GET_SERVER_SEND_PKEY                  317
 #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
@@ -2652,7 +2698,6 @@ void ERR_load_SSL_strings(void);
 #define SSL_F_SSL_SESSION_PRINT_FP                      190
 #define SSL_F_SSL_SESSION_SET1_ID_CONTEXT               312
 #define SSL_F_SSL_SESS_CERT_NEW                                 225
-#define SSL_F_SSL_SET_AUTHZ                             325
 #define SSL_F_SSL_SET_CERT                              191
 #define SSL_F_SSL_SET_CIPHER_LIST                       271
 #define SSL_F_SSL_SET_FD                                192
@@ -2669,7 +2714,6 @@ void ERR_load_SSL_strings(void);
 #define SSL_F_SSL_UNDEFINED_CONST_FUNCTION              243
 #define SSL_F_SSL_UNDEFINED_FUNCTION                    197
 #define SSL_F_SSL_UNDEFINED_VOID_FUNCTION               244
-#define SSL_F_SSL_USE_AUTHZ                             328
 #define SSL_F_SSL_USE_CERTIFICATE                       198
 #define SSL_F_SSL_USE_CERTIFICATE_ASN1                  199
 #define SSL_F_SSL_USE_CERTIFICATE_FILE                  200
@@ -2688,19 +2732,18 @@ void ERR_load_SSL_strings(void);
 #define SSL_F_TLS1_CHECK_SERVERHELLO_TLSEXT             274
 #define SSL_F_TLS1_ENC                                  210
 #define SSL_F_TLS1_EXPORT_KEYING_MATERIAL               314
-#define SSL_F_TLS1_GET_SERVER_SUPPLEMENTAL_DATA                 326
+#define SSL_F_TLS1_GET_CURVELIST                        338
 #define SSL_F_TLS1_HEARTBEAT                            315
 #define SSL_F_TLS1_PREPARE_CLIENTHELLO_TLSEXT           275
 #define SSL_F_TLS1_PREPARE_SERVERHELLO_TLSEXT           276
 #define SSL_F_TLS1_PRF                                  284
-#define SSL_F_TLS1_SEND_SERVER_SUPPLEMENTAL_DATA        327
 #define SSL_F_TLS1_SETUP_KEY_BLOCK                      211
+#define SSL_F_TLS1_SET_SERVER_SIGALGS                   335
 #define SSL_F_WRITE_PENDING                             212
 
 /* Reason codes. */
 #define SSL_R_APP_DATA_IN_HANDSHAKE                     100
 #define SSL_R_ATTEMPT_TO_REUSE_SESSION_IN_DIFFERENT_CONTEXT 272
-#define SSL_R_AUTHZ_DATA_TOO_LARGE                      375
 #define SSL_R_BAD_ALERT_RECORD                          101
 #define SSL_R_BAD_AUTHENTICATION_TYPE                   102
 #define SSL_R_BAD_CHANGE_CIPHER_SPEC                    103
@@ -2736,6 +2779,7 @@ void ERR_load_SSL_strings(void);
 #define SSL_R_BAD_SRP_B_LENGTH                          348
 #define SSL_R_BAD_SRP_G_LENGTH                          349
 #define SSL_R_BAD_SRP_N_LENGTH                          350
+#define SSL_R_BAD_SRP_PARAMETERS                        371
 #define SSL_R_BAD_SRP_S_LENGTH                          351
 #define SSL_R_BAD_SRTP_MKI_VALUE                        352
 #define SSL_R_BAD_SRTP_PROTECTION_PROFILE_LIST          353
@@ -2778,6 +2822,7 @@ void ERR_load_SSL_strings(void);
 #define SSL_R_ECC_CERT_NOT_FOR_SIGNING                  318
 #define SSL_R_ECC_CERT_SHOULD_HAVE_RSA_SIGNATURE        322
 #define SSL_R_ECC_CERT_SHOULD_HAVE_SHA1_SIGNATURE       323
+#define SSL_R_ECDH_REQUIRED_FOR_SUITEB_MODE             374
 #define SSL_R_ECGROUP_TOO_LARGE_FOR_CIPHER              310
 #define SSL_R_EMPTY_SRTP_PROTECTION_PROFILE_LIST        354
 #define SSL_R_ENCRYPTED_LENGTH_TOO_LONG                         150
@@ -2792,9 +2837,8 @@ void ERR_load_SSL_strings(void);
 #define SSL_R_HTTP_REQUEST                              156
 #define SSL_R_ILLEGAL_PADDING                           283
 #define SSL_R_ILLEGAL_SUITEB_DIGEST                     380
+#define SSL_R_INAPPROPRIATE_FALLBACK                    373
 #define SSL_R_INCONSISTENT_COMPRESSION                  340
-#define SSL_R_INVALID_AUDIT_PROOF                       371
-#define SSL_R_INVALID_AUTHZ_DATA                        374
 #define SSL_R_INVALID_CHALLENGE_LENGTH                  158
 #define SSL_R_INVALID_COMMAND                           280
 #define SSL_R_INVALID_COMPRESSION_ALGORITHM             341
@@ -2950,6 +2994,7 @@ void ERR_load_SSL_strings(void);
 #define SSL_R_TLSV1_ALERT_DECRYPTION_FAILED             1021
 #define SSL_R_TLSV1_ALERT_DECRYPT_ERROR                         1051
 #define SSL_R_TLSV1_ALERT_EXPORT_RESTRICTION            1060
+#define SSL_R_TLSV1_ALERT_INAPPROPRIATE_FALLBACK        1086
 #define SSL_R_TLSV1_ALERT_INSUFFICIENT_SECURITY                 1071
 #define SSL_R_TLSV1_ALERT_INTERNAL_ERROR                1080
 #define SSL_R_TLSV1_ALERT_NO_RENEGOTIATION              1100
@@ -2984,7 +3029,6 @@ void ERR_load_SSL_strings(void);
 #define SSL_R_UNEXPECTED_RECORD                                 245
 #define SSL_R_UNINITIALIZED                             276
 #define SSL_R_UNKNOWN_ALERT_TYPE                        246
-#define SSL_R_UNKNOWN_AUTHZ_DATA_TYPE                   372
 #define SSL_R_UNKNOWN_CERTIFICATE_TYPE                  247
 #define SSL_R_UNKNOWN_CIPHER_RETURNED                   248
 #define SSL_R_UNKNOWN_CIPHER_TYPE                       249
@@ -2996,7 +3040,6 @@ void ERR_load_SSL_strings(void);
 #define SSL_R_UNKNOWN_REMOTE_ERROR_TYPE                         253
 #define SSL_R_UNKNOWN_SSL_VERSION                       254
 #define SSL_R_UNKNOWN_STATE                             255
-#define SSL_R_UNKNOWN_SUPPLEMENTAL_DATA_TYPE            373
 #define SSL_R_UNSAFE_LEGACY_RENEGOTIATION_DISABLED      338
 #define SSL_R_UNSUPPORTED_CIPHER                        256
 #define SSL_R_UNSUPPORTED_COMPRESSION_ALGORITHM                 257