Fix indent comment corruption issue
[openssl.git] / ssl / ssl.h
index 8f922eea72a04b523a69e6b986e1507085eb4781..48f4a33d57fca3771be001a04395a9274d2fdddf 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
@@ -304,7 +305,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
@@ -418,7 +419,8 @@ typedef struct ssl_method_st
        long (*ssl_ctx_callback_ctrl)(SSL_CTX *s, int cb_id, void (*fp)(void));
        } SSL_METHOD;
 
-/* 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
@@ -522,11 +524,14 @@ typedef struct ssl_session_st
 #define SSL_OP_NETSCAPE_REUSE_CIPHER_CHANGE_BUG                0x00000008L
 #define SSL_OP_SSLREF2_REUSE_CERT_TYPE_BUG             0x00000010L
 #define SSL_OP_MICROSOFT_BIG_SSLV3_BUFFER              0x00000020L
-#define SSL_OP_MSIE_SSLV2_RSA_PADDING                  0x00000040L /* no effect since 0.9.7h and 0.9.8b */
+#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
+
 /* 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
@@ -557,9 +562,8 @@ typedef 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
@@ -602,6 +606,15 @@ typedef struct ssl_session_st
  * TLS only.)  "Released" buffers are put onto a free-list in the context
  * or just freed (depending on the context's setting for freelist_max_len). */
 #define SSL_MODE_RELEASE_BUFFERS 0x00000010L
+/* 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
 
 /* Note: SSL[_CTX]_set_{options,mode} use |= op on the previous value,
  * they cannot be used to clear bits. */
@@ -633,6 +646,10 @@ typedef 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)
@@ -780,7 +797,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;
@@ -802,7 +820,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;
@@ -822,7 +841,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;
@@ -967,22 +986,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
@@ -1003,19 +1028,26 @@ 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;/* 1 if we are to use a new session.
-                        * 2 if we are a server and are inside a handshake
-                        *   (i.e. not just sending a HelloRequest)
-                        * 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 */
+       /*
+        * 1 if we are to use a new session.
+        * 2 if we are a server and are inside a handshake
+        *   (i.e. not just sending a HelloRequest)
+        * 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() */
@@ -1087,17 +1119,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
@@ -1121,12 +1161,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 */
@@ -1135,11 +1177,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;
@@ -1156,9 +1200,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 */
@@ -1248,10 +1294,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);
 
@@ -1325,6 +1373,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
@@ -1417,6 +1466,10 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION)
 #define SSL_CTRL_GET_RI_SUPPORT                        76
 #define SSL_CTRL_CLEAR_OPTIONS                 77
 #define SSL_CTRL_CLEAR_MODE                    78
+#define DTLS_CTRL_SET_LINK_MTU                 120
+#define DTLS_CTRL_GET_LINK_MIN_MTU             121
+
+#define SSL_CTRL_CHECK_PROTO_VERSION           119
 
 #define DTLSv1_get_timeout(ssl, arg) \
        SSL_ctrl(ssl,DTLS_CTRL_GET_TIMEOUT,0, (void *)arg)
@@ -1639,9 +1692,9 @@ const SSL_METHOD *SSLv3_method(void);             /* SSLv3 */
 const SSL_METHOD *SSLv3_server_method(void);   /* SSLv3 */
 const SSL_METHOD *SSLv3_client_method(void);   /* SSLv3 */
 
-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 */
@@ -1825,6 +1878,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                   305
 #define SSL_F_DTLS1_CLIENT_HELLO                        248
 #define SSL_F_DTLS1_CONNECT                             249
 #define SSL_F_DTLS1_ENC                                         250
@@ -1967,6 +2021,7 @@ void ERR_load_SSL_strings(void);
 #define SSL_F_SSL_GET_NEW_SESSION                       181
 #define SSL_F_SSL_GET_PREV_SESSION                      217
 #define SSL_F_SSL_GET_SERVER_SEND_CERT                  182
+#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
@@ -2101,6 +2156,7 @@ void ERR_load_SSL_strings(void);
 #define SSL_R_HTTPS_PROXY_REQUEST                       155
 #define SSL_R_HTTP_REQUEST                              156
 #define SSL_R_ILLEGAL_PADDING                           283
+#define SSL_R_INAPPROPRIATE_FALLBACK                    373
 #define SSL_R_INCONSISTENT_COMPRESSION                  340
 #define SSL_R_INVALID_CHALLENGE_LENGTH                  158
 #define SSL_R_INVALID_COMMAND                           280
@@ -2239,6 +2295,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