diff options
-rw-r--r-- | src/lib/libssl/dtls1.h | 56 | ||||
-rw-r--r-- | src/lib/libssl/src/ssl/dtls1.h | 56 | ||||
-rw-r--r-- | src/lib/libssl/src/ssl/kssl.h | 41 | ||||
-rw-r--r-- | src/lib/libssl/src/ssl/o_dir.h | 13 | ||||
-rw-r--r-- | src/lib/libssl/src/ssl/srtp.h | 2 | ||||
-rw-r--r-- | src/lib/libssl/src/ssl/ssl.h | 507 | ||||
-rw-r--r-- | src/lib/libssl/src/ssl/ssl2.h | 31 | ||||
-rw-r--r-- | src/lib/libssl/src/ssl/ssl23.h | 1 | ||||
-rw-r--r-- | src/lib/libssl/src/ssl/ssl3.h | 70 | ||||
-rw-r--r-- | src/lib/libssl/src/ssl/ssl_locl.h | 263 | ||||
-rw-r--r-- | src/lib/libssl/src/ssl/tls1.h | 15 | ||||
-rw-r--r-- | src/lib/libssl/srtp.h | 2 | ||||
-rw-r--r-- | src/lib/libssl/ssl.h | 507 | ||||
-rw-r--r-- | src/lib/libssl/ssl2.h | 31 | ||||
-rw-r--r-- | src/lib/libssl/ssl23.h | 1 | ||||
-rw-r--r-- | src/lib/libssl/ssl3.h | 70 | ||||
-rw-r--r-- | src/lib/libssl/ssl_locl.h | 263 | ||||
-rw-r--r-- | src/lib/libssl/tls1.h | 15 |
18 files changed, 945 insertions, 999 deletions
diff --git a/src/lib/libssl/dtls1.h b/src/lib/libssl/dtls1.h index 3e0fe918a3..beb740154c 100644 --- a/src/lib/libssl/dtls1.h +++ b/src/lib/libssl/dtls1.h | |||
@@ -100,30 +100,27 @@ extern "C" { | |||
100 | #define DTLS1_SCTP_AUTH_LABEL "EXPORTER_DTLS_OVER_SCTP" | 100 | #define DTLS1_SCTP_AUTH_LABEL "EXPORTER_DTLS_OVER_SCTP" |
101 | #endif | 101 | #endif |
102 | 102 | ||
103 | typedef struct dtls1_bitmap_st | 103 | typedef struct dtls1_bitmap_st { |
104 | { | ||
105 | unsigned long map; /* track 32 packets on 32-bit systems | 104 | unsigned long map; /* track 32 packets on 32-bit systems |
106 | and 64 - on 64-bit systems */ | 105 | and 64 - on 64-bit systems */ |
107 | unsigned char max_seq_num[8]; /* max record number seen so far, | 106 | unsigned char max_seq_num[8]; /* max record number seen so far, |
108 | 64-bit value in big-endian | 107 | 64-bit value in big-endian |
109 | encoding */ | 108 | encoding */ |
110 | } DTLS1_BITMAP; | 109 | } DTLS1_BITMAP; |
111 | 110 | ||
112 | struct dtls1_retransmit_state | 111 | struct dtls1_retransmit_state { |
113 | { | ||
114 | EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ | 112 | EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ |
115 | EVP_MD_CTX *write_hash; /* used for mac generation */ | 113 | EVP_MD_CTX *write_hash; /* used for mac generation */ |
116 | #ifndef OPENSSL_NO_COMP | 114 | #ifndef OPENSSL_NO_COMP |
117 | COMP_CTX *compress; /* compression */ | 115 | COMP_CTX *compress; /* compression */ |
118 | #else | 116 | #else |
119 | char *compress; | 117 | char *compress; |
120 | #endif | 118 | #endif |
121 | SSL_SESSION *session; | 119 | SSL_SESSION *session; |
122 | unsigned short epoch; | 120 | unsigned short epoch; |
123 | }; | 121 | }; |
124 | 122 | ||
125 | struct hm_header_st | 123 | struct hm_header_st { |
126 | { | ||
127 | unsigned char type; | 124 | unsigned char type; |
128 | unsigned long msg_len; | 125 | unsigned long msg_len; |
129 | unsigned short seq; | 126 | unsigned short seq; |
@@ -131,41 +128,36 @@ struct hm_header_st | |||
131 | unsigned long frag_len; | 128 | unsigned long frag_len; |
132 | unsigned int is_ccs; | 129 | unsigned int is_ccs; |
133 | struct dtls1_retransmit_state saved_retransmit_state; | 130 | struct dtls1_retransmit_state saved_retransmit_state; |
134 | }; | 131 | }; |
135 | 132 | ||
136 | struct ccs_header_st | 133 | struct ccs_header_st { |
137 | { | ||
138 | unsigned char type; | 134 | unsigned char type; |
139 | unsigned short seq; | 135 | unsigned short seq; |
140 | }; | 136 | }; |
141 | 137 | ||
142 | struct dtls1_timeout_st | 138 | struct dtls1_timeout_st { |
143 | { | ||
144 | /* Number of read timeouts so far */ | 139 | /* Number of read timeouts so far */ |
145 | unsigned int read_timeouts; | 140 | unsigned int read_timeouts; |
146 | 141 | ||
147 | /* Number of write timeouts so far */ | 142 | /* Number of write timeouts so far */ |
148 | unsigned int write_timeouts; | 143 | unsigned int write_timeouts; |
149 | 144 | ||
150 | /* Number of alerts received so far */ | 145 | /* Number of alerts received so far */ |
151 | unsigned int num_alerts; | 146 | unsigned int num_alerts; |
152 | }; | 147 | }; |
153 | 148 | ||
154 | typedef struct record_pqueue_st | 149 | typedef struct record_pqueue_st { |
155 | { | ||
156 | unsigned short epoch; | 150 | unsigned short epoch; |
157 | pqueue q; | 151 | pqueue q; |
158 | } record_pqueue; | 152 | } record_pqueue; |
159 | 153 | ||
160 | typedef struct hm_fragment_st | 154 | typedef struct hm_fragment_st { |
161 | { | ||
162 | struct hm_header_st msg_header; | 155 | struct hm_header_st msg_header; |
163 | unsigned char *fragment; | 156 | unsigned char *fragment; |
164 | unsigned char *reassembly; | 157 | unsigned char *reassembly; |
165 | } hm_fragment; | 158 | } hm_fragment; |
166 | 159 | ||
167 | typedef struct dtls1_state_st | 160 | typedef struct dtls1_state_st { |
168 | { | ||
169 | unsigned int send_cookie; | 161 | unsigned int send_cookie; |
170 | unsigned char cookie[DTLS1_COOKIE_LENGTH]; | 162 | unsigned char cookie[DTLS1_COOKIE_LENGTH]; |
171 | unsigned char rcvd_cookie[DTLS1_COOKIE_LENGTH]; | 163 | unsigned char rcvd_cookie[DTLS1_COOKIE_LENGTH]; |
@@ -244,10 +236,9 @@ typedef struct dtls1_state_st | |||
244 | int shutdown_received; | 236 | int shutdown_received; |
245 | #endif | 237 | #endif |
246 | 238 | ||
247 | } DTLS1_STATE; | 239 | } DTLS1_STATE; |
248 | 240 | ||
249 | typedef struct dtls1_record_data_st | 241 | typedef struct dtls1_record_data_st { |
250 | { | ||
251 | unsigned char *packet; | 242 | unsigned char *packet; |
252 | unsigned int packet_length; | 243 | unsigned int packet_length; |
253 | SSL3_BUFFER rbuf; | 244 | SSL3_BUFFER rbuf; |
@@ -255,7 +246,7 @@ typedef struct dtls1_record_data_st | |||
255 | #ifndef OPENSSL_NO_SCTP | 246 | #ifndef OPENSSL_NO_SCTP |
256 | struct bio_dgram_sctp_rcvinfo recordinfo; | 247 | struct bio_dgram_sctp_rcvinfo recordinfo; |
257 | #endif | 248 | #endif |
258 | } DTLS1_RECORD_DATA; | 249 | } DTLS1_RECORD_DATA; |
259 | 250 | ||
260 | #endif | 251 | #endif |
261 | 252 | ||
@@ -269,4 +260,3 @@ typedef struct dtls1_record_data_st | |||
269 | } | 260 | } |
270 | #endif | 261 | #endif |
271 | #endif | 262 | #endif |
272 | |||
diff --git a/src/lib/libssl/src/ssl/dtls1.h b/src/lib/libssl/src/ssl/dtls1.h index 3e0fe918a3..beb740154c 100644 --- a/src/lib/libssl/src/ssl/dtls1.h +++ b/src/lib/libssl/src/ssl/dtls1.h | |||
@@ -100,30 +100,27 @@ extern "C" { | |||
100 | #define DTLS1_SCTP_AUTH_LABEL "EXPORTER_DTLS_OVER_SCTP" | 100 | #define DTLS1_SCTP_AUTH_LABEL "EXPORTER_DTLS_OVER_SCTP" |
101 | #endif | 101 | #endif |
102 | 102 | ||
103 | typedef struct dtls1_bitmap_st | 103 | typedef struct dtls1_bitmap_st { |
104 | { | ||
105 | unsigned long map; /* track 32 packets on 32-bit systems | 104 | unsigned long map; /* track 32 packets on 32-bit systems |
106 | and 64 - on 64-bit systems */ | 105 | and 64 - on 64-bit systems */ |
107 | unsigned char max_seq_num[8]; /* max record number seen so far, | 106 | unsigned char max_seq_num[8]; /* max record number seen so far, |
108 | 64-bit value in big-endian | 107 | 64-bit value in big-endian |
109 | encoding */ | 108 | encoding */ |
110 | } DTLS1_BITMAP; | 109 | } DTLS1_BITMAP; |
111 | 110 | ||
112 | struct dtls1_retransmit_state | 111 | struct dtls1_retransmit_state { |
113 | { | ||
114 | EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ | 112 | EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ |
115 | EVP_MD_CTX *write_hash; /* used for mac generation */ | 113 | EVP_MD_CTX *write_hash; /* used for mac generation */ |
116 | #ifndef OPENSSL_NO_COMP | 114 | #ifndef OPENSSL_NO_COMP |
117 | COMP_CTX *compress; /* compression */ | 115 | COMP_CTX *compress; /* compression */ |
118 | #else | 116 | #else |
119 | char *compress; | 117 | char *compress; |
120 | #endif | 118 | #endif |
121 | SSL_SESSION *session; | 119 | SSL_SESSION *session; |
122 | unsigned short epoch; | 120 | unsigned short epoch; |
123 | }; | 121 | }; |
124 | 122 | ||
125 | struct hm_header_st | 123 | struct hm_header_st { |
126 | { | ||
127 | unsigned char type; | 124 | unsigned char type; |
128 | unsigned long msg_len; | 125 | unsigned long msg_len; |
129 | unsigned short seq; | 126 | unsigned short seq; |
@@ -131,41 +128,36 @@ struct hm_header_st | |||
131 | unsigned long frag_len; | 128 | unsigned long frag_len; |
132 | unsigned int is_ccs; | 129 | unsigned int is_ccs; |
133 | struct dtls1_retransmit_state saved_retransmit_state; | 130 | struct dtls1_retransmit_state saved_retransmit_state; |
134 | }; | 131 | }; |
135 | 132 | ||
136 | struct ccs_header_st | 133 | struct ccs_header_st { |
137 | { | ||
138 | unsigned char type; | 134 | unsigned char type; |
139 | unsigned short seq; | 135 | unsigned short seq; |
140 | }; | 136 | }; |
141 | 137 | ||
142 | struct dtls1_timeout_st | 138 | struct dtls1_timeout_st { |
143 | { | ||
144 | /* Number of read timeouts so far */ | 139 | /* Number of read timeouts so far */ |
145 | unsigned int read_timeouts; | 140 | unsigned int read_timeouts; |
146 | 141 | ||
147 | /* Number of write timeouts so far */ | 142 | /* Number of write timeouts so far */ |
148 | unsigned int write_timeouts; | 143 | unsigned int write_timeouts; |
149 | 144 | ||
150 | /* Number of alerts received so far */ | 145 | /* Number of alerts received so far */ |
151 | unsigned int num_alerts; | 146 | unsigned int num_alerts; |
152 | }; | 147 | }; |
153 | 148 | ||
154 | typedef struct record_pqueue_st | 149 | typedef struct record_pqueue_st { |
155 | { | ||
156 | unsigned short epoch; | 150 | unsigned short epoch; |
157 | pqueue q; | 151 | pqueue q; |
158 | } record_pqueue; | 152 | } record_pqueue; |
159 | 153 | ||
160 | typedef struct hm_fragment_st | 154 | typedef struct hm_fragment_st { |
161 | { | ||
162 | struct hm_header_st msg_header; | 155 | struct hm_header_st msg_header; |
163 | unsigned char *fragment; | 156 | unsigned char *fragment; |
164 | unsigned char *reassembly; | 157 | unsigned char *reassembly; |
165 | } hm_fragment; | 158 | } hm_fragment; |
166 | 159 | ||
167 | typedef struct dtls1_state_st | 160 | typedef struct dtls1_state_st { |
168 | { | ||
169 | unsigned int send_cookie; | 161 | unsigned int send_cookie; |
170 | unsigned char cookie[DTLS1_COOKIE_LENGTH]; | 162 | unsigned char cookie[DTLS1_COOKIE_LENGTH]; |
171 | unsigned char rcvd_cookie[DTLS1_COOKIE_LENGTH]; | 163 | unsigned char rcvd_cookie[DTLS1_COOKIE_LENGTH]; |
@@ -244,10 +236,9 @@ typedef struct dtls1_state_st | |||
244 | int shutdown_received; | 236 | int shutdown_received; |
245 | #endif | 237 | #endif |
246 | 238 | ||
247 | } DTLS1_STATE; | 239 | } DTLS1_STATE; |
248 | 240 | ||
249 | typedef struct dtls1_record_data_st | 241 | typedef struct dtls1_record_data_st { |
250 | { | ||
251 | unsigned char *packet; | 242 | unsigned char *packet; |
252 | unsigned int packet_length; | 243 | unsigned int packet_length; |
253 | SSL3_BUFFER rbuf; | 244 | SSL3_BUFFER rbuf; |
@@ -255,7 +246,7 @@ typedef struct dtls1_record_data_st | |||
255 | #ifndef OPENSSL_NO_SCTP | 246 | #ifndef OPENSSL_NO_SCTP |
256 | struct bio_dgram_sctp_rcvinfo recordinfo; | 247 | struct bio_dgram_sctp_rcvinfo recordinfo; |
257 | #endif | 248 | #endif |
258 | } DTLS1_RECORD_DATA; | 249 | } DTLS1_RECORD_DATA; |
259 | 250 | ||
260 | #endif | 251 | #endif |
261 | 252 | ||
@@ -269,4 +260,3 @@ typedef struct dtls1_record_data_st | |||
269 | } | 260 | } |
270 | #endif | 261 | #endif |
271 | #endif | 262 | #endif |
272 | |||
diff --git a/src/lib/libssl/src/ssl/kssl.h b/src/lib/libssl/src/ssl/kssl.h index ca0ebac147..b61e3240c8 100644 --- a/src/lib/libssl/src/ssl/kssl.h +++ b/src/lib/libssl/src/ssl/kssl.h | |||
@@ -117,19 +117,18 @@ typedef unsigned char krb5_octet; | |||
117 | #endif | 117 | #endif |
118 | 118 | ||
119 | #define KSSL_ERR_MAX 256 | 119 | #define KSSL_ERR_MAX 256 |
120 | typedef struct kssl_err_st { | 120 | typedef struct kssl_err_st { |
121 | int reason; | 121 | int reason; |
122 | char text[KSSL_ERR_MAX]; | 122 | char text[KSSL_ERR_MAX]; |
123 | } KSSL_ERR; | 123 | } KSSL_ERR; |
124 | 124 | ||
125 | 125 | ||
126 | /* Context for passing | 126 | /* Context for passing |
127 | ** (1) Kerberos session key to SSL, and | 127 | ** (1) Kerberos session key to SSL, and |
128 | ** (2) Config data between application and SSL lib | 128 | ** (2) Config data between application and SSL lib |
129 | */ | 129 | */ |
130 | typedef struct kssl_ctx_st | 130 | typedef struct kssl_ctx_st { |
131 | { | 131 | /* used by: disposition: */ |
132 | /* used by: disposition: */ | ||
133 | char *service_name; /* C,S default ok (kssl) */ | 132 | char *service_name; /* C,S default ok (kssl) */ |
134 | char *service_host; /* C input, REQUIRED */ | 133 | char *service_host; /* C input, REQUIRED */ |
135 | char *client_princ; /* S output from krb5 ticket */ | 134 | char *client_princ; /* S output from krb5 ticket */ |
@@ -138,7 +137,7 @@ typedef struct kssl_ctx_st | |||
138 | krb5_enctype enctype; | 137 | krb5_enctype enctype; |
139 | int length; | 138 | int length; |
140 | krb5_octet FAR *key; | 139 | krb5_octet FAR *key; |
141 | } KSSL_CTX; | 140 | } KSSL_CTX; |
142 | 141 | ||
143 | #define KSSL_CLIENT 1 | 142 | #define KSSL_CLIENT 1 |
144 | #define KSSL_SERVER 2 | 143 | #define KSSL_SERVER 2 |
@@ -155,25 +154,25 @@ KSSL_CTX *kssl_ctx_new(void); | |||
155 | KSSL_CTX *kssl_ctx_free(KSSL_CTX *kssl_ctx); | 154 | KSSL_CTX *kssl_ctx_free(KSSL_CTX *kssl_ctx); |
156 | void kssl_ctx_show(KSSL_CTX *kssl_ctx); | 155 | void kssl_ctx_show(KSSL_CTX *kssl_ctx); |
157 | krb5_error_code kssl_ctx_setprinc(KSSL_CTX *kssl_ctx, int which, | 156 | krb5_error_code kssl_ctx_setprinc(KSSL_CTX *kssl_ctx, int which, |
158 | krb5_data *realm, krb5_data *entity, int nentities); | 157 | krb5_data *realm, krb5_data *entity, int nentities); |
159 | krb5_error_code kssl_cget_tkt(KSSL_CTX *kssl_ctx, krb5_data **enc_tktp, | 158 | krb5_error_code kssl_cget_tkt(KSSL_CTX *kssl_ctx, krb5_data **enc_tktp, |
160 | krb5_data *authenp, KSSL_ERR *kssl_err); | 159 | krb5_data *authenp, KSSL_ERR *kssl_err); |
161 | krb5_error_code kssl_sget_tkt(KSSL_CTX *kssl_ctx, krb5_data *indata, | 160 | krb5_error_code kssl_sget_tkt(KSSL_CTX *kssl_ctx, krb5_data *indata, |
162 | krb5_ticket_times *ttimes, KSSL_ERR *kssl_err); | 161 | krb5_ticket_times *ttimes, KSSL_ERR *kssl_err); |
163 | krb5_error_code kssl_ctx_setkey(KSSL_CTX *kssl_ctx, krb5_keyblock *session); | 162 | krb5_error_code kssl_ctx_setkey(KSSL_CTX *kssl_ctx, krb5_keyblock *session); |
164 | void kssl_err_set(KSSL_ERR *kssl_err, int reason, char *text); | 163 | void kssl_err_set(KSSL_ERR *kssl_err, int reason, char *text); |
165 | void kssl_krb5_free_data_contents(krb5_context context, krb5_data *data); | 164 | void kssl_krb5_free_data_contents(krb5_context context, krb5_data *data); |
166 | krb5_error_code kssl_build_principal_2(krb5_context context, | 165 | krb5_error_code kssl_build_principal_2(krb5_context context, |
167 | krb5_principal *princ, int rlen, const char *realm, | 166 | krb5_principal *princ, int rlen, const char *realm, int slen, |
168 | int slen, const char *svc, int hlen, const char *host); | 167 | const char *svc, int hlen, const char *host); |
169 | krb5_error_code kssl_validate_times(krb5_timestamp atime, | 168 | krb5_error_code kssl_validate_times(krb5_timestamp atime, |
170 | krb5_ticket_times *ttimes); | 169 | krb5_ticket_times *ttimes); |
171 | krb5_error_code kssl_check_authent(KSSL_CTX *kssl_ctx, krb5_data *authentp, | 170 | krb5_error_code kssl_check_authent(KSSL_CTX *kssl_ctx, krb5_data *authentp, |
172 | krb5_timestamp *atimep, KSSL_ERR *kssl_err); | 171 | krb5_timestamp *atimep, KSSL_ERR *kssl_err); |
173 | unsigned char *kssl_skip_confound(krb5_enctype enctype, unsigned char *authn); | 172 | unsigned char *kssl_skip_confound(krb5_enctype enctype, unsigned char *authn); |
174 | 173 | ||
175 | void SSL_set0_kssl_ctx(SSL *s, KSSL_CTX *kctx); | 174 | void SSL_set0_kssl_ctx(SSL *s, KSSL_CTX *kctx); |
176 | KSSL_CTX * SSL_get0_kssl_ctx(SSL *s); | 175 | KSSL_CTX *SSL_get0_kssl_ctx(SSL *s); |
177 | char *kssl_ctx_get0_client_princ(KSSL_CTX *kctx); | 176 | char *kssl_ctx_get0_client_princ(KSSL_CTX *kctx); |
178 | 177 | ||
179 | #ifdef __cplusplus | 178 | #ifdef __cplusplus |
diff --git a/src/lib/libssl/src/ssl/o_dir.h b/src/lib/libssl/src/ssl/o_dir.h index 4b725c0312..cf4a95911a 100644 --- a/src/lib/libssl/src/ssl/o_dir.h +++ b/src/lib/libssl/src/ssl/o_dir.h | |||
@@ -38,13 +38,14 @@ | |||
38 | extern "C" { | 38 | extern "C" { |
39 | #endif | 39 | #endif |
40 | 40 | ||
41 | typedef struct OPENSSL_dir_context_st OPENSSL_DIR_CTX; | 41 | typedef struct OPENSSL_dir_context_st OPENSSL_DIR_CTX; |
42 | 42 | ||
43 | /* returns NULL on error or end-of-directory. | 43 | /* returns NULL on error or end-of-directory. |
44 | If it is end-of-directory, errno will be zero */ | 44 | If it is end-of-directory, errno will be zero */ |
45 | const char *OPENSSL_DIR_read(OPENSSL_DIR_CTX **ctx, const char *directory); | 45 | const char *OPENSSL_DIR_read(OPENSSL_DIR_CTX **ctx, const char *directory); |
46 | /* returns 1 on success, 0 on error */ | 46 | |
47 | int OPENSSL_DIR_end(OPENSSL_DIR_CTX **ctx); | 47 | /* returns 1 on success, 0 on error */ |
48 | int OPENSSL_DIR_end(OPENSSL_DIR_CTX **ctx); | ||
48 | 49 | ||
49 | #ifdef __cplusplus | 50 | #ifdef __cplusplus |
50 | } | 51 | } |
diff --git a/src/lib/libssl/src/ssl/srtp.h b/src/lib/libssl/src/ssl/srtp.h index c0cf33ef28..06075f2c86 100644 --- a/src/lib/libssl/src/ssl/srtp.h +++ b/src/lib/libssl/src/ssl/srtp.h | |||
@@ -122,7 +122,6 @@ | |||
122 | extern "C" { | 122 | extern "C" { |
123 | #endif | 123 | #endif |
124 | 124 | ||
125 | |||
126 | #define SRTP_AES128_CM_SHA1_80 0x0001 | 125 | #define SRTP_AES128_CM_SHA1_80 0x0001 |
127 | #define SRTP_AES128_CM_SHA1_32 0x0002 | 126 | #define SRTP_AES128_CM_SHA1_32 0x0002 |
128 | #define SRTP_AES128_F8_SHA1_80 0x0003 | 127 | #define SRTP_AES128_F8_SHA1_80 0x0003 |
@@ -142,4 +141,3 @@ SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s); | |||
142 | #endif | 141 | #endif |
143 | 142 | ||
144 | #endif | 143 | #endif |
145 | |||
diff --git a/src/lib/libssl/src/ssl/ssl.h b/src/lib/libssl/src/ssl/ssl.h index bf4b2f2cb6..97e4a3f96c 100644 --- a/src/lib/libssl/src/ssl/ssl.h +++ b/src/lib/libssl/src/ssl/ssl.h | |||
@@ -260,9 +260,9 @@ extern "C" { | |||
260 | #define SSL_TXT_aKRB5 "aKRB5" | 260 | #define SSL_TXT_aKRB5 "aKRB5" |
261 | #define SSL_TXT_aECDSA "aECDSA" | 261 | #define SSL_TXT_aECDSA "aECDSA" |
262 | #define SSL_TXT_aPSK "aPSK" | 262 | #define SSL_TXT_aPSK "aPSK" |
263 | #define SSL_TXT_aGOST94 "aGOST94" | 263 | #define SSL_TXT_aGOST94 "aGOST94" |
264 | #define SSL_TXT_aGOST01 "aGOST01" | 264 | #define SSL_TXT_aGOST01 "aGOST01" |
265 | #define SSL_TXT_aGOST "aGOST" | 265 | #define SSL_TXT_aGOST "aGOST" |
266 | 266 | ||
267 | #define SSL_TXT_DSS "DSS" | 267 | #define SSL_TXT_DSS "DSS" |
268 | #define SSL_TXT_DH "DH" | 268 | #define SSL_TXT_DH "DH" |
@@ -369,23 +369,22 @@ typedef struct ssl_session_st SSL_SESSION; | |||
369 | DECLARE_STACK_OF(SSL_CIPHER) | 369 | DECLARE_STACK_OF(SSL_CIPHER) |
370 | 370 | ||
371 | /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ | 371 | /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ |
372 | typedef struct srtp_protection_profile_st | 372 | typedef struct srtp_protection_profile_st { |
373 | { | 373 | const char *name; |
374 | const char *name; | 374 | unsigned long id; |
375 | unsigned long id; | 375 | } SRTP_PROTECTION_PROFILE; |
376 | } SRTP_PROTECTION_PROFILE; | ||
377 | 376 | ||
378 | DECLARE_STACK_OF(SRTP_PROTECTION_PROFILE) | 377 | DECLARE_STACK_OF(SRTP_PROTECTION_PROFILE) |
379 | 378 | ||
380 | typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, int len, void *arg); | 379 | typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, |
381 | 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); | 380 | int len, void *arg); |
382 | 381 | typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, | |
382 | STACK_OF(SSL_CIPHER) *peer_ciphers, SSL_CIPHER **cipher, void *arg); | ||
383 | 383 | ||
384 | #ifndef OPENSSL_NO_SSL_INTERN | 384 | #ifndef OPENSSL_NO_SSL_INTERN |
385 | 385 | ||
386 | /* used to hold info on the particular ciphers used */ | 386 | /* used to hold info on the particular ciphers used */ |
387 | struct ssl_cipher_st | 387 | struct ssl_cipher_st { |
388 | { | ||
389 | int valid; | 388 | int valid; |
390 | const char *name; /* text name */ | 389 | const char *name; /* text name */ |
391 | unsigned long id; /* id, 4 bytes, first is version */ | 390 | unsigned long id; /* id, 4 bytes, first is version */ |
@@ -401,34 +400,33 @@ struct ssl_cipher_st | |||
401 | unsigned long algorithm2; /* Extra flags */ | 400 | unsigned long algorithm2; /* Extra flags */ |
402 | int strength_bits; /* Number of bits really used */ | 401 | int strength_bits; /* Number of bits really used */ |
403 | int alg_bits; /* Number of bits for algorithm */ | 402 | int alg_bits; /* Number of bits for algorithm */ |
404 | }; | 403 | }; |
405 | 404 | ||
406 | 405 | ||
407 | /* Used to hold functions for SSLv2 or SSLv3/TLSv1 functions */ | 406 | /* Used to hold functions for SSLv2 or SSLv3/TLSv1 functions */ |
408 | struct ssl_method_st | 407 | struct ssl_method_st { |
409 | { | ||
410 | int version; | 408 | int version; |
411 | int (*ssl_new)(SSL *s); | 409 | int (*ssl_new)(SSL *s); |
412 | void (*ssl_clear)(SSL *s); | 410 | void (*ssl_clear)(SSL *s); |
413 | void (*ssl_free)(SSL *s); | 411 | void (*ssl_free)(SSL *s); |
414 | int (*ssl_accept)(SSL *s); | 412 | int (*ssl_accept)(SSL *s); |
415 | int (*ssl_connect)(SSL *s); | 413 | int (*ssl_connect)(SSL *s); |
416 | int (*ssl_read)(SSL *s,void *buf,int len); | 414 | int (*ssl_read)(SSL *s, void *buf, int len); |
417 | int (*ssl_peek)(SSL *s,void *buf,int len); | 415 | int (*ssl_peek)(SSL *s, void *buf, int len); |
418 | int (*ssl_write)(SSL *s,const void *buf,int len); | 416 | int (*ssl_write)(SSL *s, const void *buf, int len); |
419 | int (*ssl_shutdown)(SSL *s); | 417 | int (*ssl_shutdown)(SSL *s); |
420 | int (*ssl_renegotiate)(SSL *s); | 418 | int (*ssl_renegotiate)(SSL *s); |
421 | int (*ssl_renegotiate_check)(SSL *s); | 419 | int (*ssl_renegotiate_check)(SSL *s); |
422 | long (*ssl_get_message)(SSL *s, int st1, int stn, int mt, long | 420 | long (*ssl_get_message)(SSL *s, int st1, int stn, int mt, |
423 | max, int *ok); | 421 | long max, int *ok); |
424 | int (*ssl_read_bytes)(SSL *s, int type, unsigned char *buf, int len, | 422 | int (*ssl_read_bytes)(SSL *s, int type, unsigned char *buf, |
425 | int peek); | 423 | int len, int peek); |
426 | int (*ssl_write_bytes)(SSL *s, int type, const void *buf_, int len); | 424 | int (*ssl_write_bytes)(SSL *s, int type, const void *buf_, int len); |
427 | int (*ssl_dispatch_alert)(SSL *s); | 425 | int (*ssl_dispatch_alert)(SSL *s); |
428 | long (*ssl_ctrl)(SSL *s,int cmd,long larg,void *parg); | 426 | long (*ssl_ctrl)(SSL *s, int cmd, long larg, void *parg); |
429 | long (*ssl_ctx_ctrl)(SSL_CTX *ctx,int cmd,long larg,void *parg); | 427 | long (*ssl_ctx_ctrl)(SSL_CTX *ctx, int cmd, long larg, void *parg); |
430 | const SSL_CIPHER *(*get_cipher_by_char)(const unsigned char *ptr); | 428 | const SSL_CIPHER *(*get_cipher_by_char)(const unsigned char *ptr); |
431 | int (*put_cipher_by_char)(const SSL_CIPHER *cipher,unsigned char *ptr); | 429 | int (*put_cipher_by_char)(const SSL_CIPHER *cipher, unsigned char *ptr); |
432 | int (*ssl_pending)(const SSL *s); | 430 | int (*ssl_pending)(const SSL *s); |
433 | int (*num_ciphers)(void); | 431 | int (*num_ciphers)(void); |
434 | const SSL_CIPHER *(*get_cipher)(unsigned ncipher); | 432 | const SSL_CIPHER *(*get_cipher)(unsigned ncipher); |
@@ -438,7 +436,7 @@ struct ssl_method_st | |||
438 | int (*ssl_version)(void); | 436 | int (*ssl_version)(void); |
439 | long (*ssl_callback_ctrl)(SSL *s, int cb_id, void (*fp)(void)); | 437 | long (*ssl_callback_ctrl)(SSL *s, int cb_id, void (*fp)(void)); |
440 | long (*ssl_ctx_callback_ctrl)(SSL_CTX *s, int cb_id, void (*fp)(void)); | 438 | long (*ssl_ctx_callback_ctrl)(SSL_CTX *s, int cb_id, void (*fp)(void)); |
441 | }; | 439 | }; |
442 | 440 | ||
443 | /* Lets make this into an ASN.1 type structure as follows | 441 | /* Lets make this into an ASN.1 type structure as follows |
444 | * SSL_SESSION_ID ::= SEQUENCE { | 442 | * SSL_SESSION_ID ::= SEQUENCE { |
@@ -465,8 +463,7 @@ struct ssl_method_st | |||
465 | * Look in ssl/ssl_asn1.c for more details | 463 | * Look in ssl/ssl_asn1.c for more details |
466 | * I'm using EXPLICIT tags so I can read the damn things using asn1parse :-). | 464 | * I'm using EXPLICIT tags so I can read the damn things using asn1parse :-). |
467 | */ | 465 | */ |
468 | struct ssl_session_st | 466 | struct ssl_session_st { |
469 | { | ||
470 | int ssl_version; /* what ssl version session info is | 467 | int ssl_version; /* what ssl version session info is |
471 | * being kept in here? */ | 468 | * being kept in here? */ |
472 | 469 | ||
@@ -485,8 +482,8 @@ struct ssl_session_st | |||
485 | unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; | 482 | unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; |
486 | 483 | ||
487 | #ifndef OPENSSL_NO_KRB5 | 484 | #ifndef OPENSSL_NO_KRB5 |
488 | unsigned int krb5_client_princ_len; | 485 | unsigned int krb5_client_princ_len; |
489 | unsigned char krb5_client_princ[SSL_MAX_KRB5_PRINCIPAL_LENGTH]; | 486 | unsigned char krb5_client_princ[SSL_MAX_KRB5_PRINCIPAL_LENGTH]; |
490 | #endif /* OPENSSL_NO_KRB5 */ | 487 | #endif /* OPENSSL_NO_KRB5 */ |
491 | #ifndef OPENSSL_NO_PSK | 488 | #ifndef OPENSSL_NO_PSK |
492 | char *psk_identity_hint; | 489 | char *psk_identity_hint; |
@@ -526,7 +523,7 @@ struct ssl_session_st | |||
526 | 523 | ||
527 | /* These are used to make removal of session-ids more | 524 | /* These are used to make removal of session-ids more |
528 | * efficient and to implement a maximum cache size. */ | 525 | * efficient and to implement a maximum cache size. */ |
529 | struct ssl_session_st *prev,*next; | 526 | struct ssl_session_st *prev, *next; |
530 | #ifndef OPENSSL_NO_TLSEXT | 527 | #ifndef OPENSSL_NO_TLSEXT |
531 | char *tlsext_hostname; | 528 | char *tlsext_hostname; |
532 | #ifndef OPENSSL_NO_EC | 529 | #ifndef OPENSSL_NO_EC |
@@ -543,7 +540,7 @@ struct ssl_session_st | |||
543 | #ifndef OPENSSL_NO_SRP | 540 | #ifndef OPENSSL_NO_SRP |
544 | char *srp_username; | 541 | char *srp_username; |
545 | #endif | 542 | #endif |
546 | }; | 543 | }; |
547 | 544 | ||
548 | #endif | 545 | #endif |
549 | 546 | ||
@@ -684,8 +681,11 @@ struct ssl_session_st | |||
684 | #define SSL_get_secure_renegotiation_support(ssl) \ | 681 | #define SSL_get_secure_renegotiation_support(ssl) \ |
685 | SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) | 682 | SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) |
686 | 683 | ||
687 | void SSL_CTX_set_msg_callback(SSL_CTX *ctx, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg)); | 684 | void SSL_CTX_set_msg_callback(SSL_CTX *ctx, void (*cb)(int write_p, |
688 | void SSL_set_msg_callback(SSL *ssl, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg)); | 685 | int version, int content_type, const void *buf, size_t len, SSL *ssl, |
686 | void *arg)); | ||
687 | void SSL_set_msg_callback(SSL *ssl, void (*cb)(int write_p, int version, | ||
688 | int content_type, const void *buf, size_t len, SSL *ssl, void *arg)); | ||
689 | #define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) | 689 | #define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) |
690 | #define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) | 690 | #define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) |
691 | 691 | ||
@@ -693,8 +693,7 @@ void SSL_set_msg_callback(SSL *ssl, void (*cb)(int write_p, int version, int con | |||
693 | 693 | ||
694 | #ifndef OPENSSL_NO_SSL_INTERN | 694 | #ifndef OPENSSL_NO_SSL_INTERN |
695 | 695 | ||
696 | typedef struct srp_ctx_st | 696 | typedef struct srp_ctx_st { |
697 | { | ||
698 | /* param for all the callbacks */ | 697 | /* param for all the callbacks */ |
699 | void *SRP_cb_arg; | 698 | void *SRP_cb_arg; |
700 | /* set client Hello login callback */ | 699 | /* set client Hello login callback */ |
@@ -705,13 +704,13 @@ typedef struct srp_ctx_st | |||
705 | char *(*SRP_give_srp_client_pwd_callback)(SSL *, void *); | 704 | char *(*SRP_give_srp_client_pwd_callback)(SSL *, void *); |
706 | 705 | ||
707 | char *login; | 706 | char *login; |
708 | BIGNUM *N,*g,*s,*B,*A; | 707 | BIGNUM *N, *g, *s, *B, *A; |
709 | BIGNUM *a,*b,*v; | 708 | BIGNUM *a, *b, *v; |
710 | char *info; | 709 | char *info; |
711 | int strength; | 710 | int strength; |
712 | 711 | ||
713 | unsigned long srp_Mask; | 712 | unsigned long srp_Mask; |
714 | } SRP_CTX; | 713 | } SRP_CTX; |
715 | 714 | ||
716 | #endif | 715 | #endif |
717 | 716 | ||
@@ -721,9 +720,9 @@ int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); | |||
721 | int SSL_SRP_CTX_free(SSL *ctx); | 720 | int SSL_SRP_CTX_free(SSL *ctx); |
722 | int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); | 721 | int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); |
723 | int SSL_srp_server_param_with_username(SSL *s, int *ad); | 722 | int SSL_srp_server_param_with_username(SSL *s, int *ad); |
724 | int SRP_generate_server_master_secret(SSL *s,unsigned char *master_key); | 723 | int SRP_generate_server_master_secret(SSL *s, unsigned char *master_key); |
725 | int SRP_Calc_A_param(SSL *s); | 724 | int SRP_Calc_A_param(SSL *s); |
726 | int SRP_generate_client_master_secret(SSL *s,unsigned char *master_key); | 725 | int SRP_generate_client_master_secret(SSL *s, unsigned char *master_key); |
727 | 726 | ||
728 | #endif | 727 | #endif |
729 | 728 | ||
@@ -745,14 +744,13 @@ int SRP_generate_client_master_secret(SSL *s,unsigned char *master_key); | |||
745 | * returns in this case. It is also an error for the callback to set the size to | 744 | * returns in this case. It is also an error for the callback to set the size to |
746 | * zero. */ | 745 | * zero. */ |
747 | typedef int (*GEN_SESSION_CB)(const SSL *ssl, unsigned char *id, | 746 | typedef int (*GEN_SESSION_CB)(const SSL *ssl, unsigned char *id, |
748 | unsigned int *id_len); | 747 | unsigned int *id_len); |
749 | 748 | ||
750 | typedef struct ssl_comp_st SSL_COMP; | 749 | typedef struct ssl_comp_st SSL_COMP; |
751 | 750 | ||
752 | #ifndef OPENSSL_NO_SSL_INTERN | 751 | #ifndef OPENSSL_NO_SSL_INTERN |
753 | 752 | ||
754 | struct ssl_comp_st | 753 | struct ssl_comp_st { |
755 | { | ||
756 | int id; | 754 | int id; |
757 | const char *name; | 755 | const char *name; |
758 | #ifndef OPENSSL_NO_COMP | 756 | #ifndef OPENSSL_NO_COMP |
@@ -760,13 +758,12 @@ struct ssl_comp_st | |||
760 | #else | 758 | #else |
761 | char *method; | 759 | char *method; |
762 | #endif | 760 | #endif |
763 | }; | 761 | }; |
764 | 762 | ||
765 | DECLARE_STACK_OF(SSL_COMP) | 763 | DECLARE_STACK_OF(SSL_COMP) |
766 | DECLARE_LHASH_OF(SSL_SESSION); | 764 | DECLARE_LHASH_OF(SSL_SESSION); |
767 | 765 | ||
768 | struct ssl_ctx_st | 766 | struct ssl_ctx_st { |
769 | { | ||
770 | const SSL_METHOD *method; | 767 | const SSL_METHOD *method; |
771 | 768 | ||
772 | STACK_OF(SSL_CIPHER) *cipher_list; | 769 | STACK_OF(SSL_CIPHER) *cipher_list; |
@@ -801,13 +798,12 @@ struct ssl_ctx_st | |||
801 | * If remove_session_cb is not null, it will be called when | 798 | * If remove_session_cb is not null, it will be called when |
802 | * a session-id is removed from the cache. After the call, | 799 | * a session-id is removed from the cache. After the call, |
803 | * OpenSSL will SSL_SESSION_free() it. */ | 800 | * OpenSSL will SSL_SESSION_free() it. */ |
804 | int (*new_session_cb)(struct ssl_st *ssl,SSL_SESSION *sess); | 801 | int (*new_session_cb)(struct ssl_st *ssl, SSL_SESSION *sess); |
805 | void (*remove_session_cb)(struct ssl_ctx_st *ctx,SSL_SESSION *sess); | 802 | void (*remove_session_cb)(struct ssl_ctx_st *ctx, SSL_SESSION *sess); |
806 | SSL_SESSION *(*get_session_cb)(struct ssl_st *ssl, | 803 | SSL_SESSION *(*get_session_cb)(struct ssl_st *ssl, |
807 | unsigned char *data,int len,int *copy); | 804 | unsigned char *data, int len, int *copy); |
808 | 805 | ||
809 | struct | 806 | struct { |
810 | { | ||
811 | int sess_connect; /* SSL new conn - started */ | 807 | int sess_connect; /* SSL new conn - started */ |
812 | int sess_connect_renegotiate;/* SSL reneg - requested */ | 808 | int sess_connect_renegotiate;/* SSL reneg - requested */ |
813 | int sess_connect_good; /* SSL new conne/reneg - finished */ | 809 | int sess_connect_good; /* SSL new conne/reneg - finished */ |
@@ -824,7 +820,7 @@ struct ssl_ctx_st | |||
824 | * indicates that the application is | 820 | * indicates that the application is |
825 | * supplying session-id's from other | 821 | * supplying session-id's from other |
826 | * processes - spooky :-) */ | 822 | * processes - spooky :-) */ |
827 | } stats; | 823 | } stats; |
828 | 824 | ||
829 | int references; | 825 | int references; |
830 | 826 | ||
@@ -843,19 +839,19 @@ struct ssl_ctx_st | |||
843 | /* get client cert callback */ | 839 | /* get client cert callback */ |
844 | int (*client_cert_cb)(SSL *ssl, X509 **x509, EVP_PKEY **pkey); | 840 | int (*client_cert_cb)(SSL *ssl, X509 **x509, EVP_PKEY **pkey); |
845 | 841 | ||
846 | /* cookie generate callback */ | 842 | /* cookie generate callback */ |
847 | int (*app_gen_cookie_cb)(SSL *ssl, unsigned char *cookie, | 843 | int (*app_gen_cookie_cb)(SSL *ssl, unsigned char *cookie, |
848 | unsigned int *cookie_len); | 844 | unsigned int *cookie_len); |
849 | 845 | ||
850 | /* verify cookie callback */ | 846 | /* verify cookie callback */ |
851 | int (*app_verify_cookie_cb)(SSL *ssl, unsigned char *cookie, | 847 | int (*app_verify_cookie_cb)(SSL *ssl, unsigned char *cookie, |
852 | unsigned int cookie_len); | 848 | unsigned int cookie_len); |
853 | 849 | ||
854 | CRYPTO_EX_DATA ex_data; | 850 | CRYPTO_EX_DATA ex_data; |
855 | 851 | ||
856 | const EVP_MD *rsa_md5;/* For SSLv2 - name is 'ssl2-md5' */ | 852 | const EVP_MD *rsa_md5; /* For SSLv2 - name is 'ssl2-md5' */ |
857 | const EVP_MD *md5; /* For SSLv3/TLSv1 'ssl3-md5' */ | 853 | const EVP_MD *md5; /* For SSLv3/TLSv1 'ssl3-md5' */ |
858 | const EVP_MD *sha1; /* For SSLv3/TLSv1 'ssl3->sha1' */ | 854 | const EVP_MD *sha1; /* For SSLv3/TLSv1 'ssl3->sha1' */ |
859 | 855 | ||
860 | STACK_OF(X509) *extra_certs; | 856 | STACK_OF(X509) *extra_certs; |
861 | STACK_OF(SSL_COMP) *comp_methods; /* stack of SSL_COMP, SSLv3/TLSv1 */ | 857 | STACK_OF(SSL_COMP) *comp_methods; /* stack of SSL_COMP, SSLv3/TLSv1 */ |
@@ -879,7 +875,8 @@ struct ssl_ctx_st | |||
879 | int read_ahead; | 875 | int read_ahead; |
880 | 876 | ||
881 | /* callback that allows applications to peek at protocol messages */ | 877 | /* callback that allows applications to peek at protocol messages */ |
882 | void (*msg_callback)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg); | 878 | void (*msg_callback)(int write_p, int version, int content_type, |
879 | const void *buf, size_t len, SSL *ssl, void *arg); | ||
883 | void *msg_callback_arg; | 880 | void *msg_callback_arg; |
884 | 881 | ||
885 | int verify_mode; | 882 | int verify_mode; |
@@ -920,10 +917,8 @@ struct ssl_ctx_st | |||
920 | unsigned char tlsext_tick_hmac_key[16]; | 917 | unsigned char tlsext_tick_hmac_key[16]; |
921 | unsigned char tlsext_tick_aes_key[16]; | 918 | unsigned char tlsext_tick_aes_key[16]; |
922 | /* Callback to support customisation of ticket key setting */ | 919 | /* Callback to support customisation of ticket key setting */ |
923 | int (*tlsext_ticket_key_cb)(SSL *ssl, | 920 | int (*tlsext_ticket_key_cb)(SSL *ssl, unsigned char *name, |
924 | unsigned char *name, unsigned char *iv, | 921 | unsigned char *iv, EVP_CIPHER_CTX *ectx, HMAC_CTX *hctx, int enc); |
925 | EVP_CIPHER_CTX *ectx, | ||
926 | HMAC_CTX *hctx, int enc); | ||
927 | 922 | ||
928 | /* certificate status request info */ | 923 | /* certificate status request info */ |
929 | /* Callback for status request */ | 924 | /* Callback for status request */ |
@@ -931,17 +926,18 @@ struct ssl_ctx_st | |||
931 | void *tlsext_status_arg; | 926 | void *tlsext_status_arg; |
932 | 927 | ||
933 | /* draft-rescorla-tls-opaque-prf-input-00.txt information */ | 928 | /* draft-rescorla-tls-opaque-prf-input-00.txt information */ |
934 | int (*tlsext_opaque_prf_input_callback)(SSL *, void *peerinput, size_t len, void *arg); | 929 | int (*tlsext_opaque_prf_input_callback)(SSL *, void *peerinput, |
930 | size_t len, void *arg); | ||
935 | void *tlsext_opaque_prf_input_callback_arg; | 931 | void *tlsext_opaque_prf_input_callback_arg; |
936 | #endif | 932 | #endif |
937 | 933 | ||
938 | #ifndef OPENSSL_NO_PSK | 934 | #ifndef OPENSSL_NO_PSK |
939 | char *psk_identity_hint; | 935 | char *psk_identity_hint; |
940 | unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, char *identity, | 936 | unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, |
941 | unsigned int max_identity_len, unsigned char *psk, | 937 | char *identity, unsigned int max_identity_len, unsigned char *psk, |
942 | unsigned int max_psk_len); | 938 | unsigned int max_psk_len); |
943 | unsigned int (*psk_server_callback)(SSL *ssl, const char *identity, | 939 | unsigned int (*psk_server_callback)(SSL *ssl, const char *identity, |
944 | unsigned char *psk, unsigned int max_psk_len); | 940 | unsigned char *psk, unsigned int max_psk_len); |
945 | #endif | 941 | #endif |
946 | 942 | ||
947 | #ifndef OPENSSL_NO_BUF_FREELISTS | 943 | #ifndef OPENSSL_NO_BUF_FREELISTS |
@@ -963,21 +959,20 @@ struct ssl_ctx_st | |||
963 | /* For a server, this contains a callback function by which the set of | 959 | /* For a server, this contains a callback function by which the set of |
964 | * advertised protocols can be provided. */ | 960 | * advertised protocols can be provided. */ |
965 | int (*next_protos_advertised_cb)(SSL *s, const unsigned char **buf, | 961 | int (*next_protos_advertised_cb)(SSL *s, const unsigned char **buf, |
966 | unsigned int *len, void *arg); | 962 | unsigned int *len, void *arg); |
967 | void *next_protos_advertised_cb_arg; | 963 | void *next_protos_advertised_cb_arg; |
968 | /* For a client, this contains a callback function that selects the | 964 | /* For a client, this contains a callback function that selects the |
969 | * next protocol from the list provided by the server. */ | 965 | * next protocol from the list provided by the server. */ |
970 | int (*next_proto_select_cb)(SSL *s, unsigned char **out, | 966 | int (*next_proto_select_cb)(SSL *s, unsigned char **out, |
971 | unsigned char *outlen, | 967 | unsigned char *outlen, const unsigned char *in, |
972 | const unsigned char *in, | 968 | unsigned int inlen, void *arg); |
973 | unsigned int inlen, | ||
974 | void *arg); | ||
975 | void *next_proto_select_cb_arg; | 969 | void *next_proto_select_cb_arg; |
976 | # endif | 970 | # endif |
977 | /* SRTP profiles we are willing to do from RFC 5764 */ | 971 | /* SRTP profiles we are willing to do from RFC 5764 */ |
978 | STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; | 972 | STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; |
973 | |||
979 | #endif | 974 | #endif |
980 | }; | 975 | }; |
981 | 976 | ||
982 | #endif | 977 | #endif |
983 | 978 | ||
@@ -1018,42 +1013,49 @@ LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); | |||
1018 | #define SSL_CTX_sess_cache_full(ctx) \ | 1013 | #define SSL_CTX_sess_cache_full(ctx) \ |
1019 | SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL) | 1014 | SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL) |
1020 | 1015 | ||
1021 | void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, int (*new_session_cb)(struct ssl_st *ssl,SSL_SESSION *sess)); | 1016 | void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, |
1022 | int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx))(struct ssl_st *ssl, SSL_SESSION *sess); | 1017 | int (*new_session_cb)(struct ssl_st *ssl, SSL_SESSION *sess)); |
1023 | void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, void (*remove_session_cb)(struct ssl_ctx_st *ctx,SSL_SESSION *sess)); | 1018 | int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx))(struct ssl_st *ssl, |
1024 | void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx))(struct ssl_ctx_st *ctx, SSL_SESSION *sess); | 1019 | SSL_SESSION *sess); |
1025 | void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, SSL_SESSION *(*get_session_cb)(struct ssl_st *ssl, unsigned char *data,int len,int *copy)); | 1020 | void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, |
1026 | SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx))(struct ssl_st *ssl, unsigned char *Data, int len, int *copy); | 1021 | void (*remove_session_cb)(struct ssl_ctx_st *ctx, SSL_SESSION *sess)); |
1027 | void SSL_CTX_set_info_callback(SSL_CTX *ctx, void (*cb)(const SSL *ssl,int type,int val)); | 1022 | void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx))(struct ssl_ctx_st *ctx, |
1028 | void (*SSL_CTX_get_info_callback(SSL_CTX *ctx))(const SSL *ssl,int type,int val); | 1023 | SSL_SESSION *sess); |
1029 | void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, int (*client_cert_cb)(SSL *ssl, X509 **x509, EVP_PKEY **pkey)); | 1024 | void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, |
1030 | int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx))(SSL *ssl, X509 **x509, EVP_PKEY **pkey); | 1025 | SSL_SESSION *(*get_session_cb)(struct ssl_st *ssl, unsigned char *data, |
1026 | int len, int *copy)); | ||
1027 | SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx))(struct ssl_st *ssl, | ||
1028 | unsigned char *Data, int len, int *copy); | ||
1029 | void SSL_CTX_set_info_callback(SSL_CTX *ctx, void (*cb)(const SSL *ssl, | ||
1030 | int type, int val)); | ||
1031 | void (*SSL_CTX_get_info_callback(SSL_CTX *ctx))(const SSL *ssl, int type, | ||
1032 | int val); | ||
1033 | void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, | ||
1034 | int (*client_cert_cb)(SSL *ssl, X509 **x509, EVP_PKEY **pkey)); | ||
1035 | int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx))(SSL *ssl, X509 **x509, | ||
1036 | EVP_PKEY **pkey); | ||
1031 | #ifndef OPENSSL_NO_ENGINE | 1037 | #ifndef OPENSSL_NO_ENGINE |
1032 | int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); | 1038 | int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); |
1033 | #endif | 1039 | #endif |
1034 | void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, int (*app_gen_cookie_cb)(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len)); | 1040 | void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, |
1035 | void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, int (*app_verify_cookie_cb)(SSL *ssl, unsigned char *cookie, unsigned int cookie_len)); | 1041 | int (*app_gen_cookie_cb)(SSL *ssl, unsigned char *cookie, |
1042 | unsigned int *cookie_len)); | ||
1043 | void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, | ||
1044 | int (*app_verify_cookie_cb)(SSL *ssl, unsigned char *cookie, | ||
1045 | unsigned int cookie_len)); | ||
1036 | #ifndef OPENSSL_NO_NEXTPROTONEG | 1046 | #ifndef OPENSSL_NO_NEXTPROTONEG |
1037 | void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, | 1047 | void |
1038 | int (*cb) (SSL *ssl, | 1048 | SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, int (*cb)(SSL *ssl, |
1039 | const unsigned char **out, | 1049 | const unsigned char **out, unsigned int *outlen, void *arg), void *arg); |
1040 | unsigned int *outlen, | 1050 | void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, int (*cb)(SSL *ssl, |
1041 | void *arg), | 1051 | unsigned char **out, unsigned char *outlen, const unsigned char *in, |
1042 | void *arg); | 1052 | unsigned int inlen, void *arg), void *arg); |
1043 | void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, | ||
1044 | int (*cb) (SSL *ssl, | ||
1045 | unsigned char **out, | ||
1046 | unsigned char *outlen, | ||
1047 | const unsigned char *in, | ||
1048 | unsigned int inlen, | ||
1049 | void *arg), | ||
1050 | void *arg); | ||
1051 | 1053 | ||
1052 | int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, | 1054 | int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, |
1053 | const unsigned char *in, unsigned int inlen, | 1055 | const unsigned char *in, unsigned int inlen, const unsigned char *client, |
1054 | const unsigned char *client, unsigned int client_len); | 1056 | unsigned int client_len); |
1055 | void SSL_get0_next_proto_negotiated(const SSL *s, | 1057 | void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, |
1056 | const unsigned char **data, unsigned *len); | 1058 | unsigned *len); |
1057 | 1059 | ||
1058 | #define OPENSSL_NPN_UNSUPPORTED 0 | 1060 | #define OPENSSL_NPN_UNSUPPORTED 0 |
1059 | #define OPENSSL_NPN_NEGOTIATED 1 | 1061 | #define OPENSSL_NPN_NEGOTIATED 1 |
@@ -1065,20 +1067,20 @@ void SSL_get0_next_proto_negotiated(const SSL *s, | |||
1065 | * resulting identity/psk */ | 1067 | * resulting identity/psk */ |
1066 | #define PSK_MAX_IDENTITY_LEN 128 | 1068 | #define PSK_MAX_IDENTITY_LEN 128 |
1067 | #define PSK_MAX_PSK_LEN 256 | 1069 | #define PSK_MAX_PSK_LEN 256 |
1068 | void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, | 1070 | void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, |
1069 | unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, | 1071 | unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, |
1070 | char *identity, unsigned int max_identity_len, unsigned char *psk, | 1072 | char *identity, unsigned int max_identity_len, unsigned char *psk, |
1071 | unsigned int max_psk_len)); | 1073 | unsigned int max_psk_len)); |
1072 | void SSL_set_psk_client_callback(SSL *ssl, | 1074 | void SSL_set_psk_client_callback(SSL *ssl, |
1073 | unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, | 1075 | unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, |
1074 | char *identity, unsigned int max_identity_len, unsigned char *psk, | 1076 | char *identity, unsigned int max_identity_len, unsigned char *psk, |
1075 | unsigned int max_psk_len)); | 1077 | unsigned int max_psk_len)); |
1076 | void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, | 1078 | void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, |
1077 | unsigned int (*psk_server_callback)(SSL *ssl, const char *identity, | 1079 | unsigned int (*psk_server_callback)(SSL *ssl, const char *identity, |
1078 | unsigned char *psk, unsigned int max_psk_len)); | 1080 | unsigned char *psk, unsigned int max_psk_len)); |
1079 | void SSL_set_psk_server_callback(SSL *ssl, | 1081 | void SSL_set_psk_server_callback(SSL *ssl, |
1080 | unsigned int (*psk_server_callback)(SSL *ssl, const char *identity, | 1082 | unsigned int (*psk_server_callback)(SSL *ssl, const char *identity, |
1081 | unsigned char *psk, unsigned int max_psk_len)); | 1083 | unsigned char *psk, unsigned int max_psk_len)); |
1082 | int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); | 1084 | int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); |
1083 | int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); | 1085 | int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); |
1084 | const char *SSL_get_psk_identity_hint(const SSL *s); | 1086 | const char *SSL_get_psk_identity_hint(const SSL *s); |
@@ -1101,8 +1103,7 @@ const char *SSL_get_psk_identity(const SSL *s); | |||
1101 | 1103 | ||
1102 | #ifndef OPENSSL_NO_SSL_INTERN | 1104 | #ifndef OPENSSL_NO_SSL_INTERN |
1103 | 1105 | ||
1104 | struct ssl_st | 1106 | struct ssl_st { |
1105 | { | ||
1106 | /* protocol version | 1107 | /* protocol version |
1107 | * (one of SSL2_VERSION, SSL3_VERSION, TLS1_VERSION, DTLS1_VERSION) | 1108 | * (one of SSL2_VERSION, SSL3_VERSION, TLS1_VERSION, DTLS1_VERSION) |
1108 | */ | 1109 | */ |
@@ -1146,9 +1147,9 @@ struct ssl_st | |||
1146 | int server; /* are we the server side? - mostly used by SSL_clear*/ | 1147 | int server; /* are we the server side? - mostly used by SSL_clear*/ |
1147 | 1148 | ||
1148 | int new_session;/* Generate a new session or reuse an old one. | 1149 | int new_session;/* Generate a new session or reuse an old one. |
1149 | * NB: For servers, the 'new' session may actually be a previously | 1150 | * NB: For servers, the 'new' session may actually be a previously |
1150 | * cached session or even the previous session unless | 1151 | * cached session or even the previous session unless |
1151 | * SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION is set */ | 1152 | * SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION is set */ |
1152 | int quiet_shutdown;/* don't send shutdown packets */ | 1153 | int quiet_shutdown;/* don't send shutdown packets */ |
1153 | int shutdown; /* we have shut things down, 0x01 sent, 0x02 | 1154 | int shutdown; /* we have shut things down, 0x01 sent, 0x02 |
1154 | * for received */ | 1155 | * for received */ |
@@ -1156,7 +1157,7 @@ struct ssl_st | |||
1156 | int rstate; /* where we are when reading */ | 1157 | int rstate; /* where we are when reading */ |
1157 | 1158 | ||
1158 | BUF_MEM *init_buf; /* buffer used during init */ | 1159 | BUF_MEM *init_buf; /* buffer used during init */ |
1159 | void *init_msg; /* pointer to handshake message body, set by ssl3_get_message() */ | 1160 | void *init_msg; /* pointer to handshake message body, set by ssl3_get_message() */ |
1160 | int init_num; /* amount read/written */ | 1161 | int init_num; /* amount read/written */ |
1161 | int init_off; /* amount read/written */ | 1162 | int init_off; /* amount read/written */ |
1162 | 1163 | ||
@@ -1169,10 +1170,11 @@ struct ssl_st | |||
1169 | struct dtls1_state_st *d1; /* DTLSv1 variables */ | 1170 | struct dtls1_state_st *d1; /* DTLSv1 variables */ |
1170 | 1171 | ||
1171 | int read_ahead; /* Read as many input bytes as possible | 1172 | int read_ahead; /* Read as many input bytes as possible |
1172 | * (for non-blocking reads) */ | 1173 | * (for non-blocking reads) */ |
1173 | 1174 | ||
1174 | /* callback that allows applications to peek at protocol messages */ | 1175 | /* callback that allows applications to peek at protocol messages */ |
1175 | void (*msg_callback)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg); | 1176 | void (*msg_callback)(int write_p, int version, int content_type, |
1177 | const void *buf, size_t len, SSL *ssl, void *arg); | ||
1176 | void *msg_callback_arg; | 1178 | void *msg_callback_arg; |
1177 | 1179 | ||
1178 | int hit; /* reusing a previous session */ | 1180 | int hit; /* reusing a previous session */ |
@@ -1190,9 +1192,10 @@ struct ssl_st | |||
1190 | 1192 | ||
1191 | /* These are the ones being used, the ones in SSL_SESSION are | 1193 | /* These are the ones being used, the ones in SSL_SESSION are |
1192 | * the ones to be 'copied' into these ones */ | 1194 | * the ones to be 'copied' into these ones */ |
1193 | int mac_flags; | 1195 | int mac_flags; |
1196 | |||
1194 | EVP_CIPHER_CTX *enc_read_ctx; /* cryptographic state */ | 1197 | EVP_CIPHER_CTX *enc_read_ctx; /* cryptographic state */ |
1195 | EVP_MD_CTX *read_hash; /* used for mac generation */ | 1198 | EVP_MD_CTX *read_hash; /* used for mac generation */ |
1196 | #ifndef OPENSSL_NO_COMP | 1199 | #ifndef OPENSSL_NO_COMP |
1197 | COMP_CTX *expand; /* uncompress */ | 1200 | COMP_CTX *expand; /* uncompress */ |
1198 | #else | 1201 | #else |
@@ -1200,11 +1203,12 @@ struct ssl_st | |||
1200 | #endif | 1203 | #endif |
1201 | 1204 | ||
1202 | EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ | 1205 | EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ |
1203 | EVP_MD_CTX *write_hash; /* used for mac generation */ | 1206 | EVP_MD_CTX *write_hash; /* used for mac generation */ |
1204 | #ifndef OPENSSL_NO_COMP | 1207 | #ifndef OPENSSL_NO_COMP |
1205 | COMP_CTX *compress; /* compression */ | 1208 | COMP_CTX *compress; /* compression */ |
1206 | #else | 1209 | #else |
1207 | char *compress; | 1210 | char *compress; |
1211 | |||
1208 | #endif | 1212 | #endif |
1209 | 1213 | ||
1210 | /* session info */ | 1214 | /* session info */ |
@@ -1235,21 +1239,22 @@ struct ssl_st | |||
1235 | int error_code; /* actual code */ | 1239 | int error_code; /* actual code */ |
1236 | 1240 | ||
1237 | #ifndef OPENSSL_NO_KRB5 | 1241 | #ifndef OPENSSL_NO_KRB5 |
1238 | KSSL_CTX *kssl_ctx; /* Kerberos 5 context */ | 1242 | KSSL_CTX *kssl_ctx; /* Kerberos 5 context */ |
1239 | #endif /* OPENSSL_NO_KRB5 */ | 1243 | #endif /* OPENSSL_NO_KRB5 */ |
1240 | 1244 | ||
1241 | #ifndef OPENSSL_NO_PSK | 1245 | #ifndef OPENSSL_NO_PSK |
1242 | unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, char *identity, | 1246 | unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, |
1243 | unsigned int max_identity_len, unsigned char *psk, | 1247 | char *identity, unsigned int max_identity_len, unsigned char *psk, |
1244 | unsigned int max_psk_len); | 1248 | unsigned int max_psk_len); |
1245 | unsigned int (*psk_server_callback)(SSL *ssl, const char *identity, | 1249 | unsigned int (*psk_server_callback)(SSL *ssl, const char *identity, |
1246 | unsigned char *psk, unsigned int max_psk_len); | 1250 | unsigned char *psk, unsigned int max_psk_len); |
1247 | #endif | 1251 | #endif |
1248 | 1252 | ||
1249 | SSL_CTX *ctx; | 1253 | SSL_CTX *ctx; |
1250 | /* set this flag to 1 and a sleep(1) is put into all SSL_read() | 1254 | /* set this flag to 1 and a sleep(1) is put into all SSL_read() |
1251 | * and SSL_write() calls, good for nbio debuging :-) */ | 1255 | * and SSL_write() calls, good for nbio debuging :-) */ |
1252 | int debug; | 1256 | int debug; |
1257 | |||
1253 | 1258 | ||
1254 | /* extra application data */ | 1259 | /* extra application data */ |
1255 | long verify_result; | 1260 | long verify_result; |
@@ -1269,15 +1274,14 @@ struct ssl_st | |||
1269 | #ifndef OPENSSL_NO_TLSEXT | 1274 | #ifndef OPENSSL_NO_TLSEXT |
1270 | /* TLS extension debug callback */ | 1275 | /* TLS extension debug callback */ |
1271 | void (*tlsext_debug_cb)(SSL *s, int client_server, int type, | 1276 | void (*tlsext_debug_cb)(SSL *s, int client_server, int type, |
1272 | unsigned char *data, int len, | 1277 | unsigned char *data, int len, void *arg); |
1273 | void *arg); | ||
1274 | void *tlsext_debug_arg; | 1278 | void *tlsext_debug_arg; |
1275 | char *tlsext_hostname; | 1279 | char *tlsext_hostname; |
1276 | int servername_done; /* no further mod of servername | 1280 | int servername_done; /* no further mod of servername |
1277 | 0 : call the servername extension callback. | 1281 | 0 : call the servername extension callback. |
1278 | 1 : prepare 2, allow last ack just after in server callback. | 1282 | 1 : prepare 2, allow last ack just after in server callback. |
1279 | 2 : don't call servername callback, no ack in server hello | 1283 | 2 : don't call servername callback, no ack in server hello |
1280 | */ | 1284 | */ |
1281 | /* certificate status request info */ | 1285 | /* certificate status request info */ |
1282 | /* Status type or -1 if no status type */ | 1286 | /* Status type or -1 if no status type */ |
1283 | int tlsext_status_type; | 1287 | int tlsext_status_type; |
@@ -1330,28 +1334,28 @@ struct ssl_st | |||
1330 | 1334 | ||
1331 | #define session_ctx initial_ctx | 1335 | #define session_ctx initial_ctx |
1332 | 1336 | ||
1333 | STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; /* What we'll do */ | 1337 | STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; /* What we'll do */ |
1334 | SRTP_PROTECTION_PROFILE *srtp_profile; /* What's been chosen */ | 1338 | SRTP_PROTECTION_PROFILE *srtp_profile; /* What's been chosen */ |
1335 | 1339 | ||
1336 | unsigned int tlsext_heartbeat; /* Is use of the Heartbeat extension negotiated? | 1340 | unsigned int tlsext_heartbeat; /* Is use of the Heartbeat extension negotiated? |
1337 | 0: disabled | 1341 | 0: disabled |
1338 | 1: enabled | 1342 | 1: enabled |
1339 | 2: enabled, but not allowed to send Requests | 1343 | 2: enabled, but not allowed to send Requests |
1340 | */ | 1344 | */ |
1341 | unsigned int tlsext_hb_pending; /* Indicates if a HeartbeatRequest is in flight */ | 1345 | unsigned int tlsext_hb_pending; /* Indicates if a HeartbeatRequest is in flight */ |
1342 | unsigned int tlsext_hb_seq; /* HeartbeatRequest sequence number */ | 1346 | unsigned int tlsext_hb_seq; /* HeartbeatRequest sequence number */ |
1343 | #else | 1347 | #else |
1344 | #define session_ctx ctx | 1348 | #define session_ctx ctx |
1345 | #endif /* OPENSSL_NO_TLSEXT */ | 1349 | #endif /* OPENSSL_NO_TLSEXT */ |
1346 | 1350 | ||
1347 | int renegotiate;/* 1 if we are renegotiating. | 1351 | int renegotiate;/* 1 if we are renegotiating. |
1348 | * 2 if we are a server and are inside a handshake | 1352 | * 2 if we are a server and are inside a handshake |
1349 | * (i.e. not just sending a HelloRequest) */ | 1353 | * (i.e. not just sending a HelloRequest) */ |
1350 | 1354 | ||
1351 | #ifndef OPENSSL_NO_SRP | 1355 | #ifndef OPENSSL_NO_SRP |
1352 | SRP_CTX srp_ctx; /* ctx for SRP authentication */ | 1356 | SRP_CTX srp_ctx; /* ctx for SRP authentication */ |
1353 | #endif | 1357 | #endif |
1354 | }; | 1358 | }; |
1355 | 1359 | ||
1356 | #endif | 1360 | #endif |
1357 | 1361 | ||
@@ -1361,10 +1365,10 @@ struct ssl_st | |||
1361 | 1365 | ||
1362 | #include <openssl/ssl2.h> | 1366 | #include <openssl/ssl2.h> |
1363 | #include <openssl/ssl3.h> | 1367 | #include <openssl/ssl3.h> |
1364 | #include <openssl/tls1.h> /* This is mostly sslv3 with a few tweaks */ | 1368 | #include <openssl/tls1.h> /* This is mostly sslv3 with a few tweaks */ |
1365 | #include <openssl/dtls1.h> /* Datagram TLS */ | 1369 | #include <openssl/dtls1.h> /* Datagram TLS */ |
1366 | #include <openssl/ssl23.h> | 1370 | #include <openssl/ssl23.h> |
1367 | #include <openssl/srtp.h> /* Support for the use_srtp extension */ | 1371 | #include <openssl/srtp.h> /* Support for the use_srtp extension */ |
1368 | 1372 | ||
1369 | #ifdef __cplusplus | 1373 | #ifdef __cplusplus |
1370 | extern "C" { | 1374 | extern "C" { |
@@ -1417,9 +1421,9 @@ extern "C" { | |||
1417 | 1421 | ||
1418 | /* The following 2 states are kept in ssl->rstate when reads fail, | 1422 | /* The following 2 states are kept in ssl->rstate when reads fail, |
1419 | * you should not need these */ | 1423 | * you should not need these */ |
1420 | #define SSL_ST_READ_HEADER 0xF0 | 1424 | #define SSL_ST_READ_HEADER 0xF0 |
1421 | #define SSL_ST_READ_BODY 0xF1 | 1425 | #define SSL_ST_READ_BODY 0xF1 |
1422 | #define SSL_ST_READ_DONE 0xF2 | 1426 | #define SSL_ST_READ_DONE 0xF2 |
1423 | 1427 | ||
1424 | /* Obtain latest Finished message | 1428 | /* Obtain latest Finished message |
1425 | * -- that we sent (SSL_get_finished) | 1429 | * -- that we sent (SSL_get_finished) |
@@ -1646,28 +1650,27 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) | |||
1646 | 1650 | ||
1647 | #ifndef OPENSSL_NO_BIO | 1651 | #ifndef OPENSSL_NO_BIO |
1648 | BIO_METHOD *BIO_f_ssl(void); | 1652 | BIO_METHOD *BIO_f_ssl(void); |
1649 | BIO *BIO_new_ssl(SSL_CTX *ctx,int client); | 1653 | BIO *BIO_new_ssl(SSL_CTX *ctx, int client); |
1650 | BIO *BIO_new_ssl_connect(SSL_CTX *ctx); | 1654 | BIO *BIO_new_ssl_connect(SSL_CTX *ctx); |
1651 | BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); | 1655 | BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); |
1652 | int BIO_ssl_copy_session_id(BIO *to,BIO *from); | 1656 | int BIO_ssl_copy_session_id(BIO *to, BIO *from); |
1653 | void BIO_ssl_shutdown(BIO *ssl_bio); | 1657 | void BIO_ssl_shutdown(BIO *ssl_bio); |
1654 | |||
1655 | #endif | 1658 | #endif |
1656 | 1659 | ||
1657 | int SSL_CTX_set_cipher_list(SSL_CTX *,const char *str); | 1660 | int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); |
1658 | SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); | 1661 | SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); |
1659 | void SSL_CTX_free(SSL_CTX *); | 1662 | void SSL_CTX_free(SSL_CTX *); |
1660 | long SSL_CTX_set_timeout(SSL_CTX *ctx,long t); | 1663 | long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); |
1661 | long SSL_CTX_get_timeout(const SSL_CTX *ctx); | 1664 | long SSL_CTX_get_timeout(const SSL_CTX *ctx); |
1662 | X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); | 1665 | X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); |
1663 | void SSL_CTX_set_cert_store(SSL_CTX *,X509_STORE *); | 1666 | void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); |
1664 | int SSL_want(const SSL *s); | 1667 | int SSL_want(const SSL *s); |
1665 | int SSL_clear(SSL *s); | 1668 | int SSL_clear(SSL *s); |
1666 | 1669 | ||
1667 | void SSL_CTX_flush_sessions(SSL_CTX *ctx,long tm); | 1670 | void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); |
1668 | 1671 | ||
1669 | const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); | 1672 | const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); |
1670 | int SSL_CIPHER_get_bits(const SSL_CIPHER *c,int *alg_bits); | 1673 | int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); |
1671 | char * SSL_CIPHER_get_version(const SSL_CIPHER *c); | 1674 | char * SSL_CIPHER_get_version(const SSL_CIPHER *c); |
1672 | const char * SSL_CIPHER_get_name(const SSL_CIPHER *c); | 1675 | const char * SSL_CIPHER_get_name(const SSL_CIPHER *c); |
1673 | unsigned long SSL_CIPHER_get_id(const SSL_CIPHER *c); | 1676 | unsigned long SSL_CIPHER_get_id(const SSL_CIPHER *c); |
@@ -1675,7 +1678,7 @@ unsigned long SSL_CIPHER_get_id(const SSL_CIPHER *c); | |||
1675 | int SSL_get_fd(const SSL *s); | 1678 | int SSL_get_fd(const SSL *s); |
1676 | int SSL_get_rfd(const SSL *s); | 1679 | int SSL_get_rfd(const SSL *s); |
1677 | int SSL_get_wfd(const SSL *s); | 1680 | int SSL_get_wfd(const SSL *s); |
1678 | const char * SSL_get_cipher_list(const SSL *s,int n); | 1681 | const char * SSL_get_cipher_list(const SSL *s, int n); |
1679 | char * SSL_get_shared_ciphers(const SSL *s, char *buf, int len); | 1682 | char * SSL_get_shared_ciphers(const SSL *s, char *buf, int len); |
1680 | int SSL_get_read_ahead(const SSL * s); | 1683 | int SSL_get_read_ahead(const SSL * s); |
1681 | int SSL_pending(const SSL *s); | 1684 | int SSL_pending(const SSL *s); |
@@ -1685,7 +1688,7 @@ int SSL_set_rfd(SSL *s, int fd); | |||
1685 | int SSL_set_wfd(SSL *s, int fd); | 1688 | int SSL_set_wfd(SSL *s, int fd); |
1686 | #endif | 1689 | #endif |
1687 | #ifndef OPENSSL_NO_BIO | 1690 | #ifndef OPENSSL_NO_BIO |
1688 | void SSL_set_bio(SSL *s, BIO *rbio,BIO *wbio); | 1691 | void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); |
1689 | BIO * SSL_get_rbio(const SSL *s); | 1692 | BIO * SSL_get_rbio(const SSL *s); |
1690 | BIO * SSL_get_wbio(const SSL *s); | 1693 | BIO * SSL_get_wbio(const SSL *s); |
1691 | #endif | 1694 | #endif |
@@ -1693,16 +1696,16 @@ int SSL_set_cipher_list(SSL *s, const char *str); | |||
1693 | void SSL_set_read_ahead(SSL *s, int yes); | 1696 | void SSL_set_read_ahead(SSL *s, int yes); |
1694 | int SSL_get_verify_mode(const SSL *s); | 1697 | int SSL_get_verify_mode(const SSL *s); |
1695 | int SSL_get_verify_depth(const SSL *s); | 1698 | int SSL_get_verify_depth(const SSL *s); |
1696 | int (*SSL_get_verify_callback(const SSL *s))(int,X509_STORE_CTX *); | 1699 | int (*SSL_get_verify_callback(const SSL *s))(int, X509_STORE_CTX *); |
1697 | void SSL_set_verify(SSL *s, int mode, | 1700 | void SSL_set_verify(SSL *s, int mode, |
1698 | int (*callback)(int ok,X509_STORE_CTX *ctx)); | 1701 | int (*callback)(int ok, X509_STORE_CTX *ctx)); |
1699 | void SSL_set_verify_depth(SSL *s, int depth); | 1702 | void SSL_set_verify_depth(SSL *s, int depth); |
1700 | #ifndef OPENSSL_NO_RSA | 1703 | #ifndef OPENSSL_NO_RSA |
1701 | int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); | 1704 | int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); |
1702 | #endif | 1705 | #endif |
1703 | int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len); | 1706 | int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len); |
1704 | int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); | 1707 | int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); |
1705 | int SSL_use_PrivateKey_ASN1(int pk,SSL *ssl, const unsigned char *d, long len); | 1708 | int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, long len); |
1706 | int SSL_use_certificate(SSL *ssl, X509 *x); | 1709 | int SSL_use_certificate(SSL *ssl, X509 *x); |
1707 | int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); | 1710 | int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); |
1708 | 1711 | ||
@@ -1716,9 +1719,9 @@ int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type); | |||
1716 | int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); /* PEM type */ | 1719 | int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); /* PEM type */ |
1717 | STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); | 1720 | STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); |
1718 | int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, | 1721 | int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, |
1719 | const char *file); | 1722 | const char *file); |
1720 | int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, | 1723 | int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, |
1721 | const char *dir); | 1724 | const char *dir); |
1722 | #endif | 1725 | #endif |
1723 | 1726 | ||
1724 | void SSL_load_error_strings(void ); | 1727 | void SSL_load_error_strings(void ); |
@@ -1730,32 +1733,34 @@ long SSL_SESSION_get_time(const SSL_SESSION *s); | |||
1730 | long SSL_SESSION_set_time(SSL_SESSION *s, long t); | 1733 | long SSL_SESSION_set_time(SSL_SESSION *s, long t); |
1731 | long SSL_SESSION_get_timeout(const SSL_SESSION *s); | 1734 | long SSL_SESSION_get_timeout(const SSL_SESSION *s); |
1732 | long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); | 1735 | long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); |
1733 | void SSL_copy_session_id(SSL *to,const SSL *from); | 1736 | void SSL_copy_session_id(SSL *to, const SSL *from); |
1734 | X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); | 1737 | X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); |
1735 | int SSL_SESSION_set1_id_context(SSL_SESSION *s,const unsigned char *sid_ctx, | 1738 | int |
1736 | unsigned int sid_ctx_len); | 1739 | SSL_SESSION_set1_id_context(SSL_SESSION *s, const unsigned char *sid_ctx, |
1740 | unsigned int sid_ctx_len); | ||
1737 | 1741 | ||
1738 | SSL_SESSION *SSL_SESSION_new(void); | 1742 | SSL_SESSION *SSL_SESSION_new(void); |
1739 | const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, | 1743 | const unsigned char |
1740 | unsigned int *len); | 1744 | *SSL_SESSION_get_id(const SSL_SESSION *s, |
1745 | unsigned int *len); | ||
1741 | unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); | 1746 | unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); |
1742 | #ifndef OPENSSL_NO_FP_API | 1747 | #ifndef OPENSSL_NO_FP_API |
1743 | int SSL_SESSION_print_fp(FILE *fp,const SSL_SESSION *ses); | 1748 | int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); |
1744 | #endif | 1749 | #endif |
1745 | #ifndef OPENSSL_NO_BIO | 1750 | #ifndef OPENSSL_NO_BIO |
1746 | int SSL_SESSION_print(BIO *fp,const SSL_SESSION *ses); | 1751 | int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); |
1747 | #endif | 1752 | #endif |
1748 | void SSL_SESSION_free(SSL_SESSION *ses); | 1753 | void SSL_SESSION_free(SSL_SESSION *ses); |
1749 | int i2d_SSL_SESSION(SSL_SESSION *in,unsigned char **pp); | 1754 | int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp); |
1750 | int SSL_set_session(SSL *to, SSL_SESSION *session); | 1755 | int SSL_set_session(SSL *to, SSL_SESSION *session); |
1751 | int SSL_CTX_add_session(SSL_CTX *s, SSL_SESSION *c); | 1756 | int SSL_CTX_add_session(SSL_CTX *s, SSL_SESSION *c); |
1752 | int SSL_CTX_remove_session(SSL_CTX *,SSL_SESSION *c); | 1757 | int SSL_CTX_remove_session(SSL_CTX *, SSL_SESSION *c); |
1753 | int SSL_CTX_set_generate_session_id(SSL_CTX *, GEN_SESSION_CB); | 1758 | int SSL_CTX_set_generate_session_id(SSL_CTX *, GEN_SESSION_CB); |
1754 | int SSL_set_generate_session_id(SSL *, GEN_SESSION_CB); | 1759 | int SSL_set_generate_session_id(SSL *, GEN_SESSION_CB); |
1755 | int SSL_has_matching_session_id(const SSL *ssl, const unsigned char *id, | 1760 | int SSL_has_matching_session_id(const SSL *ssl, const unsigned char *id, |
1756 | unsigned int id_len); | 1761 | unsigned int id_len); |
1757 | SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a,const unsigned char **pp, | 1762 | SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, |
1758 | long length); | 1763 | long length); |
1759 | 1764 | ||
1760 | #ifdef HEADER_X509_H | 1765 | #ifdef HEADER_X509_H |
1761 | X509 * SSL_get_peer_certificate(const SSL *s); | 1766 | X509 * SSL_get_peer_certificate(const SSL *s); |
@@ -1765,18 +1770,17 @@ STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); | |||
1765 | 1770 | ||
1766 | int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); | 1771 | int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); |
1767 | int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); | 1772 | int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); |
1768 | int (*SSL_CTX_get_verify_callback(const SSL_CTX *ctx))(int,X509_STORE_CTX *); | 1773 | int (*SSL_CTX_get_verify_callback(const SSL_CTX *ctx))(int, X509_STORE_CTX *); |
1769 | void SSL_CTX_set_verify(SSL_CTX *ctx,int mode, | 1774 | void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, |
1770 | int (*callback)(int, X509_STORE_CTX *)); | 1775 | int (*callback)(int, X509_STORE_CTX *)); |
1771 | void SSL_CTX_set_verify_depth(SSL_CTX *ctx,int depth); | 1776 | void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); |
1772 | void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, int (*cb)(X509_STORE_CTX *,void *), void *arg); | 1777 | void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, int (*cb)(X509_STORE_CTX *, void *), void *arg); |
1773 | #ifndef OPENSSL_NO_RSA | 1778 | #ifndef OPENSSL_NO_RSA |
1774 | int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); | 1779 | int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); |
1775 | #endif | 1780 | #endif |
1776 | int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, long len); | 1781 | int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, long len); |
1777 | int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); | 1782 | int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); |
1778 | int SSL_CTX_use_PrivateKey_ASN1(int pk,SSL_CTX *ctx, | 1783 | int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, const unsigned char *d, long len); |
1779 | const unsigned char *d, long len); | ||
1780 | int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); | 1784 | int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); |
1781 | int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, const unsigned char *d); | 1785 | int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, const unsigned char *d); |
1782 | 1786 | ||
@@ -1786,12 +1790,10 @@ void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); | |||
1786 | int SSL_CTX_check_private_key(const SSL_CTX *ctx); | 1790 | int SSL_CTX_check_private_key(const SSL_CTX *ctx); |
1787 | int SSL_check_private_key(const SSL *ctx); | 1791 | int SSL_check_private_key(const SSL *ctx); |
1788 | 1792 | ||
1789 | int SSL_CTX_set_session_id_context(SSL_CTX *ctx,const unsigned char *sid_ctx, | 1793 | int SSL_CTX_set_session_id_context(SSL_CTX *ctx, const unsigned char *sid_ctx, unsigned int sid_ctx_len); |
1790 | unsigned int sid_ctx_len); | ||
1791 | 1794 | ||
1792 | SSL * SSL_new(SSL_CTX *ctx); | 1795 | SSL *SSL_new(SSL_CTX *ctx); |
1793 | int SSL_set_session_id_context(SSL *ssl,const unsigned char *sid_ctx, | 1796 | int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); |
1794 | unsigned int sid_ctx_len); | ||
1795 | 1797 | ||
1796 | int SSL_CTX_set_purpose(SSL_CTX *s, int purpose); | 1798 | int SSL_CTX_set_purpose(SSL_CTX *s, int purpose); |
1797 | int SSL_set_purpose(SSL *s, int purpose); | 1799 | int SSL_set_purpose(SSL *s, int purpose); |
@@ -1802,21 +1804,16 @@ int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); | |||
1802 | int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); | 1804 | int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); |
1803 | 1805 | ||
1804 | #ifndef OPENSSL_NO_SRP | 1806 | #ifndef OPENSSL_NO_SRP |
1805 | int SSL_CTX_set_srp_username(SSL_CTX *ctx,char *name); | 1807 | int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); |
1806 | int SSL_CTX_set_srp_password(SSL_CTX *ctx,char *password); | 1808 | int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); |
1807 | int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); | 1809 | int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); |
1808 | int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, | 1810 | int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, char *(*cb)(SSL *, void *)); |
1809 | char *(*cb)(SSL *,void *)); | 1811 | int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, int (*cb)(SSL *, void *)); |
1810 | int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, | 1812 | int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, int (*cb)(SSL *, int *, void *)); |
1811 | int (*cb)(SSL *,void *)); | ||
1812 | int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, | ||
1813 | int (*cb)(SSL *,int *,void *)); | ||
1814 | int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); | 1813 | int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); |
1815 | 1814 | ||
1816 | int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, | 1815 | int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, BIGNUM *sa, BIGNUM *v, char *info); |
1817 | BIGNUM *sa, BIGNUM *v, char *info); | 1816 | int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, const char *grp); |
1818 | int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, | ||
1819 | const char *grp); | ||
1820 | 1817 | ||
1821 | BIGNUM *SSL_get_srp_g(SSL *s); | 1818 | BIGNUM *SSL_get_srp_g(SSL *s); |
1822 | BIGNUM *SSL_get_srp_N(SSL *s); | 1819 | BIGNUM *SSL_get_srp_N(SSL *s); |
@@ -1828,15 +1825,15 @@ char *SSL_get_srp_userinfo(SSL *s); | |||
1828 | void SSL_free(SSL *ssl); | 1825 | void SSL_free(SSL *ssl); |
1829 | int SSL_accept(SSL *ssl); | 1826 | int SSL_accept(SSL *ssl); |
1830 | int SSL_connect(SSL *ssl); | 1827 | int SSL_connect(SSL *ssl); |
1831 | int SSL_read(SSL *ssl,void *buf,int num); | 1828 | int SSL_read(SSL *ssl, void *buf, int num); |
1832 | int SSL_peek(SSL *ssl,void *buf,int num); | 1829 | int SSL_peek(SSL *ssl, void *buf, int num); |
1833 | int SSL_write(SSL *ssl,const void *buf,int num); | 1830 | int SSL_write(SSL *ssl, const void *buf, int num); |
1834 | long SSL_ctrl(SSL *ssl,int cmd, long larg, void *parg); | 1831 | long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); |
1835 | long SSL_callback_ctrl(SSL *, int, void (*)(void)); | 1832 | long SSL_callback_ctrl(SSL *, int, void (*)(void)); |
1836 | long SSL_CTX_ctrl(SSL_CTX *ctx,int cmd, long larg, void *parg); | 1833 | long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); |
1837 | long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); | 1834 | long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); |
1838 | 1835 | ||
1839 | int SSL_get_error(const SSL *s,int ret_code); | 1836 | int SSL_get_error(const SSL *s, int ret_code); |
1840 | const char *SSL_get_version(const SSL *s); | 1837 | const char *SSL_get_version(const SSL *s); |
1841 | 1838 | ||
1842 | /* This sets the 'default' SSL version that SSL_new() will create */ | 1839 | /* This sets the 'default' SSL version that SSL_new() will create */ |
@@ -1852,7 +1849,7 @@ const SSL_METHOD *SSLv3_method(void); /* SSLv3 */ | |||
1852 | const SSL_METHOD *SSLv3_server_method(void); /* SSLv3 */ | 1849 | const SSL_METHOD *SSLv3_server_method(void); /* SSLv3 */ |
1853 | const SSL_METHOD *SSLv3_client_method(void); /* SSLv3 */ | 1850 | const SSL_METHOD *SSLv3_client_method(void); /* SSLv3 */ |
1854 | 1851 | ||
1855 | const SSL_METHOD *SSLv23_method(void); /* SSLv3 but can rollback to v2 */ | 1852 | const SSL_METHOD *SSLv23_method(void); /* SSLv3 but can rollback to v2 */ |
1856 | const SSL_METHOD *SSLv23_server_method(void); /* SSLv3 but can rollback to v2 */ | 1853 | const SSL_METHOD *SSLv23_server_method(void); /* SSLv3 but can rollback to v2 */ |
1857 | const SSL_METHOD *SSLv23_client_method(void); /* SSLv3 but can rollback to v2 */ | 1854 | const SSL_METHOD *SSLv23_client_method(void); /* SSLv3 but can rollback to v2 */ |
1858 | 1855 | ||
@@ -1892,8 +1889,8 @@ void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); | |||
1892 | void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); | 1889 | void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); |
1893 | STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); | 1890 | STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); |
1894 | STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); | 1891 | STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); |
1895 | int SSL_add_client_CA(SSL *ssl,X509 *x); | 1892 | int SSL_add_client_CA(SSL *ssl, X509 *x); |
1896 | int SSL_CTX_add_client_CA(SSL_CTX *ctx,X509 *x); | 1893 | int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); |
1897 | 1894 | ||
1898 | void SSL_set_connect_state(SSL *s); | 1895 | void SSL_set_connect_state(SSL *s); |
1899 | void SSL_set_accept_state(SSL *s); | 1896 | void SSL_set_accept_state(SSL *s); |
@@ -1902,7 +1899,7 @@ long SSL_get_default_timeout(const SSL *s); | |||
1902 | 1899 | ||
1903 | int SSL_library_init(void ); | 1900 | int SSL_library_init(void ); |
1904 | 1901 | ||
1905 | char *SSL_CIPHER_description(const SSL_CIPHER *,char *buf,int size); | 1902 | char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); |
1906 | STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk); | 1903 | STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk); |
1907 | 1904 | ||
1908 | SSL *SSL_dup(SSL *ssl); | 1905 | SSL *SSL_dup(SSL *ssl); |
@@ -1919,35 +1916,36 @@ int SSL_get_shutdown(const SSL *ssl); | |||
1919 | int SSL_version(const SSL *ssl); | 1916 | int SSL_version(const SSL *ssl); |
1920 | int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); | 1917 | int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); |
1921 | int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, | 1918 | int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, |
1922 | const char *CApath); | 1919 | const char *CApath); |
1923 | #define SSL_get0_session SSL_get_session /* just peek at pointer */ | 1920 | #define SSL_get0_session SSL_get_session /* just peek at pointer */ |
1924 | SSL_SESSION *SSL_get_session(const SSL *ssl); | 1921 | SSL_SESSION *SSL_get_session(const SSL *ssl); |
1925 | SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ | 1922 | SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ |
1926 | SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); | 1923 | SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); |
1927 | SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX* ctx); | 1924 | SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX* ctx); |
1928 | void SSL_set_info_callback(SSL *ssl, | 1925 | void SSL_set_info_callback(SSL *ssl, |
1929 | void (*cb)(const SSL *ssl,int type,int val)); | 1926 | void (*cb)(const SSL *ssl, int type, int val)); |
1930 | void (*SSL_get_info_callback(const SSL *ssl))(const SSL *ssl,int type,int val); | 1927 | void (*SSL_get_info_callback(const SSL *ssl))(const SSL *ssl, int type, int val); |
1931 | int SSL_state(const SSL *ssl); | 1928 | int SSL_state(const SSL *ssl); |
1932 | void SSL_set_state(SSL *ssl, int state); | 1929 | void SSL_set_state(SSL *ssl, int state); |
1933 | 1930 | ||
1934 | void SSL_set_verify_result(SSL *ssl,long v); | 1931 | void SSL_set_verify_result(SSL *ssl, long v); |
1935 | long SSL_get_verify_result(const SSL *ssl); | 1932 | long SSL_get_verify_result(const SSL *ssl); |
1936 | 1933 | ||
1937 | int SSL_set_ex_data(SSL *ssl,int idx,void *data); | 1934 | int SSL_set_ex_data(SSL *ssl, int idx, void *data); |
1938 | void *SSL_get_ex_data(const SSL *ssl,int idx); | 1935 | void *SSL_get_ex_data(const SSL *ssl, int idx); |
1939 | int SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, | 1936 | int SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, |
1940 | CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); | 1937 | CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); |
1941 | 1938 | ||
1942 | int SSL_SESSION_set_ex_data(SSL_SESSION *ss,int idx,void *data); | 1939 | int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); |
1943 | void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss,int idx); | 1940 | void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); |
1944 | int SSL_SESSION_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, | 1941 | int SSL_SESSION_get_ex_new_index(long argl, void *argp, |
1945 | CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); | 1942 | CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, |
1943 | CRYPTO_EX_free *free_func); | ||
1946 | 1944 | ||
1947 | int SSL_CTX_set_ex_data(SSL_CTX *ssl,int idx,void *data); | 1945 | int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); |
1948 | void *SSL_CTX_get_ex_data(const SSL_CTX *ssl,int idx); | 1946 | void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); |
1949 | int SSL_CTX_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, | 1947 | int SSL_CTX_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, |
1950 | CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); | 1948 | CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); |
1951 | 1949 | ||
1952 | int SSL_get_ex_data_X509_STORE_CTX_idx(void ); | 1950 | int SSL_get_ex_data_X509_STORE_CTX_idx(void ); |
1953 | 1951 | ||
@@ -1980,31 +1978,25 @@ int SSL_get_ex_data_X509_STORE_CTX_idx(void ); | |||
1980 | #define SSL_set_max_send_fragment(ssl,m) \ | 1978 | #define SSL_set_max_send_fragment(ssl,m) \ |
1981 | SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) | 1979 | SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) |
1982 | 1980 | ||
1983 | /* NB: the keylength is only applicable when is_export is true */ | 1981 | /* NB: the keylength is only applicable when is_export is true */ |
1984 | #ifndef OPENSSL_NO_RSA | 1982 | #ifndef OPENSSL_NO_RSA |
1985 | void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx, | 1983 | void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx, |
1986 | RSA *(*cb)(SSL *ssl,int is_export, | 1984 | RSA *(*cb)(SSL *ssl, int is_export, int keylength)); |
1987 | int keylength)); | ||
1988 | 1985 | ||
1989 | void SSL_set_tmp_rsa_callback(SSL *ssl, | 1986 | void SSL_set_tmp_rsa_callback(SSL *ssl, |
1990 | RSA *(*cb)(SSL *ssl,int is_export, | 1987 | RSA *(*cb)(SSL *ssl, int is_export, int keylength)); |
1991 | int keylength)); | ||
1992 | #endif | 1988 | #endif |
1993 | #ifndef OPENSSL_NO_DH | 1989 | #ifndef OPENSSL_NO_DH |
1994 | void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, | 1990 | void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, |
1995 | DH *(*dh)(SSL *ssl,int is_export, | 1991 | DH *(*dh)(SSL *ssl, int is_export, int keylength)); |
1996 | int keylength)); | ||
1997 | void SSL_set_tmp_dh_callback(SSL *ssl, | 1992 | void SSL_set_tmp_dh_callback(SSL *ssl, |
1998 | DH *(*dh)(SSL *ssl,int is_export, | 1993 | DH *(*dh)(SSL *ssl, int is_export, int keylength)); |
1999 | int keylength)); | ||
2000 | #endif | 1994 | #endif |
2001 | #ifndef OPENSSL_NO_ECDH | 1995 | #ifndef OPENSSL_NO_ECDH |
2002 | void SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, | 1996 | void SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, |
2003 | EC_KEY *(*ecdh)(SSL *ssl,int is_export, | 1997 | EC_KEY *(*ecdh)(SSL *ssl, int is_export, int keylength)); |
2004 | int keylength)); | ||
2005 | void SSL_set_tmp_ecdh_callback(SSL *ssl, | 1998 | void SSL_set_tmp_ecdh_callback(SSL *ssl, |
2006 | EC_KEY *(*ecdh)(SSL *ssl,int is_export, | 1999 | EC_KEY *(*ecdh)(SSL *ssl, int is_export, int keylength)); |
2007 | int keylength)); | ||
2008 | #endif | 2000 | #endif |
2009 | 2001 | ||
2010 | #ifndef OPENSSL_NO_COMP | 2002 | #ifndef OPENSSL_NO_COMP |
@@ -2012,23 +2004,24 @@ const COMP_METHOD *SSL_get_current_compression(SSL *s); | |||
2012 | const COMP_METHOD *SSL_get_current_expansion(SSL *s); | 2004 | const COMP_METHOD *SSL_get_current_expansion(SSL *s); |
2013 | const char *SSL_COMP_get_name(const COMP_METHOD *comp); | 2005 | const char *SSL_COMP_get_name(const COMP_METHOD *comp); |
2014 | STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); | 2006 | STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); |
2015 | int SSL_COMP_add_compression_method(int id,COMP_METHOD *cm); | 2007 | int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); |
2016 | #else | 2008 | #else |
2017 | const void *SSL_get_current_compression(SSL *s); | 2009 | const void *SSL_get_current_compression(SSL *s); |
2018 | const void *SSL_get_current_expansion(SSL *s); | 2010 | const void *SSL_get_current_expansion(SSL *s); |
2019 | const char *SSL_COMP_get_name(const void *comp); | 2011 | const char *SSL_COMP_get_name(const void *comp); |
2020 | void *SSL_COMP_get_compression_methods(void); | 2012 | void *SSL_COMP_get_compression_methods(void); |
2021 | int SSL_COMP_add_compression_method(int id,void *cm); | 2013 | int SSL_COMP_add_compression_method(int id, void *cm); |
2022 | #endif | 2014 | #endif |
2023 | 2015 | ||
2024 | /* TLS extensions functions */ | 2016 | /* TLS extensions functions */ |
2025 | int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); | 2017 | int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); |
2026 | 2018 | ||
2027 | int SSL_set_session_ticket_ext_cb(SSL *s, tls_session_ticket_ext_cb_fn cb, | 2019 | int SSL_set_session_ticket_ext_cb(SSL *s, |
2028 | void *arg); | 2020 | tls_session_ticket_ext_cb_fn cb, void *arg); |
2029 | 2021 | ||
2030 | /* Pre-shared secret session resumption functions */ | 2022 | /* Pre-shared secret session resumption functions */ |
2031 | int SSL_set_session_secret_cb(SSL *s, tls_session_secret_cb_fn tls_session_secret_cb, void *arg); | 2023 | int SSL_set_session_secret_cb(SSL *s, |
2024 | tls_session_secret_cb_fn tls_session_secret_cb, void *arg); | ||
2032 | 2025 | ||
2033 | void SSL_set_debug(SSL *s, int debug); | 2026 | void SSL_set_debug(SSL *s, int debug); |
2034 | int SSL_cache_hit(SSL *s); | 2027 | int SSL_cache_hit(SSL *s); |
diff --git a/src/lib/libssl/src/ssl/ssl2.h b/src/lib/libssl/src/ssl/ssl2.h index 29033c8be7..4052b11868 100644 --- a/src/lib/libssl/src/ssl/ssl2.h +++ b/src/lib/libssl/src/ssl/ssl2.h | |||
@@ -100,7 +100,7 @@ extern "C" { | |||
100 | #define SSL2_CK_DES_192_EDE3_CBC_WITH_MD5 0x020700c0 | 100 | #define SSL2_CK_DES_192_EDE3_CBC_WITH_MD5 0x020700c0 |
101 | #define SSL2_CK_DES_192_EDE3_CBC_WITH_SHA 0x020701c0 /* v3 */ | 101 | #define SSL2_CK_DES_192_EDE3_CBC_WITH_SHA 0x020701c0 /* v3 */ |
102 | #define SSL2_CK_RC4_64_WITH_MD5 0x02080080 /* MS hack */ | 102 | #define SSL2_CK_RC4_64_WITH_MD5 0x02080080 /* MS hack */ |
103 | 103 | ||
104 | #define SSL2_CK_DES_64_CFB64_WITH_MD5_1 0x02ff0800 /* SSLeay */ | 104 | #define SSL2_CK_DES_64_CFB64_WITH_MD5_1 0x02ff0800 /* SSLeay */ |
105 | #define SSL2_CK_NULL 0x02ff0810 /* SSLeay */ | 105 | #define SSL2_CK_NULL 0x02ff0810 /* SSLeay */ |
106 | 106 | ||
@@ -133,8 +133,8 @@ extern "C" { | |||
133 | 133 | ||
134 | /* Upper/Lower Bounds */ | 134 | /* Upper/Lower Bounds */ |
135 | #define SSL2_MAX_MASTER_KEY_LENGTH_IN_BITS 256 | 135 | #define SSL2_MAX_MASTER_KEY_LENGTH_IN_BITS 256 |
136 | #define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER 32767u /* 2^15-1 */ | 136 | #define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER 32767u /* 2^15-1 */ |
137 | #define SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER 16383 /* 2^14-1 */ | 137 | #define SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER 16383 /* 2^14-1 */ |
138 | 138 | ||
139 | #define SSL2_CHALLENGE_LENGTH 16 | 139 | #define SSL2_CHALLENGE_LENGTH 16 |
140 | /*#define SSL2_CHALLENGE_LENGTH 32 */ | 140 | /*#define SSL2_CHALLENGE_LENGTH 32 */ |
@@ -153,8 +153,7 @@ extern "C" { | |||
153 | 153 | ||
154 | #ifndef OPENSSL_NO_SSL_INTERN | 154 | #ifndef OPENSSL_NO_SSL_INTERN |
155 | 155 | ||
156 | typedef struct ssl2_state_st | 156 | typedef struct ssl2_state_st { |
157 | { | ||
158 | int three_byte_header; | 157 | int three_byte_header; |
159 | int clear_text; /* clear text */ | 158 | int clear_text; /* clear text */ |
160 | int escape; /* not used in SSLv2 */ | 159 | int escape; /* not used in SSLv2 */ |
@@ -167,8 +166,8 @@ typedef struct ssl2_state_st | |||
167 | const unsigned char *wpend_buf; | 166 | const unsigned char *wpend_buf; |
168 | 167 | ||
169 | int wpend_off; /* offset to data to write */ | 168 | int wpend_off; /* offset to data to write */ |
170 | int wpend_len; /* number of bytes passwd to write */ | 169 | int wpend_len; /* number of bytes passwd to write */ |
171 | int wpend_ret; /* number of bytes to return to caller */ | 170 | int wpend_ret; /* number of bytes to return to caller */ |
172 | 171 | ||
173 | /* buffer raw data */ | 172 | /* buffer raw data */ |
174 | int rbuf_left; | 173 | int rbuf_left; |
@@ -191,7 +190,7 @@ typedef struct ssl2_state_st | |||
191 | unsigned char *read_key; | 190 | unsigned char *read_key; |
192 | unsigned char *write_key; | 191 | unsigned char *write_key; |
193 | 192 | ||
194 | /* Stuff specifically to do with this SSL session */ | 193 | /* Stuff specifically to do with this SSL session */ |
195 | unsigned int challenge_length; | 194 | unsigned int challenge_length; |
196 | unsigned char challenge[SSL2_MAX_CHALLENGE_LENGTH]; | 195 | unsigned char challenge[SSL2_MAX_CHALLENGE_LENGTH]; |
197 | unsigned int conn_id_length; | 196 | unsigned int conn_id_length; |
@@ -202,20 +201,23 @@ typedef struct ssl2_state_st | |||
202 | unsigned long read_sequence; | 201 | unsigned long read_sequence; |
203 | unsigned long write_sequence; | 202 | unsigned long write_sequence; |
204 | 203 | ||
205 | struct { | 204 | struct { |
206 | unsigned int conn_id_length; | 205 | unsigned int conn_id_length; |
207 | unsigned int cert_type; | 206 | unsigned int cert_type; |
207 | |||
208 | unsigned int cert_length; | 208 | unsigned int cert_length; |
209 | unsigned int csl; | 209 | unsigned int csl; |
210 | |||
210 | unsigned int clear; | 211 | unsigned int clear; |
211 | unsigned int enc; | 212 | unsigned int enc; |
213 | |||
212 | unsigned char ccl[SSL2_MAX_CERT_CHALLENGE_LENGTH]; | 214 | unsigned char ccl[SSL2_MAX_CERT_CHALLENGE_LENGTH]; |
213 | unsigned int cipher_spec_length; | 215 | unsigned int cipher_spec_length; |
214 | unsigned int session_id_length; | 216 | unsigned int session_id_length; |
215 | unsigned int clen; | 217 | unsigned int clen; |
216 | unsigned int rlen; | 218 | unsigned int rlen; |
217 | } tmp; | 219 | } tmp; |
218 | } SSL2_STATE; | 220 | } SSL2_STATE; |
219 | 221 | ||
220 | #endif | 222 | #endif |
221 | 223 | ||
@@ -265,4 +267,3 @@ typedef struct ssl2_state_st | |||
265 | } | 267 | } |
266 | #endif | 268 | #endif |
267 | #endif | 269 | #endif |
268 | |||
diff --git a/src/lib/libssl/src/ssl/ssl23.h b/src/lib/libssl/src/ssl/ssl23.h index d3228983c7..4e28a06796 100644 --- a/src/lib/libssl/src/ssl/ssl23.h +++ b/src/lib/libssl/src/ssl/ssl23.h | |||
@@ -80,4 +80,3 @@ extern "C" { | |||
80 | } | 80 | } |
81 | #endif | 81 | #endif |
82 | #endif | 82 | #endif |
83 | |||
diff --git a/src/lib/libssl/src/ssl/ssl3.h b/src/lib/libssl/src/ssl/ssl3.h index cb8b2492ec..2b25357917 100644 --- a/src/lib/libssl/src/ssl/ssl3.h +++ b/src/lib/libssl/src/ssl/ssl3.h | |||
@@ -163,13 +163,13 @@ extern "C" { | |||
163 | #define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B | 163 | #define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B |
164 | 164 | ||
165 | #if 0 | 165 | #if 0 |
166 | #define SSL3_CK_FZA_DMS_NULL_SHA 0x0300001C | 166 | #define SSL3_CK_FZA_DMS_NULL_SHA 0x0300001C |
167 | #define SSL3_CK_FZA_DMS_FZA_SHA 0x0300001D | 167 | #define SSL3_CK_FZA_DMS_FZA_SHA 0x0300001D |
168 | #if 0 /* Because it clashes with KRB5, is never used any more, and is safe | 168 | #if 0 /* Because it clashes with KRB5, is never used any more, and is safe |
169 | to remove according to David Hopwood <david.hopwood@zetnet.co.uk> | 169 | to remove according to David Hopwood <david.hopwood@zetnet.co.uk> |
170 | of the ietf-tls list */ | 170 | of the ietf-tls list */ |
171 | #define SSL3_CK_FZA_DMS_RC4_SHA 0x0300001E | 171 | #define SSL3_CK_FZA_DMS_RC4_SHA 0x0300001E |
172 | #endif | 172 | #endif |
173 | #endif | 173 | #endif |
174 | 174 | ||
175 | /* VRS Additional Kerberos5 entries | 175 | /* VRS Additional Kerberos5 entries |
@@ -222,9 +222,9 @@ extern "C" { | |||
222 | #define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA" | 222 | #define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA" |
223 | 223 | ||
224 | #if 0 | 224 | #if 0 |
225 | #define SSL3_TXT_FZA_DMS_NULL_SHA "FZA-NULL-SHA" | 225 | #define SSL3_TXT_FZA_DMS_NULL_SHA "FZA-NULL-SHA" |
226 | #define SSL3_TXT_FZA_DMS_FZA_SHA "FZA-FZA-CBC-SHA" | 226 | #define SSL3_TXT_FZA_DMS_FZA_SHA "FZA-FZA-CBC-SHA" |
227 | #define SSL3_TXT_FZA_DMS_RC4_SHA "FZA-RC4-SHA" | 227 | #define SSL3_TXT_FZA_DMS_RC4_SHA "FZA-RC4-SHA" |
228 | #endif | 228 | #endif |
229 | 229 | ||
230 | #define SSL3_TXT_KRB5_DES_64_CBC_SHA "KRB5-DES-CBC-SHA" | 230 | #define SSL3_TXT_KRB5_DES_64_CBC_SHA "KRB5-DES-CBC-SHA" |
@@ -342,11 +342,10 @@ extern "C" { | |||
342 | 342 | ||
343 | #define TLS1_HB_REQUEST 1 | 343 | #define TLS1_HB_REQUEST 1 |
344 | #define TLS1_HB_RESPONSE 2 | 344 | #define TLS1_HB_RESPONSE 2 |
345 | 345 | ||
346 | #ifndef OPENSSL_NO_SSL_INTERN | 346 | #ifndef OPENSSL_NO_SSL_INTERN |
347 | 347 | ||
348 | typedef struct ssl3_record_st | 348 | typedef struct ssl3_record_st { |
349 | { | ||
350 | /*r */ int type; /* type of record */ | 349 | /*r */ int type; /* type of record */ |
351 | /*rw*/ unsigned int length; /* How many bytes available */ | 350 | /*rw*/ unsigned int length; /* How many bytes available */ |
352 | /*r */ unsigned int off; /* read/write offset into 'buf' */ | 351 | /*r */ unsigned int off; /* read/write offset into 'buf' */ |
@@ -355,16 +354,15 @@ typedef struct ssl3_record_st | |||
355 | /*r */ unsigned char *comp; /* only used with decompression - malloc()ed */ | 354 | /*r */ unsigned char *comp; /* only used with decompression - malloc()ed */ |
356 | /*r */ unsigned long epoch; /* epoch number, needed by DTLS1 */ | 355 | /*r */ unsigned long epoch; /* epoch number, needed by DTLS1 */ |
357 | /*r */ unsigned char seq_num[8]; /* sequence number, needed by DTLS1 */ | 356 | /*r */ unsigned char seq_num[8]; /* sequence number, needed by DTLS1 */ |
358 | } SSL3_RECORD; | 357 | } SSL3_RECORD; |
359 | 358 | ||
360 | typedef struct ssl3_buffer_st | 359 | typedef struct ssl3_buffer_st { |
361 | { | 360 | unsigned char *buf; /* at least SSL3_RT_MAX_PACKET_SIZE bytes, |
362 | unsigned char *buf; /* at least SSL3_RT_MAX_PACKET_SIZE bytes, | ||
363 | * see ssl3_setup_buffers() */ | 361 | * see ssl3_setup_buffers() */ |
364 | size_t len; /* buffer size */ | 362 | size_t len; /* buffer size */ |
365 | int offset; /* where to 'copy from' */ | 363 | int offset; /* where to 'copy from' */ |
366 | int left; /* how many bytes left */ | 364 | int left; /* how many bytes left */ |
367 | } SSL3_BUFFER; | 365 | } SSL3_BUFFER; |
368 | 366 | ||
369 | #endif | 367 | #endif |
370 | 368 | ||
@@ -388,7 +386,7 @@ typedef struct ssl3_buffer_st | |||
388 | #define TLS1_FLAGS_TLS_PADDING_BUG 0x0008 | 386 | #define TLS1_FLAGS_TLS_PADDING_BUG 0x0008 |
389 | #define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 | 387 | #define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 |
390 | #define TLS1_FLAGS_KEEP_HANDSHAKE 0x0020 | 388 | #define TLS1_FLAGS_KEEP_HANDSHAKE 0x0020 |
391 | 389 | ||
392 | /* SSL3_FLAGS_SGC_RESTART_DONE is set when we | 390 | /* SSL3_FLAGS_SGC_RESTART_DONE is set when we |
393 | * restart a handshake because of MS SGC and so prevents us | 391 | * restart a handshake because of MS SGC and so prevents us |
394 | * from restarting the handshake in a loop. It's reset on a | 392 | * from restarting the handshake in a loop. It's reset on a |
@@ -402,8 +400,7 @@ typedef struct ssl3_buffer_st | |||
402 | 400 | ||
403 | #ifndef OPENSSL_NO_SSL_INTERN | 401 | #ifndef OPENSSL_NO_SSL_INTERN |
404 | 402 | ||
405 | typedef struct ssl3_state_st | 403 | typedef struct ssl3_state_st { |
406 | { | ||
407 | long flags; | 404 | long flags; |
408 | int delay_buf_pop_ret; | 405 | int delay_buf_pop_ret; |
409 | 406 | ||
@@ -471,7 +468,8 @@ typedef struct ssl3_state_st | |||
471 | 468 | ||
472 | /* Opaque PRF input as used for the current handshake. | 469 | /* Opaque PRF input as used for the current handshake. |
473 | * These fields are used only if TLSEXT_TYPE_opaque_prf_input is defined | 470 | * These fields are used only if TLSEXT_TYPE_opaque_prf_input is defined |
474 | * (otherwise, they are merely present to improve binary compatibility) */ | 471 | * (otherwise, they are merely present to improve binary compatibility) |
472 | */ | ||
475 | void *client_opaque_prf_input; | 473 | void *client_opaque_prf_input; |
476 | size_t client_opaque_prf_input_len; | 474 | size_t client_opaque_prf_input_len; |
477 | void *server_opaque_prf_input; | 475 | void *server_opaque_prf_input; |
@@ -501,7 +499,7 @@ typedef struct ssl3_state_st | |||
501 | #endif | 499 | #endif |
502 | 500 | ||
503 | /* used when SSL_ST_FLUSH_DATA is entered */ | 501 | /* used when SSL_ST_FLUSH_DATA is entered */ |
504 | int next_state; | 502 | int next_state; |
505 | 503 | ||
506 | int reuse_message; | 504 | int reuse_message; |
507 | 505 | ||
@@ -526,17 +524,18 @@ typedef struct ssl3_state_st | |||
526 | char *new_compression; | 524 | char *new_compression; |
527 | #endif | 525 | #endif |
528 | int cert_request; | 526 | int cert_request; |
529 | } tmp; | 527 | } tmp; |
530 | 528 | ||
531 | /* Connection binding to prevent renegotiation attacks */ | 529 | /* Connection binding to prevent renegotiation attacks */ |
532 | unsigned char previous_client_finished[EVP_MAX_MD_SIZE]; | 530 | unsigned char previous_client_finished[EVP_MAX_MD_SIZE]; |
533 | unsigned char previous_client_finished_len; | 531 | unsigned char previous_client_finished_len; |
534 | unsigned char previous_server_finished[EVP_MAX_MD_SIZE]; | 532 | unsigned char previous_server_finished[EVP_MAX_MD_SIZE]; |
535 | unsigned char previous_server_finished_len; | 533 | unsigned char previous_server_finished_len; |
536 | int send_connection_binding; /* TODOEKR */ | 534 | int send_connection_binding; /* TODOEKR */ |
537 | 535 | ||
538 | #ifndef OPENSSL_NO_NEXTPROTONEG | 536 | #ifndef OPENSSL_NO_NEXTPROTONEG |
539 | /* Set if we saw the Next Protocol Negotiation extension from our peer. */ | 537 | /* Set if we saw the Next Protocol Negotiation extension from our peer. |
538 | */ | ||
540 | int next_proto_neg_seen; | 539 | int next_proto_neg_seen; |
541 | #endif | 540 | #endif |
542 | 541 | ||
@@ -548,7 +547,7 @@ typedef struct ssl3_state_st | |||
548 | char is_probably_safari; | 547 | char is_probably_safari; |
549 | #endif /* !OPENSSL_NO_EC */ | 548 | #endif /* !OPENSSL_NO_EC */ |
550 | #endif /* !OPENSSL_NO_TLSEXT */ | 549 | #endif /* !OPENSSL_NO_TLSEXT */ |
551 | } SSL3_STATE; | 550 | } SSL3_STATE; |
552 | 551 | ||
553 | #endif | 552 | #endif |
554 | 553 | ||
@@ -690,4 +689,3 @@ typedef struct ssl3_state_st | |||
690 | } | 689 | } |
691 | #endif | 690 | #endif |
692 | #endif | 691 | #endif |
693 | |||
diff --git a/src/lib/libssl/src/ssl/ssl_locl.h b/src/lib/libssl/src/ssl/ssl_locl.h index 7311d984ae..203a47480f 100644 --- a/src/lib/libssl/src/ssl/ssl_locl.h +++ b/src/lib/libssl/src/ssl/ssl_locl.h | |||
@@ -480,21 +480,19 @@ | |||
480 | #define NAMED_CURVE_TYPE 3 | 480 | #define NAMED_CURVE_TYPE 3 |
481 | #endif /* OPENSSL_NO_EC */ | 481 | #endif /* OPENSSL_NO_EC */ |
482 | 482 | ||
483 | typedef struct cert_pkey_st | 483 | typedef struct cert_pkey_st { |
484 | { | ||
485 | X509 *x509; | 484 | X509 *x509; |
486 | EVP_PKEY *privatekey; | 485 | EVP_PKEY *privatekey; |
487 | /* Digest to use when signing */ | 486 | /* Digest to use when signing */ |
488 | const EVP_MD *digest; | 487 | const EVP_MD *digest; |
489 | } CERT_PKEY; | 488 | } CERT_PKEY; |
490 | 489 | ||
491 | typedef struct cert_st | 490 | typedef struct cert_st { |
492 | { | ||
493 | /* Current active set */ | 491 | /* Current active set */ |
494 | CERT_PKEY *key; /* ALWAYS points to an element of the pkeys array | 492 | CERT_PKEY *key; /* ALWAYS points to an element of the pkeys array |
495 | * Probably it would make more sense to store | 493 | * Probably it would make more sense to store |
496 | * an index, not a pointer. */ | 494 | * an index, not a pointer. */ |
497 | 495 | ||
498 | /* The following masks are for the key and auth | 496 | /* The following masks are for the key and auth |
499 | * algorithms that are supported by the certs below */ | 497 | * algorithms that are supported by the certs below */ |
500 | int valid; | 498 | int valid; |
@@ -504,26 +502,25 @@ typedef struct cert_st | |||
504 | unsigned long export_mask_a; | 502 | unsigned long export_mask_a; |
505 | #ifndef OPENSSL_NO_RSA | 503 | #ifndef OPENSSL_NO_RSA |
506 | RSA *rsa_tmp; | 504 | RSA *rsa_tmp; |
507 | RSA *(*rsa_tmp_cb)(SSL *ssl,int is_export,int keysize); | 505 | RSA *(*rsa_tmp_cb)(SSL *ssl, int is_export, int keysize); |
508 | #endif | 506 | #endif |
509 | #ifndef OPENSSL_NO_DH | 507 | #ifndef OPENSSL_NO_DH |
510 | DH *dh_tmp; | 508 | DH *dh_tmp; |
511 | DH *(*dh_tmp_cb)(SSL *ssl,int is_export,int keysize); | 509 | DH *(*dh_tmp_cb)(SSL *ssl, int is_export, int keysize); |
512 | #endif | 510 | #endif |
513 | #ifndef OPENSSL_NO_ECDH | 511 | #ifndef OPENSSL_NO_ECDH |
514 | EC_KEY *ecdh_tmp; | 512 | EC_KEY *ecdh_tmp; |
515 | /* Callback for generating ephemeral ECDH keys */ | 513 | /* Callback for generating ephemeral ECDH keys */ |
516 | EC_KEY *(*ecdh_tmp_cb)(SSL *ssl,int is_export,int keysize); | 514 | EC_KEY *(*ecdh_tmp_cb)(SSL *ssl, int is_export, int keysize); |
517 | #endif | 515 | #endif |
518 | 516 | ||
519 | CERT_PKEY pkeys[SSL_PKEY_NUM]; | 517 | CERT_PKEY pkeys[SSL_PKEY_NUM]; |
520 | 518 | ||
521 | int references; /* >1 only if SSL_copy_session_id is used */ | 519 | int references; /* >1 only if SSL_copy_session_id is used */ |
522 | } CERT; | 520 | } CERT; |
523 | 521 | ||
524 | 522 | ||
525 | typedef struct sess_cert_st | 523 | typedef struct sess_cert_st { |
526 | { | ||
527 | STACK_OF(X509) *cert_chain; /* as received from peer (not for SSL2) */ | 524 | STACK_OF(X509) *cert_chain; /* as received from peer (not for SSL2) */ |
528 | 525 | ||
529 | /* The 'peer_...' members are used only by clients. */ | 526 | /* The 'peer_...' members are used only by clients. */ |
@@ -545,7 +542,7 @@ typedef struct sess_cert_st | |||
545 | #endif | 542 | #endif |
546 | 543 | ||
547 | int references; /* actually always 1 at the moment */ | 544 | int references; /* actually always 1 at the moment */ |
548 | } SESS_CERT; | 545 | } SESS_CERT; |
549 | 546 | ||
550 | 547 | ||
551 | /*#define MAC_DEBUG */ | 548 | /*#define MAC_DEBUG */ |
@@ -568,12 +565,12 @@ typedef struct sess_cert_st | |||
568 | /* This is for the SSLv3/TLSv1.0 differences in crypto/hash stuff | 565 | /* This is for the SSLv3/TLSv1.0 differences in crypto/hash stuff |
569 | * It is a bit of a mess of functions, but hell, think of it as | 566 | * It is a bit of a mess of functions, but hell, think of it as |
570 | * an opaque structure :-) */ | 567 | * an opaque structure :-) */ |
571 | typedef struct ssl3_enc_method | 568 | typedef struct ssl3_enc_method { |
572 | { | ||
573 | int (*enc)(SSL *, int); | 569 | int (*enc)(SSL *, int); |
574 | int (*mac)(SSL *, unsigned char *, int); | 570 | int (*mac)(SSL *, unsigned char *, int); |
575 | int (*setup_key_block)(SSL *); | 571 | int (*setup_key_block)(SSL *); |
576 | int (*generate_master_secret)(SSL *, unsigned char *, unsigned char *, int); | 572 | int (*generate_master_secret)(SSL *, unsigned char *, |
573 | unsigned char *, int); | ||
577 | int (*change_cipher_state)(SSL *, int); | 574 | int (*change_cipher_state)(SSL *, int); |
578 | int (*final_finish_mac)(SSL *, const char *, int, unsigned char *); | 575 | int (*final_finish_mac)(SSL *, const char *, int, unsigned char *); |
579 | int finish_mac_length; | 576 | int finish_mac_length; |
@@ -584,33 +581,29 @@ typedef struct ssl3_enc_method | |||
584 | int server_finished_label_len; | 581 | int server_finished_label_len; |
585 | int (*alert_value)(int); | 582 | int (*alert_value)(int); |
586 | int (*export_keying_material)(SSL *, unsigned char *, size_t, | 583 | int (*export_keying_material)(SSL *, unsigned char *, size_t, |
587 | const char *, size_t, | 584 | const char *, size_t, const unsigned char *, size_t, |
588 | const unsigned char *, size_t, | 585 | int use_context); |
589 | int use_context); | 586 | } SSL3_ENC_METHOD; |
590 | } SSL3_ENC_METHOD; | ||
591 | 587 | ||
592 | #ifndef OPENSSL_NO_COMP | 588 | #ifndef OPENSSL_NO_COMP |
593 | /* Used for holding the relevant compression methods loaded into SSL_CTX */ | 589 | /* Used for holding the relevant compression methods loaded into SSL_CTX */ |
594 | typedef struct ssl3_comp_st | 590 | typedef struct ssl3_comp_st { |
595 | { | ||
596 | int comp_id; /* The identifier byte for this compression type */ | 591 | int comp_id; /* The identifier byte for this compression type */ |
597 | char *name; /* Text name used for the compression type */ | 592 | char *name; /* Text name used for the compression type */ |
598 | COMP_METHOD *method; /* The method :-) */ | 593 | COMP_METHOD *method; /* The method :-) */ |
599 | } SSL3_COMP; | 594 | } SSL3_COMP; |
600 | #endif | 595 | #endif |
601 | 596 | ||
602 | #ifndef OPENSSL_NO_BUF_FREELISTS | 597 | #ifndef OPENSSL_NO_BUF_FREELISTS |
603 | typedef struct ssl3_buf_freelist_st | 598 | typedef struct ssl3_buf_freelist_st { |
604 | { | ||
605 | size_t chunklen; | 599 | size_t chunklen; |
606 | unsigned int len; | 600 | unsigned int len; |
607 | struct ssl3_buf_freelist_entry_st *head; | 601 | struct ssl3_buf_freelist_entry_st *head; |
608 | } SSL3_BUF_FREELIST; | 602 | } SSL3_BUF_FREELIST; |
609 | 603 | ||
610 | typedef struct ssl3_buf_freelist_entry_st | 604 | typedef struct ssl3_buf_freelist_entry_st { |
611 | { | ||
612 | struct ssl3_buf_freelist_entry_st *next; | 605 | struct ssl3_buf_freelist_entry_st *next; |
613 | } SSL3_BUF_FREELIST_ENTRY; | 606 | } SSL3_BUF_FREELIST_ENTRY; |
614 | #endif | 607 | #endif |
615 | 608 | ||
616 | extern SSL3_ENC_METHOD ssl3_undef_enc_method; | 609 | extern SSL3_ENC_METHOD ssl3_undef_enc_method; |
@@ -822,32 +815,33 @@ SESS_CERT *ssl_sess_cert_new(void); | |||
822 | void ssl_sess_cert_free(SESS_CERT *sc); | 815 | void ssl_sess_cert_free(SESS_CERT *sc); |
823 | int ssl_set_peer_cert_type(SESS_CERT *c, int type); | 816 | int ssl_set_peer_cert_type(SESS_CERT *c, int type); |
824 | int ssl_get_new_session(SSL *s, int session); | 817 | int ssl_get_new_session(SSL *s, int session); |
825 | int ssl_get_prev_session(SSL *s, unsigned char *session,int len, const unsigned char *limit); | 818 | int ssl_get_prev_session(SSL *s, unsigned char *session, int len, |
826 | int ssl_cipher_id_cmp(const SSL_CIPHER *a,const SSL_CIPHER *b); | 819 | const unsigned char *limit); |
827 | DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(SSL_CIPHER, SSL_CIPHER, | 820 | int ssl_cipher_id_cmp(const SSL_CIPHER *a, const SSL_CIPHER *b); |
828 | ssl_cipher_id); | 821 | DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(SSL_CIPHER, SSL_CIPHER, ssl_cipher_id); |
829 | int ssl_cipher_ptr_id_cmp(const SSL_CIPHER * const *ap, | 822 | int ssl_cipher_ptr_id_cmp(const SSL_CIPHER * const *ap, |
830 | const SSL_CIPHER * const *bp); | 823 | const SSL_CIPHER * const *bp); |
831 | STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num, | 824 | STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s, unsigned char *p, |
832 | STACK_OF(SSL_CIPHER) **skp); | 825 | int num, STACK_OF(SSL_CIPHER) **skp); |
833 | int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p, | 826 | int ssl_cipher_list_to_bytes(SSL *s, STACK_OF(SSL_CIPHER) *sk, |
834 | int (*put_cb)(const SSL_CIPHER *, unsigned char *)); | 827 | unsigned char *p, int (*put_cb)(const SSL_CIPHER *, unsigned char *)); |
835 | STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *meth, | 828 | STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *meth, |
836 | STACK_OF(SSL_CIPHER) **pref, | 829 | STACK_OF(SSL_CIPHER) **pref, STACK_OF(SSL_CIPHER) **sorted, |
837 | STACK_OF(SSL_CIPHER) **sorted, | 830 | const char *rule_str); |
838 | const char *rule_str); | ||
839 | void ssl_update_cache(SSL *s, int mode); | 831 | void ssl_update_cache(SSL *s, int mode); |
840 | int ssl_cipher_get_evp(const SSL_SESSION *s,const EVP_CIPHER **enc, | 832 | int ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc, |
841 | const EVP_MD **md,int *mac_pkey_type,int *mac_secret_size, SSL_COMP **comp); | 833 | const EVP_MD **md, int *mac_pkey_type, int *mac_secret_size, |
842 | int ssl_get_handshake_digest(int i,long *mask,const EVP_MD **md); | 834 | SSL_COMP **comp); |
843 | int ssl_verify_cert_chain(SSL *s,STACK_OF(X509) *sk); | 835 | int ssl_get_handshake_digest(int i, long *mask, const EVP_MD **md); |
836 | |||
837 | int ssl_verify_cert_chain(SSL *s, STACK_OF(X509) *sk); | ||
844 | int ssl_undefined_function(SSL *s); | 838 | int ssl_undefined_function(SSL *s); |
845 | int ssl_undefined_void_function(void); | 839 | int ssl_undefined_void_function(void); |
846 | int ssl_undefined_const_function(const SSL *s); | 840 | int ssl_undefined_const_function(const SSL *s); |
847 | CERT_PKEY *ssl_get_server_send_pkey(const SSL *s); | 841 | CERT_PKEY *ssl_get_server_send_pkey(const SSL *s); |
848 | X509 *ssl_get_server_send_cert(const SSL *); | 842 | X509 *ssl_get_server_send_cert(const SSL *); |
849 | EVP_PKEY *ssl_get_sign_pkey(SSL *s,const SSL_CIPHER *c, const EVP_MD **pmd); | 843 | EVP_PKEY *ssl_get_sign_pkey(SSL *s, const SSL_CIPHER *c, const EVP_MD **pmd); |
850 | int ssl_cert_type(X509 *x,EVP_PKEY *pkey); | 844 | int ssl_cert_type(X509 *x, EVP_PKEY *pkey); |
851 | void ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher); | 845 | void ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher); |
852 | STACK_OF(SSL_CIPHER) *ssl_get_ciphers_by_id(SSL *s); | 846 | STACK_OF(SSL_CIPHER) *ssl_get_ciphers_by_id(SSL *s); |
853 | int ssl_verify_alarm_type(long type); | 847 | int ssl_verify_alarm_type(long type); |
@@ -856,14 +850,14 @@ int ssl_fill_hello_random(SSL *s, int server, unsigned char *field, int len); | |||
856 | 850 | ||
857 | int ssl2_enc_init(SSL *s, int client); | 851 | int ssl2_enc_init(SSL *s, int client); |
858 | int ssl2_generate_key_material(SSL *s); | 852 | int ssl2_generate_key_material(SSL *s); |
859 | void ssl2_enc(SSL *s,int send_data); | 853 | void ssl2_enc(SSL *s, int send_data); |
860 | void ssl2_mac(SSL *s,unsigned char *mac,int send_data); | 854 | void ssl2_mac(SSL *s, unsigned char *mac, int send_data); |
861 | const SSL_CIPHER *ssl2_get_cipher_by_char(const unsigned char *p); | 855 | const SSL_CIPHER *ssl2_get_cipher_by_char(const unsigned char *p); |
862 | int ssl2_put_cipher_by_char(const SSL_CIPHER *c,unsigned char *p); | 856 | int ssl2_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p); |
863 | int ssl2_part_read(SSL *s, unsigned long f, int i); | 857 | int ssl2_part_read(SSL *s, unsigned long f, int i); |
864 | int ssl2_do_write(SSL *s); | 858 | int ssl2_do_write(SSL *s); |
865 | int ssl2_set_certificate(SSL *s, int type, int len, const unsigned char *data); | 859 | int ssl2_set_certificate(SSL *s, int type, int len, const unsigned char *data); |
866 | void ssl2_return_error(SSL *s,int reason); | 860 | void ssl2_return_error(SSL *s, int reason); |
867 | void ssl2_write_error(SSL *s); | 861 | void ssl2_write_error(SSL *s); |
868 | int ssl2_num_ciphers(void); | 862 | int ssl2_num_ciphers(void); |
869 | const SSL_CIPHER *ssl2_get_cipher(unsigned int u); | 863 | const SSL_CIPHER *ssl2_get_cipher(unsigned int u); |
@@ -876,47 +870,50 @@ int ssl2_peek(SSL *s, void *buf, int len); | |||
876 | int ssl2_write(SSL *s, const void *buf, int len); | 870 | int ssl2_write(SSL *s, const void *buf, int len); |
877 | int ssl2_shutdown(SSL *s); | 871 | int ssl2_shutdown(SSL *s); |
878 | void ssl2_clear(SSL *s); | 872 | void ssl2_clear(SSL *s); |
879 | long ssl2_ctrl(SSL *s,int cmd, long larg, void *parg); | 873 | long ssl2_ctrl(SSL *s, int cmd, long larg, void *parg); |
880 | long ssl2_ctx_ctrl(SSL_CTX *s,int cmd, long larg, void *parg); | 874 | long ssl2_ctx_ctrl(SSL_CTX *s, int cmd, long larg, void *parg); |
881 | long ssl2_callback_ctrl(SSL *s,int cmd, void (*fp)(void)); | 875 | long ssl2_callback_ctrl(SSL *s, int cmd, void (*fp)(void)); |
882 | long ssl2_ctx_callback_ctrl(SSL_CTX *s,int cmd, void (*fp)(void)); | 876 | long ssl2_ctx_callback_ctrl(SSL_CTX *s, int cmd, void (*fp)(void)); |
883 | int ssl2_pending(const SSL *s); | 877 | int ssl2_pending(const SSL *s); |
884 | long ssl2_default_timeout(void ); | 878 | long ssl2_default_timeout(void ); |
885 | 879 | ||
886 | const SSL_CIPHER *ssl3_get_cipher_by_char(const unsigned char *p); | 880 | const SSL_CIPHER *ssl3_get_cipher_by_char(const unsigned char *p); |
887 | int ssl3_put_cipher_by_char(const SSL_CIPHER *c,unsigned char *p); | 881 | int ssl3_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p); |
888 | void ssl3_init_finished_mac(SSL *s); | 882 | void ssl3_init_finished_mac(SSL *s); |
889 | int ssl3_send_server_certificate(SSL *s); | 883 | int ssl3_send_server_certificate(SSL *s); |
890 | int ssl3_send_newsession_ticket(SSL *s); | 884 | int ssl3_send_newsession_ticket(SSL *s); |
891 | int ssl3_send_cert_status(SSL *s); | 885 | int ssl3_send_cert_status(SSL *s); |
892 | int ssl3_get_finished(SSL *s,int state_a,int state_b); | 886 | int ssl3_get_finished(SSL *s, int state_a, int state_b); |
893 | int ssl3_setup_key_block(SSL *s); | 887 | int ssl3_setup_key_block(SSL *s); |
894 | int ssl3_send_change_cipher_spec(SSL *s,int state_a,int state_b); | 888 | int ssl3_send_change_cipher_spec(SSL *s, int state_a, int state_b); |
895 | int ssl3_change_cipher_state(SSL *s,int which); | 889 | int ssl3_change_cipher_state(SSL *s, int which); |
896 | void ssl3_cleanup_key_block(SSL *s); | 890 | void ssl3_cleanup_key_block(SSL *s); |
897 | int ssl3_do_write(SSL *s,int type); | 891 | int ssl3_do_write(SSL *s, int type); |
898 | int ssl3_send_alert(SSL *s,int level, int desc); | 892 | int ssl3_send_alert(SSL *s, int level, int desc); |
899 | int ssl3_generate_master_secret(SSL *s, unsigned char *out, | 893 | int ssl3_generate_master_secret(SSL *s, unsigned char *out, |
900 | unsigned char *p, int len); | 894 | unsigned char *p, int len); |
901 | int ssl3_get_req_cert_type(SSL *s,unsigned char *p); | 895 | int ssl3_get_req_cert_type(SSL *s, unsigned char *p); |
902 | long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok); | 896 | long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok); |
903 | int ssl3_send_finished(SSL *s, int a, int b, const char *sender,int slen); | 897 | int ssl3_send_finished(SSL *s, int a, int b, const char *sender, int slen); |
904 | int ssl3_num_ciphers(void); | 898 | int ssl3_num_ciphers(void); |
905 | const SSL_CIPHER *ssl3_get_cipher(unsigned int u); | 899 | const SSL_CIPHER *ssl3_get_cipher(unsigned int u); |
906 | int ssl3_renegotiate(SSL *ssl); | 900 | int ssl3_renegotiate(SSL *ssl); |
907 | int ssl3_renegotiate_check(SSL *ssl); | 901 | |
902 | int ssl3_renegotiate_check(SSL *ssl); | ||
903 | |||
908 | int ssl3_dispatch_alert(SSL *s); | 904 | int ssl3_dispatch_alert(SSL *s); |
909 | int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek); | 905 | int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek); |
910 | int ssl3_write_bytes(SSL *s, int type, const void *buf, int len); | 906 | int ssl3_write_bytes(SSL *s, int type, const void *buf, int len); |
911 | int ssl3_final_finish_mac(SSL *s, const char *sender, int slen,unsigned char *p); | 907 | int ssl3_final_finish_mac(SSL *s, const char *sender, int slen, |
908 | unsigned char *p); | ||
912 | int ssl3_cert_verify_mac(SSL *s, int md_nid, unsigned char *p); | 909 | int ssl3_cert_verify_mac(SSL *s, int md_nid, unsigned char *p); |
913 | void ssl3_finish_mac(SSL *s, const unsigned char *buf, int len); | 910 | void ssl3_finish_mac(SSL *s, const unsigned char *buf, int len); |
914 | int ssl3_enc(SSL *s, int send_data); | 911 | int ssl3_enc(SSL *s, int send_data); |
915 | int n_ssl3_mac(SSL *ssl, unsigned char *md, int send_data); | 912 | int n_ssl3_mac(SSL *ssl, unsigned char *md, int send_data); |
916 | void ssl3_free_digest_list(SSL *s); | 913 | void ssl3_free_digest_list(SSL *s); |
917 | unsigned long ssl3_output_cert_chain(SSL *s, X509 *x); | 914 | unsigned long ssl3_output_cert_chain(SSL *s, X509 *x); |
918 | SSL_CIPHER *ssl3_choose_cipher(SSL *ssl,STACK_OF(SSL_CIPHER) *clnt, | 915 | SSL_CIPHER *ssl3_choose_cipher(SSL *ssl, STACK_OF(SSL_CIPHER) *clnt, |
919 | STACK_OF(SSL_CIPHER) *srvr); | 916 | STACK_OF(SSL_CIPHER) *srvr); |
920 | int ssl3_setup_buffers(SSL *s); | 917 | int ssl3_setup_buffers(SSL *s); |
921 | int ssl3_setup_read_buffer(SSL *s); | 918 | int ssl3_setup_read_buffer(SSL *s); |
922 | int ssl3_setup_write_buffer(SSL *s); | 919 | int ssl3_setup_write_buffer(SSL *s); |
@@ -932,10 +929,10 @@ int ssl3_peek(SSL *s, void *buf, int len); | |||
932 | int ssl3_write(SSL *s, const void *buf, int len); | 929 | int ssl3_write(SSL *s, const void *buf, int len); |
933 | int ssl3_shutdown(SSL *s); | 930 | int ssl3_shutdown(SSL *s); |
934 | void ssl3_clear(SSL *s); | 931 | void ssl3_clear(SSL *s); |
935 | long ssl3_ctrl(SSL *s,int cmd, long larg, void *parg); | 932 | long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg); |
936 | long ssl3_ctx_ctrl(SSL_CTX *s,int cmd, long larg, void *parg); | 933 | long ssl3_ctx_ctrl(SSL_CTX *s, int cmd, long larg, void *parg); |
937 | long ssl3_callback_ctrl(SSL *s,int cmd, void (*fp)(void)); | 934 | long ssl3_callback_ctrl(SSL *s, int cmd, void (*fp)(void)); |
938 | long ssl3_ctx_callback_ctrl(SSL_CTX *s,int cmd, void (*fp)(void)); | 935 | long ssl3_ctx_callback_ctrl(SSL_CTX *s, int cmd, void (*fp)(void)); |
939 | int ssl3_pending(const SSL *s); | 936 | int ssl3_pending(const SSL *s); |
940 | 937 | ||
941 | void ssl3_record_sequence_update(unsigned char *seq); | 938 | void ssl3_record_sequence_update(unsigned char *seq); |
@@ -952,16 +949,16 @@ const SSL_CIPHER *ssl23_get_cipher_by_char(const unsigned char *p); | |||
952 | long ssl23_default_timeout(void ); | 949 | long ssl23_default_timeout(void ); |
953 | 950 | ||
954 | long tls1_default_timeout(void); | 951 | long tls1_default_timeout(void); |
955 | int dtls1_do_write(SSL *s,int type); | 952 | int dtls1_do_write(SSL *s, int type); |
956 | int ssl3_read_n(SSL *s, int n, int max, int extend); | 953 | int ssl3_read_n(SSL *s, int n, int max, int extend); |
957 | int dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek); | 954 | int dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek); |
958 | int ssl3_do_compress(SSL *ssl); | 955 | int ssl3_do_compress(SSL *ssl); |
959 | int ssl3_do_uncompress(SSL *ssl); | 956 | int ssl3_do_uncompress(SSL *ssl); |
960 | int ssl3_write_pending(SSL *s, int type, const unsigned char *buf, | 957 | int ssl3_write_pending(SSL *s, int type, const unsigned char *buf, |
961 | unsigned int len); | 958 | unsigned int len); |
962 | unsigned char *dtls1_set_message_header(SSL *s, | 959 | unsigned char *dtls1_set_message_header(SSL *s, unsigned char *p, |
963 | unsigned char *p, unsigned char mt, unsigned long len, | 960 | unsigned char mt, unsigned long len, unsigned long frag_off, |
964 | unsigned long frag_off, unsigned long frag_len); | 961 | unsigned long frag_len); |
965 | 962 | ||
966 | int dtls1_write_app_data_bytes(SSL *s, int type, const void *buf, int len); | 963 | int dtls1_write_app_data_bytes(SSL *s, int type, const void *buf, int len); |
967 | int dtls1_write_bytes(SSL *s, int type, const void *buf, int len); | 964 | int dtls1_write_bytes(SSL *s, int type, const void *buf, int len); |
@@ -971,8 +968,8 @@ int dtls1_send_finished(SSL *s, int a, int b, const char *sender, int slen); | |||
971 | unsigned long dtls1_output_cert_chain(SSL *s, X509 *x); | 968 | unsigned long dtls1_output_cert_chain(SSL *s, X509 *x); |
972 | int dtls1_read_failed(SSL *s, int code); | 969 | int dtls1_read_failed(SSL *s, int code); |
973 | int dtls1_buffer_message(SSL *s, int ccs); | 970 | int dtls1_buffer_message(SSL *s, int ccs); |
974 | int dtls1_retransmit_message(SSL *s, unsigned short seq, | 971 | int dtls1_retransmit_message(SSL *s, unsigned short seq, |
975 | unsigned long frag_off, int *found); | 972 | unsigned long frag_off, int *found); |
976 | int dtls1_get_queue_priority(unsigned short seq, int is_ccs); | 973 | int dtls1_get_queue_priority(unsigned short seq, int is_ccs); |
977 | int dtls1_retransmit_buffered_messages(SSL *s); | 974 | int dtls1_retransmit_buffered_messages(SSL *s); |
978 | void dtls1_clear_record_buffer(SSL *s); | 975 | void dtls1_clear_record_buffer(SSL *s); |
@@ -1049,21 +1046,21 @@ int ssl23_write_bytes(SSL *s); | |||
1049 | int tls1_new(SSL *s); | 1046 | int tls1_new(SSL *s); |
1050 | void tls1_free(SSL *s); | 1047 | void tls1_free(SSL *s); |
1051 | void tls1_clear(SSL *s); | 1048 | void tls1_clear(SSL *s); |
1052 | long tls1_ctrl(SSL *s,int cmd, long larg, void *parg); | 1049 | long tls1_ctrl(SSL *s, int cmd, long larg, void *parg); |
1053 | long tls1_callback_ctrl(SSL *s,int cmd, void (*fp)(void)); | 1050 | long tls1_callback_ctrl(SSL *s, int cmd, void (*fp)(void)); |
1054 | 1051 | ||
1055 | int dtls1_new(SSL *s); | 1052 | int dtls1_new(SSL *s); |
1056 | int dtls1_accept(SSL *s); | 1053 | int dtls1_accept(SSL *s); |
1057 | int dtls1_connect(SSL *s); | 1054 | int dtls1_connect(SSL *s); |
1058 | void dtls1_free(SSL *s); | 1055 | void dtls1_free(SSL *s); |
1059 | void dtls1_clear(SSL *s); | 1056 | void dtls1_clear(SSL *s); |
1060 | long dtls1_ctrl(SSL *s,int cmd, long larg, void *parg); | 1057 | long dtls1_ctrl(SSL *s, int cmd, long larg, void *parg); |
1061 | int dtls1_shutdown(SSL *s); | 1058 | int dtls1_shutdown(SSL *s); |
1062 | 1059 | ||
1063 | long dtls1_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok); | 1060 | long dtls1_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok); |
1064 | int dtls1_get_record(SSL *s); | 1061 | int dtls1_get_record(SSL *s); |
1065 | int do_dtls1_write(SSL *s, int type, const unsigned char *buf, | 1062 | int do_dtls1_write(SSL *s, int type, const unsigned char *buf, |
1066 | unsigned int len, int create_empty_fragement); | 1063 | unsigned int len, int create_empty_fragement); |
1067 | int dtls1_dispatch_alert(SSL *s); | 1064 | int dtls1_dispatch_alert(SSL *s); |
1068 | int dtls1_enc(SSL *s, int snd); | 1065 | int dtls1_enc(SSL *s, int snd); |
1069 | 1066 | ||
@@ -1073,15 +1070,14 @@ void ssl_free_wbio_buffer(SSL *s); | |||
1073 | int tls1_change_cipher_state(SSL *s, int which); | 1070 | int tls1_change_cipher_state(SSL *s, int which); |
1074 | int tls1_setup_key_block(SSL *s); | 1071 | int tls1_setup_key_block(SSL *s); |
1075 | int tls1_enc(SSL *s, int snd); | 1072 | int tls1_enc(SSL *s, int snd); |
1076 | int tls1_final_finish_mac(SSL *s, | 1073 | int tls1_final_finish_mac(SSL *s, const char *str, int slen, unsigned char *p); |
1077 | const char *str, int slen, unsigned char *p); | ||
1078 | int tls1_cert_verify_mac(SSL *s, int md_nid, unsigned char *p); | 1074 | int tls1_cert_verify_mac(SSL *s, int md_nid, unsigned char *p); |
1079 | int tls1_mac(SSL *ssl, unsigned char *md, int snd); | 1075 | int tls1_mac(SSL *ssl, unsigned char *md, int snd); |
1080 | int tls1_generate_master_secret(SSL *s, unsigned char *out, | 1076 | int tls1_generate_master_secret(SSL *s, unsigned char *out, |
1081 | unsigned char *p, int len); | 1077 | unsigned char *p, int len); |
1082 | int tls1_export_keying_material(SSL *s, unsigned char *out, size_t olen, | 1078 | int tls1_export_keying_material(SSL *s, unsigned char *out, size_t olen, |
1083 | const char *label, size_t llen, | 1079 | const char *label, size_t llen, const unsigned char *p, size_t plen, |
1084 | const unsigned char *p, size_t plen, int use_context); | 1080 | int use_context); |
1085 | int tls1_alert_code(int code); | 1081 | int tls1_alert_code(int code); |
1086 | int ssl3_alert_code(int code); | 1082 | int ssl3_alert_code(int code); |
1087 | int ssl_ok(SSL *s); | 1083 | int ssl_ok(SSL *s); |
@@ -1098,10 +1094,16 @@ int tls1_ec_nid2curve_id(int nid); | |||
1098 | #endif /* OPENSSL_NO_EC */ | 1094 | #endif /* OPENSSL_NO_EC */ |
1099 | 1095 | ||
1100 | #ifndef OPENSSL_NO_TLSEXT | 1096 | #ifndef OPENSSL_NO_TLSEXT |
1101 | unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, unsigned char *limit); | 1097 | unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, |
1102 | unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *p, unsigned char *limit); | 1098 | unsigned char *limit); |
1103 | int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **data, unsigned char *d, int n, int *al); | 1099 | |
1104 | int ssl_parse_serverhello_tlsext(SSL *s, unsigned char **data, unsigned char *d, int n, int *al); | 1100 | unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *p, |
1101 | unsigned char *limit); | ||
1102 | |||
1103 | int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **data, | ||
1104 | unsigned char *d, int n, int *al); | ||
1105 | int ssl_parse_serverhello_tlsext(SSL *s, unsigned char **data, | ||
1106 | unsigned char *d, int n, int *al); | ||
1105 | int ssl_prepare_clienthello_tlsext(SSL *s); | 1107 | int ssl_prepare_clienthello_tlsext(SSL *s); |
1106 | int ssl_prepare_serverhello_tlsext(SSL *s); | 1108 | int ssl_prepare_serverhello_tlsext(SSL *s); |
1107 | int ssl_check_clienthello_tlsext_early(SSL *s); | 1109 | int ssl_check_clienthello_tlsext_early(SSL *s); |
@@ -1114,60 +1116,53 @@ int ssl_check_serverhello_tlsext(SSL *s); | |||
1114 | #define tlsext_tick_md EVP_sha256 | 1116 | #define tlsext_tick_md EVP_sha256 |
1115 | #endif | 1117 | #endif |
1116 | int tls1_process_ticket(SSL *s, unsigned char *session_id, int len, | 1118 | int tls1_process_ticket(SSL *s, unsigned char *session_id, int len, |
1117 | const unsigned char *limit, SSL_SESSION **ret); | 1119 | const unsigned char *limit, SSL_SESSION **ret); |
1118 | 1120 | ||
1119 | int tls12_get_sigandhash(unsigned char *p, const EVP_PKEY *pk, | 1121 | int tls12_get_sigandhash(unsigned char *p, const EVP_PKEY *pk, |
1120 | const EVP_MD *md); | 1122 | const EVP_MD *md); |
1121 | int tls12_get_sigid(const EVP_PKEY *pk); | 1123 | int tls12_get_sigid(const EVP_PKEY *pk); |
1122 | const EVP_MD *tls12_get_hash(unsigned char hash_alg); | 1124 | const EVP_MD *tls12_get_hash(unsigned char hash_alg); |
1123 | 1125 | ||
1124 | #endif | 1126 | #endif |
1125 | EVP_MD_CTX* ssl_replace_hash(EVP_MD_CTX **hash,const EVP_MD *md) ; | 1127 | EVP_MD_CTX* ssl_replace_hash(EVP_MD_CTX **hash, const EVP_MD *md); |
1126 | void ssl_clear_hash_ctx(EVP_MD_CTX **hash); | 1128 | void ssl_clear_hash_ctx(EVP_MD_CTX **hash); |
1127 | int ssl_add_serverhello_renegotiate_ext(SSL *s, unsigned char *p, int *len, | 1129 | int ssl_add_serverhello_renegotiate_ext(SSL *s, unsigned char *p, |
1128 | int maxlen); | 1130 | int *len, int maxlen); |
1129 | int ssl_parse_serverhello_renegotiate_ext(SSL *s, unsigned char *d, int len, | 1131 | int ssl_parse_serverhello_renegotiate_ext(SSL *s, unsigned char *d, |
1130 | int *al); | 1132 | int len, int *al); |
1131 | int ssl_add_clienthello_renegotiate_ext(SSL *s, unsigned char *p, int *len, | 1133 | int ssl_add_clienthello_renegotiate_ext(SSL *s, unsigned char *p, |
1132 | int maxlen); | 1134 | int *len, int maxlen); |
1133 | int ssl_parse_clienthello_renegotiate_ext(SSL *s, unsigned char *d, int len, | 1135 | int ssl_parse_clienthello_renegotiate_ext(SSL *s, unsigned char *d, |
1134 | int *al); | 1136 | int len, int *al); |
1135 | long ssl_get_algorithm2(SSL *s); | 1137 | long ssl_get_algorithm2(SSL *s); |
1136 | int tls1_process_sigalgs(SSL *s, const unsigned char *data, int dsize); | 1138 | int tls1_process_sigalgs(SSL *s, const unsigned char *data, int dsize); |
1137 | int tls12_get_req_sig_algs(SSL *s, unsigned char *p); | 1139 | int tls12_get_req_sig_algs(SSL *s, unsigned char *p); |
1138 | 1140 | ||
1139 | int ssl_add_clienthello_use_srtp_ext(SSL *s, unsigned char *p, int *len, int maxlen); | 1141 | int ssl_add_clienthello_use_srtp_ext(SSL *s, unsigned char *p, |
1140 | int ssl_parse_clienthello_use_srtp_ext(SSL *s, unsigned char *d, int len,int *al); | 1142 | int *len, int maxlen); |
1141 | int ssl_add_serverhello_use_srtp_ext(SSL *s, unsigned char *p, int *len, int maxlen); | 1143 | int ssl_parse_clienthello_use_srtp_ext(SSL *s, unsigned char *d, |
1142 | int ssl_parse_serverhello_use_srtp_ext(SSL *s, unsigned char *d, int len,int *al); | 1144 | int len, int *al); |
1145 | int ssl_add_serverhello_use_srtp_ext(SSL *s, unsigned char *p, | ||
1146 | int *len, int maxlen); | ||
1147 | int ssl_parse_serverhello_use_srtp_ext(SSL *s, unsigned char *d, | ||
1148 | int len, int *al); | ||
1143 | 1149 | ||
1144 | /* s3_cbc.c */ | 1150 | /* s3_cbc.c */ |
1145 | void ssl3_cbc_copy_mac(unsigned char* out, | 1151 | void ssl3_cbc_copy_mac(unsigned char *out, const SSL3_RECORD *rec, |
1146 | const SSL3_RECORD *rec, | 1152 | unsigned md_size, unsigned orig_len); |
1147 | unsigned md_size,unsigned orig_len); | 1153 | int ssl3_cbc_remove_padding(const SSL *s, SSL3_RECORD *rec, |
1148 | int ssl3_cbc_remove_padding(const SSL* s, | 1154 | unsigned block_size, unsigned mac_size); |
1149 | SSL3_RECORD *rec, | 1155 | int tls1_cbc_remove_padding(const SSL *s, SSL3_RECORD *rec, |
1150 | unsigned block_size, | 1156 | unsigned block_size, unsigned mac_size); |
1151 | unsigned mac_size); | ||
1152 | int tls1_cbc_remove_padding(const SSL* s, | ||
1153 | SSL3_RECORD *rec, | ||
1154 | unsigned block_size, | ||
1155 | unsigned mac_size); | ||
1156 | char ssl3_cbc_record_digest_supported(const EVP_MD_CTX *ctx); | 1157 | char ssl3_cbc_record_digest_supported(const EVP_MD_CTX *ctx); |
1157 | void ssl3_cbc_digest_record( | 1158 | void ssl3_cbc_digest_record(const EVP_MD_CTX *ctx, unsigned char *md_out, |
1158 | const EVP_MD_CTX *ctx, | 1159 | size_t *md_out_size, const unsigned char header[13], |
1159 | unsigned char* md_out, | 1160 | const unsigned char *data, size_t data_plus_mac_size, |
1160 | size_t* md_out_size, | 1161 | size_t data_plus_mac_plus_padding_size, const unsigned char *mac_secret, |
1161 | const unsigned char header[13], | 1162 | unsigned mac_secret_length, char is_sslv3); |
1162 | const unsigned char *data, | 1163 | |
1163 | size_t data_plus_mac_size, | 1164 | void tls_fips_digest_extra(const EVP_CIPHER_CTX *cipher_ctx, |
1164 | size_t data_plus_mac_plus_padding_size, | 1165 | EVP_MD_CTX *mac_ctx, const unsigned char *data, size_t data_len, |
1165 | const unsigned char *mac_secret, | 1166 | size_t orig_len); |
1166 | unsigned mac_secret_length, | ||
1167 | char is_sslv3); | ||
1168 | |||
1169 | void tls_fips_digest_extra( | ||
1170 | const EVP_CIPHER_CTX *cipher_ctx, EVP_MD_CTX *mac_ctx, | ||
1171 | const unsigned char *data, size_t data_len, size_t orig_len); | ||
1172 | 1167 | ||
1173 | #endif | 1168 | #endif |
diff --git a/src/lib/libssl/src/ssl/tls1.h b/src/lib/libssl/src/ssl/tls1.h index 7e35f13849..95d6660ac3 100644 --- a/src/lib/libssl/src/ssl/tls1.h +++ b/src/lib/libssl/src/ssl/tls1.h | |||
@@ -240,9 +240,9 @@ extern "C" { | |||
240 | #define TLSEXT_TYPE_session_ticket 35 | 240 | #define TLSEXT_TYPE_session_ticket 35 |
241 | 241 | ||
242 | /* ExtensionType value from draft-rescorla-tls-opaque-prf-input-00.txt */ | 242 | /* ExtensionType value from draft-rescorla-tls-opaque-prf-input-00.txt */ |
243 | #if 0 /* will have to be provided externally for now , | 243 | #if 0 /* will have to be provided externally for now , |
244 | * i.e. build with -DTLSEXT_TYPE_opaque_prf_input=38183 | 244 | * i.e. build with - DTLSEXT_TYPE_opaque_prf_input = 38183 |
245 | * using whatever extension number you'd like to try */ | 245 | * using whatever extension number you'd like to try */ |
246 | # define TLSEXT_TYPE_opaque_prf_input ?? */ | 246 | # define TLSEXT_TYPE_opaque_prf_input ?? */ |
247 | #endif | 247 | #endif |
248 | 248 | ||
@@ -295,8 +295,8 @@ int SSL_get_servername_type(const SSL *s); | |||
295 | * It returns 1 on success and zero otherwise. | 295 | * It returns 1 on success and zero otherwise. |
296 | */ | 296 | */ |
297 | int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, | 297 | int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, |
298 | const char *label, size_t llen, const unsigned char *p, size_t plen, | 298 | const char *label, size_t llen, const unsigned char *p, size_t plen, |
299 | int use_context); | 299 | int use_context); |
300 | 300 | ||
301 | #define SSL_set_tlsext_host_name(s,name) \ | 301 | #define SSL_set_tlsext_host_name(s,name) \ |
302 | SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_HOSTNAME,TLSEXT_NAMETYPE_host_name,(char *)name) | 302 | SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_HOSTNAME,TLSEXT_NAMETYPE_host_name,(char *)name) |
@@ -719,11 +719,10 @@ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb) | |||
719 | #endif | 719 | #endif |
720 | 720 | ||
721 | /* TLS Session Ticket extension struct */ | 721 | /* TLS Session Ticket extension struct */ |
722 | struct tls_session_ticket_ext_st | 722 | struct tls_session_ticket_ext_st { |
723 | { | ||
724 | unsigned short length; | 723 | unsigned short length; |
725 | void *data; | 724 | void *data; |
726 | }; | 725 | }; |
727 | 726 | ||
728 | #ifdef __cplusplus | 727 | #ifdef __cplusplus |
729 | } | 728 | } |
diff --git a/src/lib/libssl/srtp.h b/src/lib/libssl/srtp.h index c0cf33ef28..06075f2c86 100644 --- a/src/lib/libssl/srtp.h +++ b/src/lib/libssl/srtp.h | |||
@@ -122,7 +122,6 @@ | |||
122 | extern "C" { | 122 | extern "C" { |
123 | #endif | 123 | #endif |
124 | 124 | ||
125 | |||
126 | #define SRTP_AES128_CM_SHA1_80 0x0001 | 125 | #define SRTP_AES128_CM_SHA1_80 0x0001 |
127 | #define SRTP_AES128_CM_SHA1_32 0x0002 | 126 | #define SRTP_AES128_CM_SHA1_32 0x0002 |
128 | #define SRTP_AES128_F8_SHA1_80 0x0003 | 127 | #define SRTP_AES128_F8_SHA1_80 0x0003 |
@@ -142,4 +141,3 @@ SRTP_PROTECTION_PROFILE *SSL_get_selected_srtp_profile(SSL *s); | |||
142 | #endif | 141 | #endif |
143 | 142 | ||
144 | #endif | 143 | #endif |
145 | |||
diff --git a/src/lib/libssl/ssl.h b/src/lib/libssl/ssl.h index bf4b2f2cb6..97e4a3f96c 100644 --- a/src/lib/libssl/ssl.h +++ b/src/lib/libssl/ssl.h | |||
@@ -260,9 +260,9 @@ extern "C" { | |||
260 | #define SSL_TXT_aKRB5 "aKRB5" | 260 | #define SSL_TXT_aKRB5 "aKRB5" |
261 | #define SSL_TXT_aECDSA "aECDSA" | 261 | #define SSL_TXT_aECDSA "aECDSA" |
262 | #define SSL_TXT_aPSK "aPSK" | 262 | #define SSL_TXT_aPSK "aPSK" |
263 | #define SSL_TXT_aGOST94 "aGOST94" | 263 | #define SSL_TXT_aGOST94 "aGOST94" |
264 | #define SSL_TXT_aGOST01 "aGOST01" | 264 | #define SSL_TXT_aGOST01 "aGOST01" |
265 | #define SSL_TXT_aGOST "aGOST" | 265 | #define SSL_TXT_aGOST "aGOST" |
266 | 266 | ||
267 | #define SSL_TXT_DSS "DSS" | 267 | #define SSL_TXT_DSS "DSS" |
268 | #define SSL_TXT_DH "DH" | 268 | #define SSL_TXT_DH "DH" |
@@ -369,23 +369,22 @@ typedef struct ssl_session_st SSL_SESSION; | |||
369 | DECLARE_STACK_OF(SSL_CIPHER) | 369 | DECLARE_STACK_OF(SSL_CIPHER) |
370 | 370 | ||
371 | /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ | 371 | /* SRTP protection profiles for use with the use_srtp extension (RFC 5764)*/ |
372 | typedef struct srtp_protection_profile_st | 372 | typedef struct srtp_protection_profile_st { |
373 | { | 373 | const char *name; |
374 | const char *name; | 374 | unsigned long id; |
375 | unsigned long id; | 375 | } SRTP_PROTECTION_PROFILE; |
376 | } SRTP_PROTECTION_PROFILE; | ||
377 | 376 | ||
378 | DECLARE_STACK_OF(SRTP_PROTECTION_PROFILE) | 377 | DECLARE_STACK_OF(SRTP_PROTECTION_PROFILE) |
379 | 378 | ||
380 | typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, int len, void *arg); | 379 | typedef int (*tls_session_ticket_ext_cb_fn)(SSL *s, const unsigned char *data, |
381 | 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); | 380 | int len, void *arg); |
382 | 381 | typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, | |
382 | STACK_OF(SSL_CIPHER) *peer_ciphers, SSL_CIPHER **cipher, void *arg); | ||
383 | 383 | ||
384 | #ifndef OPENSSL_NO_SSL_INTERN | 384 | #ifndef OPENSSL_NO_SSL_INTERN |
385 | 385 | ||
386 | /* used to hold info on the particular ciphers used */ | 386 | /* used to hold info on the particular ciphers used */ |
387 | struct ssl_cipher_st | 387 | struct ssl_cipher_st { |
388 | { | ||
389 | int valid; | 388 | int valid; |
390 | const char *name; /* text name */ | 389 | const char *name; /* text name */ |
391 | unsigned long id; /* id, 4 bytes, first is version */ | 390 | unsigned long id; /* id, 4 bytes, first is version */ |
@@ -401,34 +400,33 @@ struct ssl_cipher_st | |||
401 | unsigned long algorithm2; /* Extra flags */ | 400 | unsigned long algorithm2; /* Extra flags */ |
402 | int strength_bits; /* Number of bits really used */ | 401 | int strength_bits; /* Number of bits really used */ |
403 | int alg_bits; /* Number of bits for algorithm */ | 402 | int alg_bits; /* Number of bits for algorithm */ |
404 | }; | 403 | }; |
405 | 404 | ||
406 | 405 | ||
407 | /* Used to hold functions for SSLv2 or SSLv3/TLSv1 functions */ | 406 | /* Used to hold functions for SSLv2 or SSLv3/TLSv1 functions */ |
408 | struct ssl_method_st | 407 | struct ssl_method_st { |
409 | { | ||
410 | int version; | 408 | int version; |
411 | int (*ssl_new)(SSL *s); | 409 | int (*ssl_new)(SSL *s); |
412 | void (*ssl_clear)(SSL *s); | 410 | void (*ssl_clear)(SSL *s); |
413 | void (*ssl_free)(SSL *s); | 411 | void (*ssl_free)(SSL *s); |
414 | int (*ssl_accept)(SSL *s); | 412 | int (*ssl_accept)(SSL *s); |
415 | int (*ssl_connect)(SSL *s); | 413 | int (*ssl_connect)(SSL *s); |
416 | int (*ssl_read)(SSL *s,void *buf,int len); | 414 | int (*ssl_read)(SSL *s, void *buf, int len); |
417 | int (*ssl_peek)(SSL *s,void *buf,int len); | 415 | int (*ssl_peek)(SSL *s, void *buf, int len); |
418 | int (*ssl_write)(SSL *s,const void *buf,int len); | 416 | int (*ssl_write)(SSL *s, const void *buf, int len); |
419 | int (*ssl_shutdown)(SSL *s); | 417 | int (*ssl_shutdown)(SSL *s); |
420 | int (*ssl_renegotiate)(SSL *s); | 418 | int (*ssl_renegotiate)(SSL *s); |
421 | int (*ssl_renegotiate_check)(SSL *s); | 419 | int (*ssl_renegotiate_check)(SSL *s); |
422 | long (*ssl_get_message)(SSL *s, int st1, int stn, int mt, long | 420 | long (*ssl_get_message)(SSL *s, int st1, int stn, int mt, |
423 | max, int *ok); | 421 | long max, int *ok); |
424 | int (*ssl_read_bytes)(SSL *s, int type, unsigned char *buf, int len, | 422 | int (*ssl_read_bytes)(SSL *s, int type, unsigned char *buf, |
425 | int peek); | 423 | int len, int peek); |
426 | int (*ssl_write_bytes)(SSL *s, int type, const void *buf_, int len); | 424 | int (*ssl_write_bytes)(SSL *s, int type, const void *buf_, int len); |
427 | int (*ssl_dispatch_alert)(SSL *s); | 425 | int (*ssl_dispatch_alert)(SSL *s); |
428 | long (*ssl_ctrl)(SSL *s,int cmd,long larg,void *parg); | 426 | long (*ssl_ctrl)(SSL *s, int cmd, long larg, void *parg); |
429 | long (*ssl_ctx_ctrl)(SSL_CTX *ctx,int cmd,long larg,void *parg); | 427 | long (*ssl_ctx_ctrl)(SSL_CTX *ctx, int cmd, long larg, void *parg); |
430 | const SSL_CIPHER *(*get_cipher_by_char)(const unsigned char *ptr); | 428 | const SSL_CIPHER *(*get_cipher_by_char)(const unsigned char *ptr); |
431 | int (*put_cipher_by_char)(const SSL_CIPHER *cipher,unsigned char *ptr); | 429 | int (*put_cipher_by_char)(const SSL_CIPHER *cipher, unsigned char *ptr); |
432 | int (*ssl_pending)(const SSL *s); | 430 | int (*ssl_pending)(const SSL *s); |
433 | int (*num_ciphers)(void); | 431 | int (*num_ciphers)(void); |
434 | const SSL_CIPHER *(*get_cipher)(unsigned ncipher); | 432 | const SSL_CIPHER *(*get_cipher)(unsigned ncipher); |
@@ -438,7 +436,7 @@ struct ssl_method_st | |||
438 | int (*ssl_version)(void); | 436 | int (*ssl_version)(void); |
439 | long (*ssl_callback_ctrl)(SSL *s, int cb_id, void (*fp)(void)); | 437 | long (*ssl_callback_ctrl)(SSL *s, int cb_id, void (*fp)(void)); |
440 | long (*ssl_ctx_callback_ctrl)(SSL_CTX *s, int cb_id, void (*fp)(void)); | 438 | long (*ssl_ctx_callback_ctrl)(SSL_CTX *s, int cb_id, void (*fp)(void)); |
441 | }; | 439 | }; |
442 | 440 | ||
443 | /* Lets make this into an ASN.1 type structure as follows | 441 | /* Lets make this into an ASN.1 type structure as follows |
444 | * SSL_SESSION_ID ::= SEQUENCE { | 442 | * SSL_SESSION_ID ::= SEQUENCE { |
@@ -465,8 +463,7 @@ struct ssl_method_st | |||
465 | * Look in ssl/ssl_asn1.c for more details | 463 | * Look in ssl/ssl_asn1.c for more details |
466 | * I'm using EXPLICIT tags so I can read the damn things using asn1parse :-). | 464 | * I'm using EXPLICIT tags so I can read the damn things using asn1parse :-). |
467 | */ | 465 | */ |
468 | struct ssl_session_st | 466 | struct ssl_session_st { |
469 | { | ||
470 | int ssl_version; /* what ssl version session info is | 467 | int ssl_version; /* what ssl version session info is |
471 | * being kept in here? */ | 468 | * being kept in here? */ |
472 | 469 | ||
@@ -485,8 +482,8 @@ struct ssl_session_st | |||
485 | unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; | 482 | unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH]; |
486 | 483 | ||
487 | #ifndef OPENSSL_NO_KRB5 | 484 | #ifndef OPENSSL_NO_KRB5 |
488 | unsigned int krb5_client_princ_len; | 485 | unsigned int krb5_client_princ_len; |
489 | unsigned char krb5_client_princ[SSL_MAX_KRB5_PRINCIPAL_LENGTH]; | 486 | unsigned char krb5_client_princ[SSL_MAX_KRB5_PRINCIPAL_LENGTH]; |
490 | #endif /* OPENSSL_NO_KRB5 */ | 487 | #endif /* OPENSSL_NO_KRB5 */ |
491 | #ifndef OPENSSL_NO_PSK | 488 | #ifndef OPENSSL_NO_PSK |
492 | char *psk_identity_hint; | 489 | char *psk_identity_hint; |
@@ -526,7 +523,7 @@ struct ssl_session_st | |||
526 | 523 | ||
527 | /* These are used to make removal of session-ids more | 524 | /* These are used to make removal of session-ids more |
528 | * efficient and to implement a maximum cache size. */ | 525 | * efficient and to implement a maximum cache size. */ |
529 | struct ssl_session_st *prev,*next; | 526 | struct ssl_session_st *prev, *next; |
530 | #ifndef OPENSSL_NO_TLSEXT | 527 | #ifndef OPENSSL_NO_TLSEXT |
531 | char *tlsext_hostname; | 528 | char *tlsext_hostname; |
532 | #ifndef OPENSSL_NO_EC | 529 | #ifndef OPENSSL_NO_EC |
@@ -543,7 +540,7 @@ struct ssl_session_st | |||
543 | #ifndef OPENSSL_NO_SRP | 540 | #ifndef OPENSSL_NO_SRP |
544 | char *srp_username; | 541 | char *srp_username; |
545 | #endif | 542 | #endif |
546 | }; | 543 | }; |
547 | 544 | ||
548 | #endif | 545 | #endif |
549 | 546 | ||
@@ -684,8 +681,11 @@ struct ssl_session_st | |||
684 | #define SSL_get_secure_renegotiation_support(ssl) \ | 681 | #define SSL_get_secure_renegotiation_support(ssl) \ |
685 | SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) | 682 | SSL_ctrl((ssl), SSL_CTRL_GET_RI_SUPPORT, 0, NULL) |
686 | 683 | ||
687 | void SSL_CTX_set_msg_callback(SSL_CTX *ctx, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg)); | 684 | void SSL_CTX_set_msg_callback(SSL_CTX *ctx, void (*cb)(int write_p, |
688 | void SSL_set_msg_callback(SSL *ssl, void (*cb)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg)); | 685 | int version, int content_type, const void *buf, size_t len, SSL *ssl, |
686 | void *arg)); | ||
687 | void SSL_set_msg_callback(SSL *ssl, void (*cb)(int write_p, int version, | ||
688 | int content_type, const void *buf, size_t len, SSL *ssl, void *arg)); | ||
689 | #define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) | 689 | #define SSL_CTX_set_msg_callback_arg(ctx, arg) SSL_CTX_ctrl((ctx), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) |
690 | #define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) | 690 | #define SSL_set_msg_callback_arg(ssl, arg) SSL_ctrl((ssl), SSL_CTRL_SET_MSG_CALLBACK_ARG, 0, (arg)) |
691 | 691 | ||
@@ -693,8 +693,7 @@ void SSL_set_msg_callback(SSL *ssl, void (*cb)(int write_p, int version, int con | |||
693 | 693 | ||
694 | #ifndef OPENSSL_NO_SSL_INTERN | 694 | #ifndef OPENSSL_NO_SSL_INTERN |
695 | 695 | ||
696 | typedef struct srp_ctx_st | 696 | typedef struct srp_ctx_st { |
697 | { | ||
698 | /* param for all the callbacks */ | 697 | /* param for all the callbacks */ |
699 | void *SRP_cb_arg; | 698 | void *SRP_cb_arg; |
700 | /* set client Hello login callback */ | 699 | /* set client Hello login callback */ |
@@ -705,13 +704,13 @@ typedef struct srp_ctx_st | |||
705 | char *(*SRP_give_srp_client_pwd_callback)(SSL *, void *); | 704 | char *(*SRP_give_srp_client_pwd_callback)(SSL *, void *); |
706 | 705 | ||
707 | char *login; | 706 | char *login; |
708 | BIGNUM *N,*g,*s,*B,*A; | 707 | BIGNUM *N, *g, *s, *B, *A; |
709 | BIGNUM *a,*b,*v; | 708 | BIGNUM *a, *b, *v; |
710 | char *info; | 709 | char *info; |
711 | int strength; | 710 | int strength; |
712 | 711 | ||
713 | unsigned long srp_Mask; | 712 | unsigned long srp_Mask; |
714 | } SRP_CTX; | 713 | } SRP_CTX; |
715 | 714 | ||
716 | #endif | 715 | #endif |
717 | 716 | ||
@@ -721,9 +720,9 @@ int SSL_CTX_SRP_CTX_init(SSL_CTX *ctx); | |||
721 | int SSL_SRP_CTX_free(SSL *ctx); | 720 | int SSL_SRP_CTX_free(SSL *ctx); |
722 | int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); | 721 | int SSL_CTX_SRP_CTX_free(SSL_CTX *ctx); |
723 | int SSL_srp_server_param_with_username(SSL *s, int *ad); | 722 | int SSL_srp_server_param_with_username(SSL *s, int *ad); |
724 | int SRP_generate_server_master_secret(SSL *s,unsigned char *master_key); | 723 | int SRP_generate_server_master_secret(SSL *s, unsigned char *master_key); |
725 | int SRP_Calc_A_param(SSL *s); | 724 | int SRP_Calc_A_param(SSL *s); |
726 | int SRP_generate_client_master_secret(SSL *s,unsigned char *master_key); | 725 | int SRP_generate_client_master_secret(SSL *s, unsigned char *master_key); |
727 | 726 | ||
728 | #endif | 727 | #endif |
729 | 728 | ||
@@ -745,14 +744,13 @@ int SRP_generate_client_master_secret(SSL *s,unsigned char *master_key); | |||
745 | * returns in this case. It is also an error for the callback to set the size to | 744 | * returns in this case. It is also an error for the callback to set the size to |
746 | * zero. */ | 745 | * zero. */ |
747 | typedef int (*GEN_SESSION_CB)(const SSL *ssl, unsigned char *id, | 746 | typedef int (*GEN_SESSION_CB)(const SSL *ssl, unsigned char *id, |
748 | unsigned int *id_len); | 747 | unsigned int *id_len); |
749 | 748 | ||
750 | typedef struct ssl_comp_st SSL_COMP; | 749 | typedef struct ssl_comp_st SSL_COMP; |
751 | 750 | ||
752 | #ifndef OPENSSL_NO_SSL_INTERN | 751 | #ifndef OPENSSL_NO_SSL_INTERN |
753 | 752 | ||
754 | struct ssl_comp_st | 753 | struct ssl_comp_st { |
755 | { | ||
756 | int id; | 754 | int id; |
757 | const char *name; | 755 | const char *name; |
758 | #ifndef OPENSSL_NO_COMP | 756 | #ifndef OPENSSL_NO_COMP |
@@ -760,13 +758,12 @@ struct ssl_comp_st | |||
760 | #else | 758 | #else |
761 | char *method; | 759 | char *method; |
762 | #endif | 760 | #endif |
763 | }; | 761 | }; |
764 | 762 | ||
765 | DECLARE_STACK_OF(SSL_COMP) | 763 | DECLARE_STACK_OF(SSL_COMP) |
766 | DECLARE_LHASH_OF(SSL_SESSION); | 764 | DECLARE_LHASH_OF(SSL_SESSION); |
767 | 765 | ||
768 | struct ssl_ctx_st | 766 | struct ssl_ctx_st { |
769 | { | ||
770 | const SSL_METHOD *method; | 767 | const SSL_METHOD *method; |
771 | 768 | ||
772 | STACK_OF(SSL_CIPHER) *cipher_list; | 769 | STACK_OF(SSL_CIPHER) *cipher_list; |
@@ -801,13 +798,12 @@ struct ssl_ctx_st | |||
801 | * If remove_session_cb is not null, it will be called when | 798 | * If remove_session_cb is not null, it will be called when |
802 | * a session-id is removed from the cache. After the call, | 799 | * a session-id is removed from the cache. After the call, |
803 | * OpenSSL will SSL_SESSION_free() it. */ | 800 | * OpenSSL will SSL_SESSION_free() it. */ |
804 | int (*new_session_cb)(struct ssl_st *ssl,SSL_SESSION *sess); | 801 | int (*new_session_cb)(struct ssl_st *ssl, SSL_SESSION *sess); |
805 | void (*remove_session_cb)(struct ssl_ctx_st *ctx,SSL_SESSION *sess); | 802 | void (*remove_session_cb)(struct ssl_ctx_st *ctx, SSL_SESSION *sess); |
806 | SSL_SESSION *(*get_session_cb)(struct ssl_st *ssl, | 803 | SSL_SESSION *(*get_session_cb)(struct ssl_st *ssl, |
807 | unsigned char *data,int len,int *copy); | 804 | unsigned char *data, int len, int *copy); |
808 | 805 | ||
809 | struct | 806 | struct { |
810 | { | ||
811 | int sess_connect; /* SSL new conn - started */ | 807 | int sess_connect; /* SSL new conn - started */ |
812 | int sess_connect_renegotiate;/* SSL reneg - requested */ | 808 | int sess_connect_renegotiate;/* SSL reneg - requested */ |
813 | int sess_connect_good; /* SSL new conne/reneg - finished */ | 809 | int sess_connect_good; /* SSL new conne/reneg - finished */ |
@@ -824,7 +820,7 @@ struct ssl_ctx_st | |||
824 | * indicates that the application is | 820 | * indicates that the application is |
825 | * supplying session-id's from other | 821 | * supplying session-id's from other |
826 | * processes - spooky :-) */ | 822 | * processes - spooky :-) */ |
827 | } stats; | 823 | } stats; |
828 | 824 | ||
829 | int references; | 825 | int references; |
830 | 826 | ||
@@ -843,19 +839,19 @@ struct ssl_ctx_st | |||
843 | /* get client cert callback */ | 839 | /* get client cert callback */ |
844 | int (*client_cert_cb)(SSL *ssl, X509 **x509, EVP_PKEY **pkey); | 840 | int (*client_cert_cb)(SSL *ssl, X509 **x509, EVP_PKEY **pkey); |
845 | 841 | ||
846 | /* cookie generate callback */ | 842 | /* cookie generate callback */ |
847 | int (*app_gen_cookie_cb)(SSL *ssl, unsigned char *cookie, | 843 | int (*app_gen_cookie_cb)(SSL *ssl, unsigned char *cookie, |
848 | unsigned int *cookie_len); | 844 | unsigned int *cookie_len); |
849 | 845 | ||
850 | /* verify cookie callback */ | 846 | /* verify cookie callback */ |
851 | int (*app_verify_cookie_cb)(SSL *ssl, unsigned char *cookie, | 847 | int (*app_verify_cookie_cb)(SSL *ssl, unsigned char *cookie, |
852 | unsigned int cookie_len); | 848 | unsigned int cookie_len); |
853 | 849 | ||
854 | CRYPTO_EX_DATA ex_data; | 850 | CRYPTO_EX_DATA ex_data; |
855 | 851 | ||
856 | const EVP_MD *rsa_md5;/* For SSLv2 - name is 'ssl2-md5' */ | 852 | const EVP_MD *rsa_md5; /* For SSLv2 - name is 'ssl2-md5' */ |
857 | const EVP_MD *md5; /* For SSLv3/TLSv1 'ssl3-md5' */ | 853 | const EVP_MD *md5; /* For SSLv3/TLSv1 'ssl3-md5' */ |
858 | const EVP_MD *sha1; /* For SSLv3/TLSv1 'ssl3->sha1' */ | 854 | const EVP_MD *sha1; /* For SSLv3/TLSv1 'ssl3->sha1' */ |
859 | 855 | ||
860 | STACK_OF(X509) *extra_certs; | 856 | STACK_OF(X509) *extra_certs; |
861 | STACK_OF(SSL_COMP) *comp_methods; /* stack of SSL_COMP, SSLv3/TLSv1 */ | 857 | STACK_OF(SSL_COMP) *comp_methods; /* stack of SSL_COMP, SSLv3/TLSv1 */ |
@@ -879,7 +875,8 @@ struct ssl_ctx_st | |||
879 | int read_ahead; | 875 | int read_ahead; |
880 | 876 | ||
881 | /* callback that allows applications to peek at protocol messages */ | 877 | /* callback that allows applications to peek at protocol messages */ |
882 | void (*msg_callback)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg); | 878 | void (*msg_callback)(int write_p, int version, int content_type, |
879 | const void *buf, size_t len, SSL *ssl, void *arg); | ||
883 | void *msg_callback_arg; | 880 | void *msg_callback_arg; |
884 | 881 | ||
885 | int verify_mode; | 882 | int verify_mode; |
@@ -920,10 +917,8 @@ struct ssl_ctx_st | |||
920 | unsigned char tlsext_tick_hmac_key[16]; | 917 | unsigned char tlsext_tick_hmac_key[16]; |
921 | unsigned char tlsext_tick_aes_key[16]; | 918 | unsigned char tlsext_tick_aes_key[16]; |
922 | /* Callback to support customisation of ticket key setting */ | 919 | /* Callback to support customisation of ticket key setting */ |
923 | int (*tlsext_ticket_key_cb)(SSL *ssl, | 920 | int (*tlsext_ticket_key_cb)(SSL *ssl, unsigned char *name, |
924 | unsigned char *name, unsigned char *iv, | 921 | unsigned char *iv, EVP_CIPHER_CTX *ectx, HMAC_CTX *hctx, int enc); |
925 | EVP_CIPHER_CTX *ectx, | ||
926 | HMAC_CTX *hctx, int enc); | ||
927 | 922 | ||
928 | /* certificate status request info */ | 923 | /* certificate status request info */ |
929 | /* Callback for status request */ | 924 | /* Callback for status request */ |
@@ -931,17 +926,18 @@ struct ssl_ctx_st | |||
931 | void *tlsext_status_arg; | 926 | void *tlsext_status_arg; |
932 | 927 | ||
933 | /* draft-rescorla-tls-opaque-prf-input-00.txt information */ | 928 | /* draft-rescorla-tls-opaque-prf-input-00.txt information */ |
934 | int (*tlsext_opaque_prf_input_callback)(SSL *, void *peerinput, size_t len, void *arg); | 929 | int (*tlsext_opaque_prf_input_callback)(SSL *, void *peerinput, |
930 | size_t len, void *arg); | ||
935 | void *tlsext_opaque_prf_input_callback_arg; | 931 | void *tlsext_opaque_prf_input_callback_arg; |
936 | #endif | 932 | #endif |
937 | 933 | ||
938 | #ifndef OPENSSL_NO_PSK | 934 | #ifndef OPENSSL_NO_PSK |
939 | char *psk_identity_hint; | 935 | char *psk_identity_hint; |
940 | unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, char *identity, | 936 | unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, |
941 | unsigned int max_identity_len, unsigned char *psk, | 937 | char *identity, unsigned int max_identity_len, unsigned char *psk, |
942 | unsigned int max_psk_len); | 938 | unsigned int max_psk_len); |
943 | unsigned int (*psk_server_callback)(SSL *ssl, const char *identity, | 939 | unsigned int (*psk_server_callback)(SSL *ssl, const char *identity, |
944 | unsigned char *psk, unsigned int max_psk_len); | 940 | unsigned char *psk, unsigned int max_psk_len); |
945 | #endif | 941 | #endif |
946 | 942 | ||
947 | #ifndef OPENSSL_NO_BUF_FREELISTS | 943 | #ifndef OPENSSL_NO_BUF_FREELISTS |
@@ -963,21 +959,20 @@ struct ssl_ctx_st | |||
963 | /* For a server, this contains a callback function by which the set of | 959 | /* For a server, this contains a callback function by which the set of |
964 | * advertised protocols can be provided. */ | 960 | * advertised protocols can be provided. */ |
965 | int (*next_protos_advertised_cb)(SSL *s, const unsigned char **buf, | 961 | int (*next_protos_advertised_cb)(SSL *s, const unsigned char **buf, |
966 | unsigned int *len, void *arg); | 962 | unsigned int *len, void *arg); |
967 | void *next_protos_advertised_cb_arg; | 963 | void *next_protos_advertised_cb_arg; |
968 | /* For a client, this contains a callback function that selects the | 964 | /* For a client, this contains a callback function that selects the |
969 | * next protocol from the list provided by the server. */ | 965 | * next protocol from the list provided by the server. */ |
970 | int (*next_proto_select_cb)(SSL *s, unsigned char **out, | 966 | int (*next_proto_select_cb)(SSL *s, unsigned char **out, |
971 | unsigned char *outlen, | 967 | unsigned char *outlen, const unsigned char *in, |
972 | const unsigned char *in, | 968 | unsigned int inlen, void *arg); |
973 | unsigned int inlen, | ||
974 | void *arg); | ||
975 | void *next_proto_select_cb_arg; | 969 | void *next_proto_select_cb_arg; |
976 | # endif | 970 | # endif |
977 | /* SRTP profiles we are willing to do from RFC 5764 */ | 971 | /* SRTP profiles we are willing to do from RFC 5764 */ |
978 | STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; | 972 | STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; |
973 | |||
979 | #endif | 974 | #endif |
980 | }; | 975 | }; |
981 | 976 | ||
982 | #endif | 977 | #endif |
983 | 978 | ||
@@ -1018,42 +1013,49 @@ LHASH_OF(SSL_SESSION) *SSL_CTX_sessions(SSL_CTX *ctx); | |||
1018 | #define SSL_CTX_sess_cache_full(ctx) \ | 1013 | #define SSL_CTX_sess_cache_full(ctx) \ |
1019 | SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL) | 1014 | SSL_CTX_ctrl(ctx,SSL_CTRL_SESS_CACHE_FULL,0,NULL) |
1020 | 1015 | ||
1021 | void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, int (*new_session_cb)(struct ssl_st *ssl,SSL_SESSION *sess)); | 1016 | void SSL_CTX_sess_set_new_cb(SSL_CTX *ctx, |
1022 | int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx))(struct ssl_st *ssl, SSL_SESSION *sess); | 1017 | int (*new_session_cb)(struct ssl_st *ssl, SSL_SESSION *sess)); |
1023 | void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, void (*remove_session_cb)(struct ssl_ctx_st *ctx,SSL_SESSION *sess)); | 1018 | int (*SSL_CTX_sess_get_new_cb(SSL_CTX *ctx))(struct ssl_st *ssl, |
1024 | void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx))(struct ssl_ctx_st *ctx, SSL_SESSION *sess); | 1019 | SSL_SESSION *sess); |
1025 | void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, SSL_SESSION *(*get_session_cb)(struct ssl_st *ssl, unsigned char *data,int len,int *copy)); | 1020 | void SSL_CTX_sess_set_remove_cb(SSL_CTX *ctx, |
1026 | SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx))(struct ssl_st *ssl, unsigned char *Data, int len, int *copy); | 1021 | void (*remove_session_cb)(struct ssl_ctx_st *ctx, SSL_SESSION *sess)); |
1027 | void SSL_CTX_set_info_callback(SSL_CTX *ctx, void (*cb)(const SSL *ssl,int type,int val)); | 1022 | void (*SSL_CTX_sess_get_remove_cb(SSL_CTX *ctx))(struct ssl_ctx_st *ctx, |
1028 | void (*SSL_CTX_get_info_callback(SSL_CTX *ctx))(const SSL *ssl,int type,int val); | 1023 | SSL_SESSION *sess); |
1029 | void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, int (*client_cert_cb)(SSL *ssl, X509 **x509, EVP_PKEY **pkey)); | 1024 | void SSL_CTX_sess_set_get_cb(SSL_CTX *ctx, |
1030 | int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx))(SSL *ssl, X509 **x509, EVP_PKEY **pkey); | 1025 | SSL_SESSION *(*get_session_cb)(struct ssl_st *ssl, unsigned char *data, |
1026 | int len, int *copy)); | ||
1027 | SSL_SESSION *(*SSL_CTX_sess_get_get_cb(SSL_CTX *ctx))(struct ssl_st *ssl, | ||
1028 | unsigned char *Data, int len, int *copy); | ||
1029 | void SSL_CTX_set_info_callback(SSL_CTX *ctx, void (*cb)(const SSL *ssl, | ||
1030 | int type, int val)); | ||
1031 | void (*SSL_CTX_get_info_callback(SSL_CTX *ctx))(const SSL *ssl, int type, | ||
1032 | int val); | ||
1033 | void SSL_CTX_set_client_cert_cb(SSL_CTX *ctx, | ||
1034 | int (*client_cert_cb)(SSL *ssl, X509 **x509, EVP_PKEY **pkey)); | ||
1035 | int (*SSL_CTX_get_client_cert_cb(SSL_CTX *ctx))(SSL *ssl, X509 **x509, | ||
1036 | EVP_PKEY **pkey); | ||
1031 | #ifndef OPENSSL_NO_ENGINE | 1037 | #ifndef OPENSSL_NO_ENGINE |
1032 | int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); | 1038 | int SSL_CTX_set_client_cert_engine(SSL_CTX *ctx, ENGINE *e); |
1033 | #endif | 1039 | #endif |
1034 | void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, int (*app_gen_cookie_cb)(SSL *ssl, unsigned char *cookie, unsigned int *cookie_len)); | 1040 | void SSL_CTX_set_cookie_generate_cb(SSL_CTX *ctx, |
1035 | void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, int (*app_verify_cookie_cb)(SSL *ssl, unsigned char *cookie, unsigned int cookie_len)); | 1041 | int (*app_gen_cookie_cb)(SSL *ssl, unsigned char *cookie, |
1042 | unsigned int *cookie_len)); | ||
1043 | void SSL_CTX_set_cookie_verify_cb(SSL_CTX *ctx, | ||
1044 | int (*app_verify_cookie_cb)(SSL *ssl, unsigned char *cookie, | ||
1045 | unsigned int cookie_len)); | ||
1036 | #ifndef OPENSSL_NO_NEXTPROTONEG | 1046 | #ifndef OPENSSL_NO_NEXTPROTONEG |
1037 | void SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, | 1047 | void |
1038 | int (*cb) (SSL *ssl, | 1048 | SSL_CTX_set_next_protos_advertised_cb(SSL_CTX *s, int (*cb)(SSL *ssl, |
1039 | const unsigned char **out, | 1049 | const unsigned char **out, unsigned int *outlen, void *arg), void *arg); |
1040 | unsigned int *outlen, | 1050 | void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, int (*cb)(SSL *ssl, |
1041 | void *arg), | 1051 | unsigned char **out, unsigned char *outlen, const unsigned char *in, |
1042 | void *arg); | 1052 | unsigned int inlen, void *arg), void *arg); |
1043 | void SSL_CTX_set_next_proto_select_cb(SSL_CTX *s, | ||
1044 | int (*cb) (SSL *ssl, | ||
1045 | unsigned char **out, | ||
1046 | unsigned char *outlen, | ||
1047 | const unsigned char *in, | ||
1048 | unsigned int inlen, | ||
1049 | void *arg), | ||
1050 | void *arg); | ||
1051 | 1053 | ||
1052 | int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, | 1054 | int SSL_select_next_proto(unsigned char **out, unsigned char *outlen, |
1053 | const unsigned char *in, unsigned int inlen, | 1055 | const unsigned char *in, unsigned int inlen, const unsigned char *client, |
1054 | const unsigned char *client, unsigned int client_len); | 1056 | unsigned int client_len); |
1055 | void SSL_get0_next_proto_negotiated(const SSL *s, | 1057 | void SSL_get0_next_proto_negotiated(const SSL *s, const unsigned char **data, |
1056 | const unsigned char **data, unsigned *len); | 1058 | unsigned *len); |
1057 | 1059 | ||
1058 | #define OPENSSL_NPN_UNSUPPORTED 0 | 1060 | #define OPENSSL_NPN_UNSUPPORTED 0 |
1059 | #define OPENSSL_NPN_NEGOTIATED 1 | 1061 | #define OPENSSL_NPN_NEGOTIATED 1 |
@@ -1065,20 +1067,20 @@ void SSL_get0_next_proto_negotiated(const SSL *s, | |||
1065 | * resulting identity/psk */ | 1067 | * resulting identity/psk */ |
1066 | #define PSK_MAX_IDENTITY_LEN 128 | 1068 | #define PSK_MAX_IDENTITY_LEN 128 |
1067 | #define PSK_MAX_PSK_LEN 256 | 1069 | #define PSK_MAX_PSK_LEN 256 |
1068 | void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, | 1070 | void SSL_CTX_set_psk_client_callback(SSL_CTX *ctx, |
1069 | unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, | 1071 | unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, |
1070 | char *identity, unsigned int max_identity_len, unsigned char *psk, | 1072 | char *identity, unsigned int max_identity_len, unsigned char *psk, |
1071 | unsigned int max_psk_len)); | 1073 | unsigned int max_psk_len)); |
1072 | void SSL_set_psk_client_callback(SSL *ssl, | 1074 | void SSL_set_psk_client_callback(SSL *ssl, |
1073 | unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, | 1075 | unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, |
1074 | char *identity, unsigned int max_identity_len, unsigned char *psk, | 1076 | char *identity, unsigned int max_identity_len, unsigned char *psk, |
1075 | unsigned int max_psk_len)); | 1077 | unsigned int max_psk_len)); |
1076 | void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, | 1078 | void SSL_CTX_set_psk_server_callback(SSL_CTX *ctx, |
1077 | unsigned int (*psk_server_callback)(SSL *ssl, const char *identity, | 1079 | unsigned int (*psk_server_callback)(SSL *ssl, const char *identity, |
1078 | unsigned char *psk, unsigned int max_psk_len)); | 1080 | unsigned char *psk, unsigned int max_psk_len)); |
1079 | void SSL_set_psk_server_callback(SSL *ssl, | 1081 | void SSL_set_psk_server_callback(SSL *ssl, |
1080 | unsigned int (*psk_server_callback)(SSL *ssl, const char *identity, | 1082 | unsigned int (*psk_server_callback)(SSL *ssl, const char *identity, |
1081 | unsigned char *psk, unsigned int max_psk_len)); | 1083 | unsigned char *psk, unsigned int max_psk_len)); |
1082 | int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); | 1084 | int SSL_CTX_use_psk_identity_hint(SSL_CTX *ctx, const char *identity_hint); |
1083 | int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); | 1085 | int SSL_use_psk_identity_hint(SSL *s, const char *identity_hint); |
1084 | const char *SSL_get_psk_identity_hint(const SSL *s); | 1086 | const char *SSL_get_psk_identity_hint(const SSL *s); |
@@ -1101,8 +1103,7 @@ const char *SSL_get_psk_identity(const SSL *s); | |||
1101 | 1103 | ||
1102 | #ifndef OPENSSL_NO_SSL_INTERN | 1104 | #ifndef OPENSSL_NO_SSL_INTERN |
1103 | 1105 | ||
1104 | struct ssl_st | 1106 | struct ssl_st { |
1105 | { | ||
1106 | /* protocol version | 1107 | /* protocol version |
1107 | * (one of SSL2_VERSION, SSL3_VERSION, TLS1_VERSION, DTLS1_VERSION) | 1108 | * (one of SSL2_VERSION, SSL3_VERSION, TLS1_VERSION, DTLS1_VERSION) |
1108 | */ | 1109 | */ |
@@ -1146,9 +1147,9 @@ struct ssl_st | |||
1146 | int server; /* are we the server side? - mostly used by SSL_clear*/ | 1147 | int server; /* are we the server side? - mostly used by SSL_clear*/ |
1147 | 1148 | ||
1148 | int new_session;/* Generate a new session or reuse an old one. | 1149 | int new_session;/* Generate a new session or reuse an old one. |
1149 | * NB: For servers, the 'new' session may actually be a previously | 1150 | * NB: For servers, the 'new' session may actually be a previously |
1150 | * cached session or even the previous session unless | 1151 | * cached session or even the previous session unless |
1151 | * SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION is set */ | 1152 | * SSL_OP_NO_SESSION_RESUMPTION_ON_RENEGOTIATION is set */ |
1152 | int quiet_shutdown;/* don't send shutdown packets */ | 1153 | int quiet_shutdown;/* don't send shutdown packets */ |
1153 | int shutdown; /* we have shut things down, 0x01 sent, 0x02 | 1154 | int shutdown; /* we have shut things down, 0x01 sent, 0x02 |
1154 | * for received */ | 1155 | * for received */ |
@@ -1156,7 +1157,7 @@ struct ssl_st | |||
1156 | int rstate; /* where we are when reading */ | 1157 | int rstate; /* where we are when reading */ |
1157 | 1158 | ||
1158 | BUF_MEM *init_buf; /* buffer used during init */ | 1159 | BUF_MEM *init_buf; /* buffer used during init */ |
1159 | void *init_msg; /* pointer to handshake message body, set by ssl3_get_message() */ | 1160 | void *init_msg; /* pointer to handshake message body, set by ssl3_get_message() */ |
1160 | int init_num; /* amount read/written */ | 1161 | int init_num; /* amount read/written */ |
1161 | int init_off; /* amount read/written */ | 1162 | int init_off; /* amount read/written */ |
1162 | 1163 | ||
@@ -1169,10 +1170,11 @@ struct ssl_st | |||
1169 | struct dtls1_state_st *d1; /* DTLSv1 variables */ | 1170 | struct dtls1_state_st *d1; /* DTLSv1 variables */ |
1170 | 1171 | ||
1171 | int read_ahead; /* Read as many input bytes as possible | 1172 | int read_ahead; /* Read as many input bytes as possible |
1172 | * (for non-blocking reads) */ | 1173 | * (for non-blocking reads) */ |
1173 | 1174 | ||
1174 | /* callback that allows applications to peek at protocol messages */ | 1175 | /* callback that allows applications to peek at protocol messages */ |
1175 | void (*msg_callback)(int write_p, int version, int content_type, const void *buf, size_t len, SSL *ssl, void *arg); | 1176 | void (*msg_callback)(int write_p, int version, int content_type, |
1177 | const void *buf, size_t len, SSL *ssl, void *arg); | ||
1176 | void *msg_callback_arg; | 1178 | void *msg_callback_arg; |
1177 | 1179 | ||
1178 | int hit; /* reusing a previous session */ | 1180 | int hit; /* reusing a previous session */ |
@@ -1190,9 +1192,10 @@ struct ssl_st | |||
1190 | 1192 | ||
1191 | /* These are the ones being used, the ones in SSL_SESSION are | 1193 | /* These are the ones being used, the ones in SSL_SESSION are |
1192 | * the ones to be 'copied' into these ones */ | 1194 | * the ones to be 'copied' into these ones */ |
1193 | int mac_flags; | 1195 | int mac_flags; |
1196 | |||
1194 | EVP_CIPHER_CTX *enc_read_ctx; /* cryptographic state */ | 1197 | EVP_CIPHER_CTX *enc_read_ctx; /* cryptographic state */ |
1195 | EVP_MD_CTX *read_hash; /* used for mac generation */ | 1198 | EVP_MD_CTX *read_hash; /* used for mac generation */ |
1196 | #ifndef OPENSSL_NO_COMP | 1199 | #ifndef OPENSSL_NO_COMP |
1197 | COMP_CTX *expand; /* uncompress */ | 1200 | COMP_CTX *expand; /* uncompress */ |
1198 | #else | 1201 | #else |
@@ -1200,11 +1203,12 @@ struct ssl_st | |||
1200 | #endif | 1203 | #endif |
1201 | 1204 | ||
1202 | EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ | 1205 | EVP_CIPHER_CTX *enc_write_ctx; /* cryptographic state */ |
1203 | EVP_MD_CTX *write_hash; /* used for mac generation */ | 1206 | EVP_MD_CTX *write_hash; /* used for mac generation */ |
1204 | #ifndef OPENSSL_NO_COMP | 1207 | #ifndef OPENSSL_NO_COMP |
1205 | COMP_CTX *compress; /* compression */ | 1208 | COMP_CTX *compress; /* compression */ |
1206 | #else | 1209 | #else |
1207 | char *compress; | 1210 | char *compress; |
1211 | |||
1208 | #endif | 1212 | #endif |
1209 | 1213 | ||
1210 | /* session info */ | 1214 | /* session info */ |
@@ -1235,21 +1239,22 @@ struct ssl_st | |||
1235 | int error_code; /* actual code */ | 1239 | int error_code; /* actual code */ |
1236 | 1240 | ||
1237 | #ifndef OPENSSL_NO_KRB5 | 1241 | #ifndef OPENSSL_NO_KRB5 |
1238 | KSSL_CTX *kssl_ctx; /* Kerberos 5 context */ | 1242 | KSSL_CTX *kssl_ctx; /* Kerberos 5 context */ |
1239 | #endif /* OPENSSL_NO_KRB5 */ | 1243 | #endif /* OPENSSL_NO_KRB5 */ |
1240 | 1244 | ||
1241 | #ifndef OPENSSL_NO_PSK | 1245 | #ifndef OPENSSL_NO_PSK |
1242 | unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, char *identity, | 1246 | unsigned int (*psk_client_callback)(SSL *ssl, const char *hint, |
1243 | unsigned int max_identity_len, unsigned char *psk, | 1247 | char *identity, unsigned int max_identity_len, unsigned char *psk, |
1244 | unsigned int max_psk_len); | 1248 | unsigned int max_psk_len); |
1245 | unsigned int (*psk_server_callback)(SSL *ssl, const char *identity, | 1249 | unsigned int (*psk_server_callback)(SSL *ssl, const char *identity, |
1246 | unsigned char *psk, unsigned int max_psk_len); | 1250 | unsigned char *psk, unsigned int max_psk_len); |
1247 | #endif | 1251 | #endif |
1248 | 1252 | ||
1249 | SSL_CTX *ctx; | 1253 | SSL_CTX *ctx; |
1250 | /* set this flag to 1 and a sleep(1) is put into all SSL_read() | 1254 | /* set this flag to 1 and a sleep(1) is put into all SSL_read() |
1251 | * and SSL_write() calls, good for nbio debuging :-) */ | 1255 | * and SSL_write() calls, good for nbio debuging :-) */ |
1252 | int debug; | 1256 | int debug; |
1257 | |||
1253 | 1258 | ||
1254 | /* extra application data */ | 1259 | /* extra application data */ |
1255 | long verify_result; | 1260 | long verify_result; |
@@ -1269,15 +1274,14 @@ struct ssl_st | |||
1269 | #ifndef OPENSSL_NO_TLSEXT | 1274 | #ifndef OPENSSL_NO_TLSEXT |
1270 | /* TLS extension debug callback */ | 1275 | /* TLS extension debug callback */ |
1271 | void (*tlsext_debug_cb)(SSL *s, int client_server, int type, | 1276 | void (*tlsext_debug_cb)(SSL *s, int client_server, int type, |
1272 | unsigned char *data, int len, | 1277 | unsigned char *data, int len, void *arg); |
1273 | void *arg); | ||
1274 | void *tlsext_debug_arg; | 1278 | void *tlsext_debug_arg; |
1275 | char *tlsext_hostname; | 1279 | char *tlsext_hostname; |
1276 | int servername_done; /* no further mod of servername | 1280 | int servername_done; /* no further mod of servername |
1277 | 0 : call the servername extension callback. | 1281 | 0 : call the servername extension callback. |
1278 | 1 : prepare 2, allow last ack just after in server callback. | 1282 | 1 : prepare 2, allow last ack just after in server callback. |
1279 | 2 : don't call servername callback, no ack in server hello | 1283 | 2 : don't call servername callback, no ack in server hello |
1280 | */ | 1284 | */ |
1281 | /* certificate status request info */ | 1285 | /* certificate status request info */ |
1282 | /* Status type or -1 if no status type */ | 1286 | /* Status type or -1 if no status type */ |
1283 | int tlsext_status_type; | 1287 | int tlsext_status_type; |
@@ -1330,28 +1334,28 @@ struct ssl_st | |||
1330 | 1334 | ||
1331 | #define session_ctx initial_ctx | 1335 | #define session_ctx initial_ctx |
1332 | 1336 | ||
1333 | STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; /* What we'll do */ | 1337 | STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; /* What we'll do */ |
1334 | SRTP_PROTECTION_PROFILE *srtp_profile; /* What's been chosen */ | 1338 | SRTP_PROTECTION_PROFILE *srtp_profile; /* What's been chosen */ |
1335 | 1339 | ||
1336 | unsigned int tlsext_heartbeat; /* Is use of the Heartbeat extension negotiated? | 1340 | unsigned int tlsext_heartbeat; /* Is use of the Heartbeat extension negotiated? |
1337 | 0: disabled | 1341 | 0: disabled |
1338 | 1: enabled | 1342 | 1: enabled |
1339 | 2: enabled, but not allowed to send Requests | 1343 | 2: enabled, but not allowed to send Requests |
1340 | */ | 1344 | */ |
1341 | unsigned int tlsext_hb_pending; /* Indicates if a HeartbeatRequest is in flight */ | 1345 | unsigned int tlsext_hb_pending; /* Indicates if a HeartbeatRequest is in flight */ |
1342 | unsigned int tlsext_hb_seq; /* HeartbeatRequest sequence number */ | 1346 | unsigned int tlsext_hb_seq; /* HeartbeatRequest sequence number */ |
1343 | #else | 1347 | #else |
1344 | #define session_ctx ctx | 1348 | #define session_ctx ctx |
1345 | #endif /* OPENSSL_NO_TLSEXT */ | 1349 | #endif /* OPENSSL_NO_TLSEXT */ |
1346 | 1350 | ||
1347 | int renegotiate;/* 1 if we are renegotiating. | 1351 | int renegotiate;/* 1 if we are renegotiating. |
1348 | * 2 if we are a server and are inside a handshake | 1352 | * 2 if we are a server and are inside a handshake |
1349 | * (i.e. not just sending a HelloRequest) */ | 1353 | * (i.e. not just sending a HelloRequest) */ |
1350 | 1354 | ||
1351 | #ifndef OPENSSL_NO_SRP | 1355 | #ifndef OPENSSL_NO_SRP |
1352 | SRP_CTX srp_ctx; /* ctx for SRP authentication */ | 1356 | SRP_CTX srp_ctx; /* ctx for SRP authentication */ |
1353 | #endif | 1357 | #endif |
1354 | }; | 1358 | }; |
1355 | 1359 | ||
1356 | #endif | 1360 | #endif |
1357 | 1361 | ||
@@ -1361,10 +1365,10 @@ struct ssl_st | |||
1361 | 1365 | ||
1362 | #include <openssl/ssl2.h> | 1366 | #include <openssl/ssl2.h> |
1363 | #include <openssl/ssl3.h> | 1367 | #include <openssl/ssl3.h> |
1364 | #include <openssl/tls1.h> /* This is mostly sslv3 with a few tweaks */ | 1368 | #include <openssl/tls1.h> /* This is mostly sslv3 with a few tweaks */ |
1365 | #include <openssl/dtls1.h> /* Datagram TLS */ | 1369 | #include <openssl/dtls1.h> /* Datagram TLS */ |
1366 | #include <openssl/ssl23.h> | 1370 | #include <openssl/ssl23.h> |
1367 | #include <openssl/srtp.h> /* Support for the use_srtp extension */ | 1371 | #include <openssl/srtp.h> /* Support for the use_srtp extension */ |
1368 | 1372 | ||
1369 | #ifdef __cplusplus | 1373 | #ifdef __cplusplus |
1370 | extern "C" { | 1374 | extern "C" { |
@@ -1417,9 +1421,9 @@ extern "C" { | |||
1417 | 1421 | ||
1418 | /* The following 2 states are kept in ssl->rstate when reads fail, | 1422 | /* The following 2 states are kept in ssl->rstate when reads fail, |
1419 | * you should not need these */ | 1423 | * you should not need these */ |
1420 | #define SSL_ST_READ_HEADER 0xF0 | 1424 | #define SSL_ST_READ_HEADER 0xF0 |
1421 | #define SSL_ST_READ_BODY 0xF1 | 1425 | #define SSL_ST_READ_BODY 0xF1 |
1422 | #define SSL_ST_READ_DONE 0xF2 | 1426 | #define SSL_ST_READ_DONE 0xF2 |
1423 | 1427 | ||
1424 | /* Obtain latest Finished message | 1428 | /* Obtain latest Finished message |
1425 | * -- that we sent (SSL_get_finished) | 1429 | * -- that we sent (SSL_get_finished) |
@@ -1646,28 +1650,27 @@ DECLARE_PEM_rw(SSL_SESSION, SSL_SESSION) | |||
1646 | 1650 | ||
1647 | #ifndef OPENSSL_NO_BIO | 1651 | #ifndef OPENSSL_NO_BIO |
1648 | BIO_METHOD *BIO_f_ssl(void); | 1652 | BIO_METHOD *BIO_f_ssl(void); |
1649 | BIO *BIO_new_ssl(SSL_CTX *ctx,int client); | 1653 | BIO *BIO_new_ssl(SSL_CTX *ctx, int client); |
1650 | BIO *BIO_new_ssl_connect(SSL_CTX *ctx); | 1654 | BIO *BIO_new_ssl_connect(SSL_CTX *ctx); |
1651 | BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); | 1655 | BIO *BIO_new_buffer_ssl_connect(SSL_CTX *ctx); |
1652 | int BIO_ssl_copy_session_id(BIO *to,BIO *from); | 1656 | int BIO_ssl_copy_session_id(BIO *to, BIO *from); |
1653 | void BIO_ssl_shutdown(BIO *ssl_bio); | 1657 | void BIO_ssl_shutdown(BIO *ssl_bio); |
1654 | |||
1655 | #endif | 1658 | #endif |
1656 | 1659 | ||
1657 | int SSL_CTX_set_cipher_list(SSL_CTX *,const char *str); | 1660 | int SSL_CTX_set_cipher_list(SSL_CTX *, const char *str); |
1658 | SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); | 1661 | SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth); |
1659 | void SSL_CTX_free(SSL_CTX *); | 1662 | void SSL_CTX_free(SSL_CTX *); |
1660 | long SSL_CTX_set_timeout(SSL_CTX *ctx,long t); | 1663 | long SSL_CTX_set_timeout(SSL_CTX *ctx, long t); |
1661 | long SSL_CTX_get_timeout(const SSL_CTX *ctx); | 1664 | long SSL_CTX_get_timeout(const SSL_CTX *ctx); |
1662 | X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); | 1665 | X509_STORE *SSL_CTX_get_cert_store(const SSL_CTX *); |
1663 | void SSL_CTX_set_cert_store(SSL_CTX *,X509_STORE *); | 1666 | void SSL_CTX_set_cert_store(SSL_CTX *, X509_STORE *); |
1664 | int SSL_want(const SSL *s); | 1667 | int SSL_want(const SSL *s); |
1665 | int SSL_clear(SSL *s); | 1668 | int SSL_clear(SSL *s); |
1666 | 1669 | ||
1667 | void SSL_CTX_flush_sessions(SSL_CTX *ctx,long tm); | 1670 | void SSL_CTX_flush_sessions(SSL_CTX *ctx, long tm); |
1668 | 1671 | ||
1669 | const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); | 1672 | const SSL_CIPHER *SSL_get_current_cipher(const SSL *s); |
1670 | int SSL_CIPHER_get_bits(const SSL_CIPHER *c,int *alg_bits); | 1673 | int SSL_CIPHER_get_bits(const SSL_CIPHER *c, int *alg_bits); |
1671 | char * SSL_CIPHER_get_version(const SSL_CIPHER *c); | 1674 | char * SSL_CIPHER_get_version(const SSL_CIPHER *c); |
1672 | const char * SSL_CIPHER_get_name(const SSL_CIPHER *c); | 1675 | const char * SSL_CIPHER_get_name(const SSL_CIPHER *c); |
1673 | unsigned long SSL_CIPHER_get_id(const SSL_CIPHER *c); | 1676 | unsigned long SSL_CIPHER_get_id(const SSL_CIPHER *c); |
@@ -1675,7 +1678,7 @@ unsigned long SSL_CIPHER_get_id(const SSL_CIPHER *c); | |||
1675 | int SSL_get_fd(const SSL *s); | 1678 | int SSL_get_fd(const SSL *s); |
1676 | int SSL_get_rfd(const SSL *s); | 1679 | int SSL_get_rfd(const SSL *s); |
1677 | int SSL_get_wfd(const SSL *s); | 1680 | int SSL_get_wfd(const SSL *s); |
1678 | const char * SSL_get_cipher_list(const SSL *s,int n); | 1681 | const char * SSL_get_cipher_list(const SSL *s, int n); |
1679 | char * SSL_get_shared_ciphers(const SSL *s, char *buf, int len); | 1682 | char * SSL_get_shared_ciphers(const SSL *s, char *buf, int len); |
1680 | int SSL_get_read_ahead(const SSL * s); | 1683 | int SSL_get_read_ahead(const SSL * s); |
1681 | int SSL_pending(const SSL *s); | 1684 | int SSL_pending(const SSL *s); |
@@ -1685,7 +1688,7 @@ int SSL_set_rfd(SSL *s, int fd); | |||
1685 | int SSL_set_wfd(SSL *s, int fd); | 1688 | int SSL_set_wfd(SSL *s, int fd); |
1686 | #endif | 1689 | #endif |
1687 | #ifndef OPENSSL_NO_BIO | 1690 | #ifndef OPENSSL_NO_BIO |
1688 | void SSL_set_bio(SSL *s, BIO *rbio,BIO *wbio); | 1691 | void SSL_set_bio(SSL *s, BIO *rbio, BIO *wbio); |
1689 | BIO * SSL_get_rbio(const SSL *s); | 1692 | BIO * SSL_get_rbio(const SSL *s); |
1690 | BIO * SSL_get_wbio(const SSL *s); | 1693 | BIO * SSL_get_wbio(const SSL *s); |
1691 | #endif | 1694 | #endif |
@@ -1693,16 +1696,16 @@ int SSL_set_cipher_list(SSL *s, const char *str); | |||
1693 | void SSL_set_read_ahead(SSL *s, int yes); | 1696 | void SSL_set_read_ahead(SSL *s, int yes); |
1694 | int SSL_get_verify_mode(const SSL *s); | 1697 | int SSL_get_verify_mode(const SSL *s); |
1695 | int SSL_get_verify_depth(const SSL *s); | 1698 | int SSL_get_verify_depth(const SSL *s); |
1696 | int (*SSL_get_verify_callback(const SSL *s))(int,X509_STORE_CTX *); | 1699 | int (*SSL_get_verify_callback(const SSL *s))(int, X509_STORE_CTX *); |
1697 | void SSL_set_verify(SSL *s, int mode, | 1700 | void SSL_set_verify(SSL *s, int mode, |
1698 | int (*callback)(int ok,X509_STORE_CTX *ctx)); | 1701 | int (*callback)(int ok, X509_STORE_CTX *ctx)); |
1699 | void SSL_set_verify_depth(SSL *s, int depth); | 1702 | void SSL_set_verify_depth(SSL *s, int depth); |
1700 | #ifndef OPENSSL_NO_RSA | 1703 | #ifndef OPENSSL_NO_RSA |
1701 | int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); | 1704 | int SSL_use_RSAPrivateKey(SSL *ssl, RSA *rsa); |
1702 | #endif | 1705 | #endif |
1703 | int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len); | 1706 | int SSL_use_RSAPrivateKey_ASN1(SSL *ssl, unsigned char *d, long len); |
1704 | int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); | 1707 | int SSL_use_PrivateKey(SSL *ssl, EVP_PKEY *pkey); |
1705 | int SSL_use_PrivateKey_ASN1(int pk,SSL *ssl, const unsigned char *d, long len); | 1708 | int SSL_use_PrivateKey_ASN1(int pk, SSL *ssl, const unsigned char *d, long len); |
1706 | int SSL_use_certificate(SSL *ssl, X509 *x); | 1709 | int SSL_use_certificate(SSL *ssl, X509 *x); |
1707 | int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); | 1710 | int SSL_use_certificate_ASN1(SSL *ssl, const unsigned char *d, int len); |
1708 | 1711 | ||
@@ -1716,9 +1719,9 @@ int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type); | |||
1716 | int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); /* PEM type */ | 1719 | int SSL_CTX_use_certificate_chain_file(SSL_CTX *ctx, const char *file); /* PEM type */ |
1717 | STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); | 1720 | STACK_OF(X509_NAME) *SSL_load_client_CA_file(const char *file); |
1718 | int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, | 1721 | int SSL_add_file_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, |
1719 | const char *file); | 1722 | const char *file); |
1720 | int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, | 1723 | int SSL_add_dir_cert_subjects_to_stack(STACK_OF(X509_NAME) *stackCAs, |
1721 | const char *dir); | 1724 | const char *dir); |
1722 | #endif | 1725 | #endif |
1723 | 1726 | ||
1724 | void SSL_load_error_strings(void ); | 1727 | void SSL_load_error_strings(void ); |
@@ -1730,32 +1733,34 @@ long SSL_SESSION_get_time(const SSL_SESSION *s); | |||
1730 | long SSL_SESSION_set_time(SSL_SESSION *s, long t); | 1733 | long SSL_SESSION_set_time(SSL_SESSION *s, long t); |
1731 | long SSL_SESSION_get_timeout(const SSL_SESSION *s); | 1734 | long SSL_SESSION_get_timeout(const SSL_SESSION *s); |
1732 | long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); | 1735 | long SSL_SESSION_set_timeout(SSL_SESSION *s, long t); |
1733 | void SSL_copy_session_id(SSL *to,const SSL *from); | 1736 | void SSL_copy_session_id(SSL *to, const SSL *from); |
1734 | X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); | 1737 | X509 *SSL_SESSION_get0_peer(SSL_SESSION *s); |
1735 | int SSL_SESSION_set1_id_context(SSL_SESSION *s,const unsigned char *sid_ctx, | 1738 | int |
1736 | unsigned int sid_ctx_len); | 1739 | SSL_SESSION_set1_id_context(SSL_SESSION *s, const unsigned char *sid_ctx, |
1740 | unsigned int sid_ctx_len); | ||
1737 | 1741 | ||
1738 | SSL_SESSION *SSL_SESSION_new(void); | 1742 | SSL_SESSION *SSL_SESSION_new(void); |
1739 | const unsigned char *SSL_SESSION_get_id(const SSL_SESSION *s, | 1743 | const unsigned char |
1740 | unsigned int *len); | 1744 | *SSL_SESSION_get_id(const SSL_SESSION *s, |
1745 | unsigned int *len); | ||
1741 | unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); | 1746 | unsigned int SSL_SESSION_get_compress_id(const SSL_SESSION *s); |
1742 | #ifndef OPENSSL_NO_FP_API | 1747 | #ifndef OPENSSL_NO_FP_API |
1743 | int SSL_SESSION_print_fp(FILE *fp,const SSL_SESSION *ses); | 1748 | int SSL_SESSION_print_fp(FILE *fp, const SSL_SESSION *ses); |
1744 | #endif | 1749 | #endif |
1745 | #ifndef OPENSSL_NO_BIO | 1750 | #ifndef OPENSSL_NO_BIO |
1746 | int SSL_SESSION_print(BIO *fp,const SSL_SESSION *ses); | 1751 | int SSL_SESSION_print(BIO *fp, const SSL_SESSION *ses); |
1747 | #endif | 1752 | #endif |
1748 | void SSL_SESSION_free(SSL_SESSION *ses); | 1753 | void SSL_SESSION_free(SSL_SESSION *ses); |
1749 | int i2d_SSL_SESSION(SSL_SESSION *in,unsigned char **pp); | 1754 | int i2d_SSL_SESSION(SSL_SESSION *in, unsigned char **pp); |
1750 | int SSL_set_session(SSL *to, SSL_SESSION *session); | 1755 | int SSL_set_session(SSL *to, SSL_SESSION *session); |
1751 | int SSL_CTX_add_session(SSL_CTX *s, SSL_SESSION *c); | 1756 | int SSL_CTX_add_session(SSL_CTX *s, SSL_SESSION *c); |
1752 | int SSL_CTX_remove_session(SSL_CTX *,SSL_SESSION *c); | 1757 | int SSL_CTX_remove_session(SSL_CTX *, SSL_SESSION *c); |
1753 | int SSL_CTX_set_generate_session_id(SSL_CTX *, GEN_SESSION_CB); | 1758 | int SSL_CTX_set_generate_session_id(SSL_CTX *, GEN_SESSION_CB); |
1754 | int SSL_set_generate_session_id(SSL *, GEN_SESSION_CB); | 1759 | int SSL_set_generate_session_id(SSL *, GEN_SESSION_CB); |
1755 | int SSL_has_matching_session_id(const SSL *ssl, const unsigned char *id, | 1760 | int SSL_has_matching_session_id(const SSL *ssl, const unsigned char *id, |
1756 | unsigned int id_len); | 1761 | unsigned int id_len); |
1757 | SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a,const unsigned char **pp, | 1762 | SSL_SESSION *d2i_SSL_SESSION(SSL_SESSION **a, const unsigned char **pp, |
1758 | long length); | 1763 | long length); |
1759 | 1764 | ||
1760 | #ifdef HEADER_X509_H | 1765 | #ifdef HEADER_X509_H |
1761 | X509 * SSL_get_peer_certificate(const SSL *s); | 1766 | X509 * SSL_get_peer_certificate(const SSL *s); |
@@ -1765,18 +1770,17 @@ STACK_OF(X509) *SSL_get_peer_cert_chain(const SSL *s); | |||
1765 | 1770 | ||
1766 | int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); | 1771 | int SSL_CTX_get_verify_mode(const SSL_CTX *ctx); |
1767 | int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); | 1772 | int SSL_CTX_get_verify_depth(const SSL_CTX *ctx); |
1768 | int (*SSL_CTX_get_verify_callback(const SSL_CTX *ctx))(int,X509_STORE_CTX *); | 1773 | int (*SSL_CTX_get_verify_callback(const SSL_CTX *ctx))(int, X509_STORE_CTX *); |
1769 | void SSL_CTX_set_verify(SSL_CTX *ctx,int mode, | 1774 | void SSL_CTX_set_verify(SSL_CTX *ctx, int mode, |
1770 | int (*callback)(int, X509_STORE_CTX *)); | 1775 | int (*callback)(int, X509_STORE_CTX *)); |
1771 | void SSL_CTX_set_verify_depth(SSL_CTX *ctx,int depth); | 1776 | void SSL_CTX_set_verify_depth(SSL_CTX *ctx, int depth); |
1772 | void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, int (*cb)(X509_STORE_CTX *,void *), void *arg); | 1777 | void SSL_CTX_set_cert_verify_callback(SSL_CTX *ctx, int (*cb)(X509_STORE_CTX *, void *), void *arg); |
1773 | #ifndef OPENSSL_NO_RSA | 1778 | #ifndef OPENSSL_NO_RSA |
1774 | int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); | 1779 | int SSL_CTX_use_RSAPrivateKey(SSL_CTX *ctx, RSA *rsa); |
1775 | #endif | 1780 | #endif |
1776 | int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, long len); | 1781 | int SSL_CTX_use_RSAPrivateKey_ASN1(SSL_CTX *ctx, const unsigned char *d, long len); |
1777 | int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); | 1782 | int SSL_CTX_use_PrivateKey(SSL_CTX *ctx, EVP_PKEY *pkey); |
1778 | int SSL_CTX_use_PrivateKey_ASN1(int pk,SSL_CTX *ctx, | 1783 | int SSL_CTX_use_PrivateKey_ASN1(int pk, SSL_CTX *ctx, const unsigned char *d, long len); |
1779 | const unsigned char *d, long len); | ||
1780 | int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); | 1784 | int SSL_CTX_use_certificate(SSL_CTX *ctx, X509 *x); |
1781 | int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, const unsigned char *d); | 1785 | int SSL_CTX_use_certificate_ASN1(SSL_CTX *ctx, int len, const unsigned char *d); |
1782 | 1786 | ||
@@ -1786,12 +1790,10 @@ void SSL_CTX_set_default_passwd_cb_userdata(SSL_CTX *ctx, void *u); | |||
1786 | int SSL_CTX_check_private_key(const SSL_CTX *ctx); | 1790 | int SSL_CTX_check_private_key(const SSL_CTX *ctx); |
1787 | int SSL_check_private_key(const SSL *ctx); | 1791 | int SSL_check_private_key(const SSL *ctx); |
1788 | 1792 | ||
1789 | int SSL_CTX_set_session_id_context(SSL_CTX *ctx,const unsigned char *sid_ctx, | 1793 | int SSL_CTX_set_session_id_context(SSL_CTX *ctx, const unsigned char *sid_ctx, unsigned int sid_ctx_len); |
1790 | unsigned int sid_ctx_len); | ||
1791 | 1794 | ||
1792 | SSL * SSL_new(SSL_CTX *ctx); | 1795 | SSL *SSL_new(SSL_CTX *ctx); |
1793 | int SSL_set_session_id_context(SSL *ssl,const unsigned char *sid_ctx, | 1796 | int SSL_set_session_id_context(SSL *ssl, const unsigned char *sid_ctx, unsigned int sid_ctx_len); |
1794 | unsigned int sid_ctx_len); | ||
1795 | 1797 | ||
1796 | int SSL_CTX_set_purpose(SSL_CTX *s, int purpose); | 1798 | int SSL_CTX_set_purpose(SSL_CTX *s, int purpose); |
1797 | int SSL_set_purpose(SSL *s, int purpose); | 1799 | int SSL_set_purpose(SSL *s, int purpose); |
@@ -1802,21 +1804,16 @@ int SSL_CTX_set1_param(SSL_CTX *ctx, X509_VERIFY_PARAM *vpm); | |||
1802 | int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); | 1804 | int SSL_set1_param(SSL *ssl, X509_VERIFY_PARAM *vpm); |
1803 | 1805 | ||
1804 | #ifndef OPENSSL_NO_SRP | 1806 | #ifndef OPENSSL_NO_SRP |
1805 | int SSL_CTX_set_srp_username(SSL_CTX *ctx,char *name); | 1807 | int SSL_CTX_set_srp_username(SSL_CTX *ctx, char *name); |
1806 | int SSL_CTX_set_srp_password(SSL_CTX *ctx,char *password); | 1808 | int SSL_CTX_set_srp_password(SSL_CTX *ctx, char *password); |
1807 | int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); | 1809 | int SSL_CTX_set_srp_strength(SSL_CTX *ctx, int strength); |
1808 | int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, | 1810 | int SSL_CTX_set_srp_client_pwd_callback(SSL_CTX *ctx, char *(*cb)(SSL *, void *)); |
1809 | char *(*cb)(SSL *,void *)); | 1811 | int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, int (*cb)(SSL *, void *)); |
1810 | int SSL_CTX_set_srp_verify_param_callback(SSL_CTX *ctx, | 1812 | int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, int (*cb)(SSL *, int *, void *)); |
1811 | int (*cb)(SSL *,void *)); | ||
1812 | int SSL_CTX_set_srp_username_callback(SSL_CTX *ctx, | ||
1813 | int (*cb)(SSL *,int *,void *)); | ||
1814 | int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); | 1813 | int SSL_CTX_set_srp_cb_arg(SSL_CTX *ctx, void *arg); |
1815 | 1814 | ||
1816 | int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, | 1815 | int SSL_set_srp_server_param(SSL *s, const BIGNUM *N, const BIGNUM *g, BIGNUM *sa, BIGNUM *v, char *info); |
1817 | BIGNUM *sa, BIGNUM *v, char *info); | 1816 | int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, const char *grp); |
1818 | int SSL_set_srp_server_param_pw(SSL *s, const char *user, const char *pass, | ||
1819 | const char *grp); | ||
1820 | 1817 | ||
1821 | BIGNUM *SSL_get_srp_g(SSL *s); | 1818 | BIGNUM *SSL_get_srp_g(SSL *s); |
1822 | BIGNUM *SSL_get_srp_N(SSL *s); | 1819 | BIGNUM *SSL_get_srp_N(SSL *s); |
@@ -1828,15 +1825,15 @@ char *SSL_get_srp_userinfo(SSL *s); | |||
1828 | void SSL_free(SSL *ssl); | 1825 | void SSL_free(SSL *ssl); |
1829 | int SSL_accept(SSL *ssl); | 1826 | int SSL_accept(SSL *ssl); |
1830 | int SSL_connect(SSL *ssl); | 1827 | int SSL_connect(SSL *ssl); |
1831 | int SSL_read(SSL *ssl,void *buf,int num); | 1828 | int SSL_read(SSL *ssl, void *buf, int num); |
1832 | int SSL_peek(SSL *ssl,void *buf,int num); | 1829 | int SSL_peek(SSL *ssl, void *buf, int num); |
1833 | int SSL_write(SSL *ssl,const void *buf,int num); | 1830 | int SSL_write(SSL *ssl, const void *buf, int num); |
1834 | long SSL_ctrl(SSL *ssl,int cmd, long larg, void *parg); | 1831 | long SSL_ctrl(SSL *ssl, int cmd, long larg, void *parg); |
1835 | long SSL_callback_ctrl(SSL *, int, void (*)(void)); | 1832 | long SSL_callback_ctrl(SSL *, int, void (*)(void)); |
1836 | long SSL_CTX_ctrl(SSL_CTX *ctx,int cmd, long larg, void *parg); | 1833 | long SSL_CTX_ctrl(SSL_CTX *ctx, int cmd, long larg, void *parg); |
1837 | long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); | 1834 | long SSL_CTX_callback_ctrl(SSL_CTX *, int, void (*)(void)); |
1838 | 1835 | ||
1839 | int SSL_get_error(const SSL *s,int ret_code); | 1836 | int SSL_get_error(const SSL *s, int ret_code); |
1840 | const char *SSL_get_version(const SSL *s); | 1837 | const char *SSL_get_version(const SSL *s); |
1841 | 1838 | ||
1842 | /* This sets the 'default' SSL version that SSL_new() will create */ | 1839 | /* This sets the 'default' SSL version that SSL_new() will create */ |
@@ -1852,7 +1849,7 @@ const SSL_METHOD *SSLv3_method(void); /* SSLv3 */ | |||
1852 | const SSL_METHOD *SSLv3_server_method(void); /* SSLv3 */ | 1849 | const SSL_METHOD *SSLv3_server_method(void); /* SSLv3 */ |
1853 | const SSL_METHOD *SSLv3_client_method(void); /* SSLv3 */ | 1850 | const SSL_METHOD *SSLv3_client_method(void); /* SSLv3 */ |
1854 | 1851 | ||
1855 | const SSL_METHOD *SSLv23_method(void); /* SSLv3 but can rollback to v2 */ | 1852 | const SSL_METHOD *SSLv23_method(void); /* SSLv3 but can rollback to v2 */ |
1856 | const SSL_METHOD *SSLv23_server_method(void); /* SSLv3 but can rollback to v2 */ | 1853 | const SSL_METHOD *SSLv23_server_method(void); /* SSLv3 but can rollback to v2 */ |
1857 | const SSL_METHOD *SSLv23_client_method(void); /* SSLv3 but can rollback to v2 */ | 1854 | const SSL_METHOD *SSLv23_client_method(void); /* SSLv3 but can rollback to v2 */ |
1858 | 1855 | ||
@@ -1892,8 +1889,8 @@ void SSL_set_client_CA_list(SSL *s, STACK_OF(X509_NAME) *name_list); | |||
1892 | void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); | 1889 | void SSL_CTX_set_client_CA_list(SSL_CTX *ctx, STACK_OF(X509_NAME) *name_list); |
1893 | STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); | 1890 | STACK_OF(X509_NAME) *SSL_get_client_CA_list(const SSL *s); |
1894 | STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); | 1891 | STACK_OF(X509_NAME) *SSL_CTX_get_client_CA_list(const SSL_CTX *s); |
1895 | int SSL_add_client_CA(SSL *ssl,X509 *x); | 1892 | int SSL_add_client_CA(SSL *ssl, X509 *x); |
1896 | int SSL_CTX_add_client_CA(SSL_CTX *ctx,X509 *x); | 1893 | int SSL_CTX_add_client_CA(SSL_CTX *ctx, X509 *x); |
1897 | 1894 | ||
1898 | void SSL_set_connect_state(SSL *s); | 1895 | void SSL_set_connect_state(SSL *s); |
1899 | void SSL_set_accept_state(SSL *s); | 1896 | void SSL_set_accept_state(SSL *s); |
@@ -1902,7 +1899,7 @@ long SSL_get_default_timeout(const SSL *s); | |||
1902 | 1899 | ||
1903 | int SSL_library_init(void ); | 1900 | int SSL_library_init(void ); |
1904 | 1901 | ||
1905 | char *SSL_CIPHER_description(const SSL_CIPHER *,char *buf,int size); | 1902 | char *SSL_CIPHER_description(const SSL_CIPHER *, char *buf, int size); |
1906 | STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk); | 1903 | STACK_OF(X509_NAME) *SSL_dup_CA_list(STACK_OF(X509_NAME) *sk); |
1907 | 1904 | ||
1908 | SSL *SSL_dup(SSL *ssl); | 1905 | SSL *SSL_dup(SSL *ssl); |
@@ -1919,35 +1916,36 @@ int SSL_get_shutdown(const SSL *ssl); | |||
1919 | int SSL_version(const SSL *ssl); | 1916 | int SSL_version(const SSL *ssl); |
1920 | int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); | 1917 | int SSL_CTX_set_default_verify_paths(SSL_CTX *ctx); |
1921 | int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, | 1918 | int SSL_CTX_load_verify_locations(SSL_CTX *ctx, const char *CAfile, |
1922 | const char *CApath); | 1919 | const char *CApath); |
1923 | #define SSL_get0_session SSL_get_session /* just peek at pointer */ | 1920 | #define SSL_get0_session SSL_get_session /* just peek at pointer */ |
1924 | SSL_SESSION *SSL_get_session(const SSL *ssl); | 1921 | SSL_SESSION *SSL_get_session(const SSL *ssl); |
1925 | SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ | 1922 | SSL_SESSION *SSL_get1_session(SSL *ssl); /* obtain a reference count */ |
1926 | SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); | 1923 | SSL_CTX *SSL_get_SSL_CTX(const SSL *ssl); |
1927 | SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX* ctx); | 1924 | SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX* ctx); |
1928 | void SSL_set_info_callback(SSL *ssl, | 1925 | void SSL_set_info_callback(SSL *ssl, |
1929 | void (*cb)(const SSL *ssl,int type,int val)); | 1926 | void (*cb)(const SSL *ssl, int type, int val)); |
1930 | void (*SSL_get_info_callback(const SSL *ssl))(const SSL *ssl,int type,int val); | 1927 | void (*SSL_get_info_callback(const SSL *ssl))(const SSL *ssl, int type, int val); |
1931 | int SSL_state(const SSL *ssl); | 1928 | int SSL_state(const SSL *ssl); |
1932 | void SSL_set_state(SSL *ssl, int state); | 1929 | void SSL_set_state(SSL *ssl, int state); |
1933 | 1930 | ||
1934 | void SSL_set_verify_result(SSL *ssl,long v); | 1931 | void SSL_set_verify_result(SSL *ssl, long v); |
1935 | long SSL_get_verify_result(const SSL *ssl); | 1932 | long SSL_get_verify_result(const SSL *ssl); |
1936 | 1933 | ||
1937 | int SSL_set_ex_data(SSL *ssl,int idx,void *data); | 1934 | int SSL_set_ex_data(SSL *ssl, int idx, void *data); |
1938 | void *SSL_get_ex_data(const SSL *ssl,int idx); | 1935 | void *SSL_get_ex_data(const SSL *ssl, int idx); |
1939 | int SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, | 1936 | int SSL_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, |
1940 | CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); | 1937 | CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); |
1941 | 1938 | ||
1942 | int SSL_SESSION_set_ex_data(SSL_SESSION *ss,int idx,void *data); | 1939 | int SSL_SESSION_set_ex_data(SSL_SESSION *ss, int idx, void *data); |
1943 | void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss,int idx); | 1940 | void *SSL_SESSION_get_ex_data(const SSL_SESSION *ss, int idx); |
1944 | int SSL_SESSION_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, | 1941 | int SSL_SESSION_get_ex_new_index(long argl, void *argp, |
1945 | CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); | 1942 | CRYPTO_EX_new *new_func, CRYPTO_EX_dup *dup_func, |
1943 | CRYPTO_EX_free *free_func); | ||
1946 | 1944 | ||
1947 | int SSL_CTX_set_ex_data(SSL_CTX *ssl,int idx,void *data); | 1945 | int SSL_CTX_set_ex_data(SSL_CTX *ssl, int idx, void *data); |
1948 | void *SSL_CTX_get_ex_data(const SSL_CTX *ssl,int idx); | 1946 | void *SSL_CTX_get_ex_data(const SSL_CTX *ssl, int idx); |
1949 | int SSL_CTX_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, | 1947 | int SSL_CTX_get_ex_new_index(long argl, void *argp, CRYPTO_EX_new *new_func, |
1950 | CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); | 1948 | CRYPTO_EX_dup *dup_func, CRYPTO_EX_free *free_func); |
1951 | 1949 | ||
1952 | int SSL_get_ex_data_X509_STORE_CTX_idx(void ); | 1950 | int SSL_get_ex_data_X509_STORE_CTX_idx(void ); |
1953 | 1951 | ||
@@ -1980,31 +1978,25 @@ int SSL_get_ex_data_X509_STORE_CTX_idx(void ); | |||
1980 | #define SSL_set_max_send_fragment(ssl,m) \ | 1978 | #define SSL_set_max_send_fragment(ssl,m) \ |
1981 | SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) | 1979 | SSL_ctrl(ssl,SSL_CTRL_SET_MAX_SEND_FRAGMENT,m,NULL) |
1982 | 1980 | ||
1983 | /* NB: the keylength is only applicable when is_export is true */ | 1981 | /* NB: the keylength is only applicable when is_export is true */ |
1984 | #ifndef OPENSSL_NO_RSA | 1982 | #ifndef OPENSSL_NO_RSA |
1985 | void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx, | 1983 | void SSL_CTX_set_tmp_rsa_callback(SSL_CTX *ctx, |
1986 | RSA *(*cb)(SSL *ssl,int is_export, | 1984 | RSA *(*cb)(SSL *ssl, int is_export, int keylength)); |
1987 | int keylength)); | ||
1988 | 1985 | ||
1989 | void SSL_set_tmp_rsa_callback(SSL *ssl, | 1986 | void SSL_set_tmp_rsa_callback(SSL *ssl, |
1990 | RSA *(*cb)(SSL *ssl,int is_export, | 1987 | RSA *(*cb)(SSL *ssl, int is_export, int keylength)); |
1991 | int keylength)); | ||
1992 | #endif | 1988 | #endif |
1993 | #ifndef OPENSSL_NO_DH | 1989 | #ifndef OPENSSL_NO_DH |
1994 | void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, | 1990 | void SSL_CTX_set_tmp_dh_callback(SSL_CTX *ctx, |
1995 | DH *(*dh)(SSL *ssl,int is_export, | 1991 | DH *(*dh)(SSL *ssl, int is_export, int keylength)); |
1996 | int keylength)); | ||
1997 | void SSL_set_tmp_dh_callback(SSL *ssl, | 1992 | void SSL_set_tmp_dh_callback(SSL *ssl, |
1998 | DH *(*dh)(SSL *ssl,int is_export, | 1993 | DH *(*dh)(SSL *ssl, int is_export, int keylength)); |
1999 | int keylength)); | ||
2000 | #endif | 1994 | #endif |
2001 | #ifndef OPENSSL_NO_ECDH | 1995 | #ifndef OPENSSL_NO_ECDH |
2002 | void SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, | 1996 | void SSL_CTX_set_tmp_ecdh_callback(SSL_CTX *ctx, |
2003 | EC_KEY *(*ecdh)(SSL *ssl,int is_export, | 1997 | EC_KEY *(*ecdh)(SSL *ssl, int is_export, int keylength)); |
2004 | int keylength)); | ||
2005 | void SSL_set_tmp_ecdh_callback(SSL *ssl, | 1998 | void SSL_set_tmp_ecdh_callback(SSL *ssl, |
2006 | EC_KEY *(*ecdh)(SSL *ssl,int is_export, | 1999 | EC_KEY *(*ecdh)(SSL *ssl, int is_export, int keylength)); |
2007 | int keylength)); | ||
2008 | #endif | 2000 | #endif |
2009 | 2001 | ||
2010 | #ifndef OPENSSL_NO_COMP | 2002 | #ifndef OPENSSL_NO_COMP |
@@ -2012,23 +2004,24 @@ const COMP_METHOD *SSL_get_current_compression(SSL *s); | |||
2012 | const COMP_METHOD *SSL_get_current_expansion(SSL *s); | 2004 | const COMP_METHOD *SSL_get_current_expansion(SSL *s); |
2013 | const char *SSL_COMP_get_name(const COMP_METHOD *comp); | 2005 | const char *SSL_COMP_get_name(const COMP_METHOD *comp); |
2014 | STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); | 2006 | STACK_OF(SSL_COMP) *SSL_COMP_get_compression_methods(void); |
2015 | int SSL_COMP_add_compression_method(int id,COMP_METHOD *cm); | 2007 | int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm); |
2016 | #else | 2008 | #else |
2017 | const void *SSL_get_current_compression(SSL *s); | 2009 | const void *SSL_get_current_compression(SSL *s); |
2018 | const void *SSL_get_current_expansion(SSL *s); | 2010 | const void *SSL_get_current_expansion(SSL *s); |
2019 | const char *SSL_COMP_get_name(const void *comp); | 2011 | const char *SSL_COMP_get_name(const void *comp); |
2020 | void *SSL_COMP_get_compression_methods(void); | 2012 | void *SSL_COMP_get_compression_methods(void); |
2021 | int SSL_COMP_add_compression_method(int id,void *cm); | 2013 | int SSL_COMP_add_compression_method(int id, void *cm); |
2022 | #endif | 2014 | #endif |
2023 | 2015 | ||
2024 | /* TLS extensions functions */ | 2016 | /* TLS extensions functions */ |
2025 | int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); | 2017 | int SSL_set_session_ticket_ext(SSL *s, void *ext_data, int ext_len); |
2026 | 2018 | ||
2027 | int SSL_set_session_ticket_ext_cb(SSL *s, tls_session_ticket_ext_cb_fn cb, | 2019 | int SSL_set_session_ticket_ext_cb(SSL *s, |
2028 | void *arg); | 2020 | tls_session_ticket_ext_cb_fn cb, void *arg); |
2029 | 2021 | ||
2030 | /* Pre-shared secret session resumption functions */ | 2022 | /* Pre-shared secret session resumption functions */ |
2031 | int SSL_set_session_secret_cb(SSL *s, tls_session_secret_cb_fn tls_session_secret_cb, void *arg); | 2023 | int SSL_set_session_secret_cb(SSL *s, |
2024 | tls_session_secret_cb_fn tls_session_secret_cb, void *arg); | ||
2032 | 2025 | ||
2033 | void SSL_set_debug(SSL *s, int debug); | 2026 | void SSL_set_debug(SSL *s, int debug); |
2034 | int SSL_cache_hit(SSL *s); | 2027 | int SSL_cache_hit(SSL *s); |
diff --git a/src/lib/libssl/ssl2.h b/src/lib/libssl/ssl2.h index 29033c8be7..4052b11868 100644 --- a/src/lib/libssl/ssl2.h +++ b/src/lib/libssl/ssl2.h | |||
@@ -100,7 +100,7 @@ extern "C" { | |||
100 | #define SSL2_CK_DES_192_EDE3_CBC_WITH_MD5 0x020700c0 | 100 | #define SSL2_CK_DES_192_EDE3_CBC_WITH_MD5 0x020700c0 |
101 | #define SSL2_CK_DES_192_EDE3_CBC_WITH_SHA 0x020701c0 /* v3 */ | 101 | #define SSL2_CK_DES_192_EDE3_CBC_WITH_SHA 0x020701c0 /* v3 */ |
102 | #define SSL2_CK_RC4_64_WITH_MD5 0x02080080 /* MS hack */ | 102 | #define SSL2_CK_RC4_64_WITH_MD5 0x02080080 /* MS hack */ |
103 | 103 | ||
104 | #define SSL2_CK_DES_64_CFB64_WITH_MD5_1 0x02ff0800 /* SSLeay */ | 104 | #define SSL2_CK_DES_64_CFB64_WITH_MD5_1 0x02ff0800 /* SSLeay */ |
105 | #define SSL2_CK_NULL 0x02ff0810 /* SSLeay */ | 105 | #define SSL2_CK_NULL 0x02ff0810 /* SSLeay */ |
106 | 106 | ||
@@ -133,8 +133,8 @@ extern "C" { | |||
133 | 133 | ||
134 | /* Upper/Lower Bounds */ | 134 | /* Upper/Lower Bounds */ |
135 | #define SSL2_MAX_MASTER_KEY_LENGTH_IN_BITS 256 | 135 | #define SSL2_MAX_MASTER_KEY_LENGTH_IN_BITS 256 |
136 | #define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER 32767u /* 2^15-1 */ | 136 | #define SSL2_MAX_RECORD_LENGTH_2_BYTE_HEADER 32767u /* 2^15-1 */ |
137 | #define SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER 16383 /* 2^14-1 */ | 137 | #define SSL2_MAX_RECORD_LENGTH_3_BYTE_HEADER 16383 /* 2^14-1 */ |
138 | 138 | ||
139 | #define SSL2_CHALLENGE_LENGTH 16 | 139 | #define SSL2_CHALLENGE_LENGTH 16 |
140 | /*#define SSL2_CHALLENGE_LENGTH 32 */ | 140 | /*#define SSL2_CHALLENGE_LENGTH 32 */ |
@@ -153,8 +153,7 @@ extern "C" { | |||
153 | 153 | ||
154 | #ifndef OPENSSL_NO_SSL_INTERN | 154 | #ifndef OPENSSL_NO_SSL_INTERN |
155 | 155 | ||
156 | typedef struct ssl2_state_st | 156 | typedef struct ssl2_state_st { |
157 | { | ||
158 | int three_byte_header; | 157 | int three_byte_header; |
159 | int clear_text; /* clear text */ | 158 | int clear_text; /* clear text */ |
160 | int escape; /* not used in SSLv2 */ | 159 | int escape; /* not used in SSLv2 */ |
@@ -167,8 +166,8 @@ typedef struct ssl2_state_st | |||
167 | const unsigned char *wpend_buf; | 166 | const unsigned char *wpend_buf; |
168 | 167 | ||
169 | int wpend_off; /* offset to data to write */ | 168 | int wpend_off; /* offset to data to write */ |
170 | int wpend_len; /* number of bytes passwd to write */ | 169 | int wpend_len; /* number of bytes passwd to write */ |
171 | int wpend_ret; /* number of bytes to return to caller */ | 170 | int wpend_ret; /* number of bytes to return to caller */ |
172 | 171 | ||
173 | /* buffer raw data */ | 172 | /* buffer raw data */ |
174 | int rbuf_left; | 173 | int rbuf_left; |
@@ -191,7 +190,7 @@ typedef struct ssl2_state_st | |||
191 | unsigned char *read_key; | 190 | unsigned char *read_key; |
192 | unsigned char *write_key; | 191 | unsigned char *write_key; |
193 | 192 | ||
194 | /* Stuff specifically to do with this SSL session */ | 193 | /* Stuff specifically to do with this SSL session */ |
195 | unsigned int challenge_length; | 194 | unsigned int challenge_length; |
196 | unsigned char challenge[SSL2_MAX_CHALLENGE_LENGTH]; | 195 | unsigned char challenge[SSL2_MAX_CHALLENGE_LENGTH]; |
197 | unsigned int conn_id_length; | 196 | unsigned int conn_id_length; |
@@ -202,20 +201,23 @@ typedef struct ssl2_state_st | |||
202 | unsigned long read_sequence; | 201 | unsigned long read_sequence; |
203 | unsigned long write_sequence; | 202 | unsigned long write_sequence; |
204 | 203 | ||
205 | struct { | 204 | struct { |
206 | unsigned int conn_id_length; | 205 | unsigned int conn_id_length; |
207 | unsigned int cert_type; | 206 | unsigned int cert_type; |
207 | |||
208 | unsigned int cert_length; | 208 | unsigned int cert_length; |
209 | unsigned int csl; | 209 | unsigned int csl; |
210 | |||
210 | unsigned int clear; | 211 | unsigned int clear; |
211 | unsigned int enc; | 212 | unsigned int enc; |
213 | |||
212 | unsigned char ccl[SSL2_MAX_CERT_CHALLENGE_LENGTH]; | 214 | unsigned char ccl[SSL2_MAX_CERT_CHALLENGE_LENGTH]; |
213 | unsigned int cipher_spec_length; | 215 | unsigned int cipher_spec_length; |
214 | unsigned int session_id_length; | 216 | unsigned int session_id_length; |
215 | unsigned int clen; | 217 | unsigned int clen; |
216 | unsigned int rlen; | 218 | unsigned int rlen; |
217 | } tmp; | 219 | } tmp; |
218 | } SSL2_STATE; | 220 | } SSL2_STATE; |
219 | 221 | ||
220 | #endif | 222 | #endif |
221 | 223 | ||
@@ -265,4 +267,3 @@ typedef struct ssl2_state_st | |||
265 | } | 267 | } |
266 | #endif | 268 | #endif |
267 | #endif | 269 | #endif |
268 | |||
diff --git a/src/lib/libssl/ssl23.h b/src/lib/libssl/ssl23.h index d3228983c7..4e28a06796 100644 --- a/src/lib/libssl/ssl23.h +++ b/src/lib/libssl/ssl23.h | |||
@@ -80,4 +80,3 @@ extern "C" { | |||
80 | } | 80 | } |
81 | #endif | 81 | #endif |
82 | #endif | 82 | #endif |
83 | |||
diff --git a/src/lib/libssl/ssl3.h b/src/lib/libssl/ssl3.h index cb8b2492ec..2b25357917 100644 --- a/src/lib/libssl/ssl3.h +++ b/src/lib/libssl/ssl3.h | |||
@@ -163,13 +163,13 @@ extern "C" { | |||
163 | #define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B | 163 | #define SSL3_CK_ADH_DES_192_CBC_SHA 0x0300001B |
164 | 164 | ||
165 | #if 0 | 165 | #if 0 |
166 | #define SSL3_CK_FZA_DMS_NULL_SHA 0x0300001C | 166 | #define SSL3_CK_FZA_DMS_NULL_SHA 0x0300001C |
167 | #define SSL3_CK_FZA_DMS_FZA_SHA 0x0300001D | 167 | #define SSL3_CK_FZA_DMS_FZA_SHA 0x0300001D |
168 | #if 0 /* Because it clashes with KRB5, is never used any more, and is safe | 168 | #if 0 /* Because it clashes with KRB5, is never used any more, and is safe |
169 | to remove according to David Hopwood <david.hopwood@zetnet.co.uk> | 169 | to remove according to David Hopwood <david.hopwood@zetnet.co.uk> |
170 | of the ietf-tls list */ | 170 | of the ietf-tls list */ |
171 | #define SSL3_CK_FZA_DMS_RC4_SHA 0x0300001E | 171 | #define SSL3_CK_FZA_DMS_RC4_SHA 0x0300001E |
172 | #endif | 172 | #endif |
173 | #endif | 173 | #endif |
174 | 174 | ||
175 | /* VRS Additional Kerberos5 entries | 175 | /* VRS Additional Kerberos5 entries |
@@ -222,9 +222,9 @@ extern "C" { | |||
222 | #define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA" | 222 | #define SSL3_TXT_ADH_DES_192_CBC_SHA "ADH-DES-CBC3-SHA" |
223 | 223 | ||
224 | #if 0 | 224 | #if 0 |
225 | #define SSL3_TXT_FZA_DMS_NULL_SHA "FZA-NULL-SHA" | 225 | #define SSL3_TXT_FZA_DMS_NULL_SHA "FZA-NULL-SHA" |
226 | #define SSL3_TXT_FZA_DMS_FZA_SHA "FZA-FZA-CBC-SHA" | 226 | #define SSL3_TXT_FZA_DMS_FZA_SHA "FZA-FZA-CBC-SHA" |
227 | #define SSL3_TXT_FZA_DMS_RC4_SHA "FZA-RC4-SHA" | 227 | #define SSL3_TXT_FZA_DMS_RC4_SHA "FZA-RC4-SHA" |
228 | #endif | 228 | #endif |
229 | 229 | ||
230 | #define SSL3_TXT_KRB5_DES_64_CBC_SHA "KRB5-DES-CBC-SHA" | 230 | #define SSL3_TXT_KRB5_DES_64_CBC_SHA "KRB5-DES-CBC-SHA" |
@@ -342,11 +342,10 @@ extern "C" { | |||
342 | 342 | ||
343 | #define TLS1_HB_REQUEST 1 | 343 | #define TLS1_HB_REQUEST 1 |
344 | #define TLS1_HB_RESPONSE 2 | 344 | #define TLS1_HB_RESPONSE 2 |
345 | 345 | ||
346 | #ifndef OPENSSL_NO_SSL_INTERN | 346 | #ifndef OPENSSL_NO_SSL_INTERN |
347 | 347 | ||
348 | typedef struct ssl3_record_st | 348 | typedef struct ssl3_record_st { |
349 | { | ||
350 | /*r */ int type; /* type of record */ | 349 | /*r */ int type; /* type of record */ |
351 | /*rw*/ unsigned int length; /* How many bytes available */ | 350 | /*rw*/ unsigned int length; /* How many bytes available */ |
352 | /*r */ unsigned int off; /* read/write offset into 'buf' */ | 351 | /*r */ unsigned int off; /* read/write offset into 'buf' */ |
@@ -355,16 +354,15 @@ typedef struct ssl3_record_st | |||
355 | /*r */ unsigned char *comp; /* only used with decompression - malloc()ed */ | 354 | /*r */ unsigned char *comp; /* only used with decompression - malloc()ed */ |
356 | /*r */ unsigned long epoch; /* epoch number, needed by DTLS1 */ | 355 | /*r */ unsigned long epoch; /* epoch number, needed by DTLS1 */ |
357 | /*r */ unsigned char seq_num[8]; /* sequence number, needed by DTLS1 */ | 356 | /*r */ unsigned char seq_num[8]; /* sequence number, needed by DTLS1 */ |
358 | } SSL3_RECORD; | 357 | } SSL3_RECORD; |
359 | 358 | ||
360 | typedef struct ssl3_buffer_st | 359 | typedef struct ssl3_buffer_st { |
361 | { | 360 | unsigned char *buf; /* at least SSL3_RT_MAX_PACKET_SIZE bytes, |
362 | unsigned char *buf; /* at least SSL3_RT_MAX_PACKET_SIZE bytes, | ||
363 | * see ssl3_setup_buffers() */ | 361 | * see ssl3_setup_buffers() */ |
364 | size_t len; /* buffer size */ | 362 | size_t len; /* buffer size */ |
365 | int offset; /* where to 'copy from' */ | 363 | int offset; /* where to 'copy from' */ |
366 | int left; /* how many bytes left */ | 364 | int left; /* how many bytes left */ |
367 | } SSL3_BUFFER; | 365 | } SSL3_BUFFER; |
368 | 366 | ||
369 | #endif | 367 | #endif |
370 | 368 | ||
@@ -388,7 +386,7 @@ typedef struct ssl3_buffer_st | |||
388 | #define TLS1_FLAGS_TLS_PADDING_BUG 0x0008 | 386 | #define TLS1_FLAGS_TLS_PADDING_BUG 0x0008 |
389 | #define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 | 387 | #define TLS1_FLAGS_SKIP_CERT_VERIFY 0x0010 |
390 | #define TLS1_FLAGS_KEEP_HANDSHAKE 0x0020 | 388 | #define TLS1_FLAGS_KEEP_HANDSHAKE 0x0020 |
391 | 389 | ||
392 | /* SSL3_FLAGS_SGC_RESTART_DONE is set when we | 390 | /* SSL3_FLAGS_SGC_RESTART_DONE is set when we |
393 | * restart a handshake because of MS SGC and so prevents us | 391 | * restart a handshake because of MS SGC and so prevents us |
394 | * from restarting the handshake in a loop. It's reset on a | 392 | * from restarting the handshake in a loop. It's reset on a |
@@ -402,8 +400,7 @@ typedef struct ssl3_buffer_st | |||
402 | 400 | ||
403 | #ifndef OPENSSL_NO_SSL_INTERN | 401 | #ifndef OPENSSL_NO_SSL_INTERN |
404 | 402 | ||
405 | typedef struct ssl3_state_st | 403 | typedef struct ssl3_state_st { |
406 | { | ||
407 | long flags; | 404 | long flags; |
408 | int delay_buf_pop_ret; | 405 | int delay_buf_pop_ret; |
409 | 406 | ||
@@ -471,7 +468,8 @@ typedef struct ssl3_state_st | |||
471 | 468 | ||
472 | /* Opaque PRF input as used for the current handshake. | 469 | /* Opaque PRF input as used for the current handshake. |
473 | * These fields are used only if TLSEXT_TYPE_opaque_prf_input is defined | 470 | * These fields are used only if TLSEXT_TYPE_opaque_prf_input is defined |
474 | * (otherwise, they are merely present to improve binary compatibility) */ | 471 | * (otherwise, they are merely present to improve binary compatibility) |
472 | */ | ||
475 | void *client_opaque_prf_input; | 473 | void *client_opaque_prf_input; |
476 | size_t client_opaque_prf_input_len; | 474 | size_t client_opaque_prf_input_len; |
477 | void *server_opaque_prf_input; | 475 | void *server_opaque_prf_input; |
@@ -501,7 +499,7 @@ typedef struct ssl3_state_st | |||
501 | #endif | 499 | #endif |
502 | 500 | ||
503 | /* used when SSL_ST_FLUSH_DATA is entered */ | 501 | /* used when SSL_ST_FLUSH_DATA is entered */ |
504 | int next_state; | 502 | int next_state; |
505 | 503 | ||
506 | int reuse_message; | 504 | int reuse_message; |
507 | 505 | ||
@@ -526,17 +524,18 @@ typedef struct ssl3_state_st | |||
526 | char *new_compression; | 524 | char *new_compression; |
527 | #endif | 525 | #endif |
528 | int cert_request; | 526 | int cert_request; |
529 | } tmp; | 527 | } tmp; |
530 | 528 | ||
531 | /* Connection binding to prevent renegotiation attacks */ | 529 | /* Connection binding to prevent renegotiation attacks */ |
532 | unsigned char previous_client_finished[EVP_MAX_MD_SIZE]; | 530 | unsigned char previous_client_finished[EVP_MAX_MD_SIZE]; |
533 | unsigned char previous_client_finished_len; | 531 | unsigned char previous_client_finished_len; |
534 | unsigned char previous_server_finished[EVP_MAX_MD_SIZE]; | 532 | unsigned char previous_server_finished[EVP_MAX_MD_SIZE]; |
535 | unsigned char previous_server_finished_len; | 533 | unsigned char previous_server_finished_len; |
536 | int send_connection_binding; /* TODOEKR */ | 534 | int send_connection_binding; /* TODOEKR */ |
537 | 535 | ||
538 | #ifndef OPENSSL_NO_NEXTPROTONEG | 536 | #ifndef OPENSSL_NO_NEXTPROTONEG |
539 | /* Set if we saw the Next Protocol Negotiation extension from our peer. */ | 537 | /* Set if we saw the Next Protocol Negotiation extension from our peer. |
538 | */ | ||
540 | int next_proto_neg_seen; | 539 | int next_proto_neg_seen; |
541 | #endif | 540 | #endif |
542 | 541 | ||
@@ -548,7 +547,7 @@ typedef struct ssl3_state_st | |||
548 | char is_probably_safari; | 547 | char is_probably_safari; |
549 | #endif /* !OPENSSL_NO_EC */ | 548 | #endif /* !OPENSSL_NO_EC */ |
550 | #endif /* !OPENSSL_NO_TLSEXT */ | 549 | #endif /* !OPENSSL_NO_TLSEXT */ |
551 | } SSL3_STATE; | 550 | } SSL3_STATE; |
552 | 551 | ||
553 | #endif | 552 | #endif |
554 | 553 | ||
@@ -690,4 +689,3 @@ typedef struct ssl3_state_st | |||
690 | } | 689 | } |
691 | #endif | 690 | #endif |
692 | #endif | 691 | #endif |
693 | |||
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h index 7311d984ae..203a47480f 100644 --- a/src/lib/libssl/ssl_locl.h +++ b/src/lib/libssl/ssl_locl.h | |||
@@ -480,21 +480,19 @@ | |||
480 | #define NAMED_CURVE_TYPE 3 | 480 | #define NAMED_CURVE_TYPE 3 |
481 | #endif /* OPENSSL_NO_EC */ | 481 | #endif /* OPENSSL_NO_EC */ |
482 | 482 | ||
483 | typedef struct cert_pkey_st | 483 | typedef struct cert_pkey_st { |
484 | { | ||
485 | X509 *x509; | 484 | X509 *x509; |
486 | EVP_PKEY *privatekey; | 485 | EVP_PKEY *privatekey; |
487 | /* Digest to use when signing */ | 486 | /* Digest to use when signing */ |
488 | const EVP_MD *digest; | 487 | const EVP_MD *digest; |
489 | } CERT_PKEY; | 488 | } CERT_PKEY; |
490 | 489 | ||
491 | typedef struct cert_st | 490 | typedef struct cert_st { |
492 | { | ||
493 | /* Current active set */ | 491 | /* Current active set */ |
494 | CERT_PKEY *key; /* ALWAYS points to an element of the pkeys array | 492 | CERT_PKEY *key; /* ALWAYS points to an element of the pkeys array |
495 | * Probably it would make more sense to store | 493 | * Probably it would make more sense to store |
496 | * an index, not a pointer. */ | 494 | * an index, not a pointer. */ |
497 | 495 | ||
498 | /* The following masks are for the key and auth | 496 | /* The following masks are for the key and auth |
499 | * algorithms that are supported by the certs below */ | 497 | * algorithms that are supported by the certs below */ |
500 | int valid; | 498 | int valid; |
@@ -504,26 +502,25 @@ typedef struct cert_st | |||
504 | unsigned long export_mask_a; | 502 | unsigned long export_mask_a; |
505 | #ifndef OPENSSL_NO_RSA | 503 | #ifndef OPENSSL_NO_RSA |
506 | RSA *rsa_tmp; | 504 | RSA *rsa_tmp; |
507 | RSA *(*rsa_tmp_cb)(SSL *ssl,int is_export,int keysize); | 505 | RSA *(*rsa_tmp_cb)(SSL *ssl, int is_export, int keysize); |
508 | #endif | 506 | #endif |
509 | #ifndef OPENSSL_NO_DH | 507 | #ifndef OPENSSL_NO_DH |
510 | DH *dh_tmp; | 508 | DH *dh_tmp; |
511 | DH *(*dh_tmp_cb)(SSL *ssl,int is_export,int keysize); | 509 | DH *(*dh_tmp_cb)(SSL *ssl, int is_export, int keysize); |
512 | #endif | 510 | #endif |
513 | #ifndef OPENSSL_NO_ECDH | 511 | #ifndef OPENSSL_NO_ECDH |
514 | EC_KEY *ecdh_tmp; | 512 | EC_KEY *ecdh_tmp; |
515 | /* Callback for generating ephemeral ECDH keys */ | 513 | /* Callback for generating ephemeral ECDH keys */ |
516 | EC_KEY *(*ecdh_tmp_cb)(SSL *ssl,int is_export,int keysize); | 514 | EC_KEY *(*ecdh_tmp_cb)(SSL *ssl, int is_export, int keysize); |
517 | #endif | 515 | #endif |
518 | 516 | ||
519 | CERT_PKEY pkeys[SSL_PKEY_NUM]; | 517 | CERT_PKEY pkeys[SSL_PKEY_NUM]; |
520 | 518 | ||
521 | int references; /* >1 only if SSL_copy_session_id is used */ | 519 | int references; /* >1 only if SSL_copy_session_id is used */ |
522 | } CERT; | 520 | } CERT; |
523 | 521 | ||
524 | 522 | ||
525 | typedef struct sess_cert_st | 523 | typedef struct sess_cert_st { |
526 | { | ||
527 | STACK_OF(X509) *cert_chain; /* as received from peer (not for SSL2) */ | 524 | STACK_OF(X509) *cert_chain; /* as received from peer (not for SSL2) */ |
528 | 525 | ||
529 | /* The 'peer_...' members are used only by clients. */ | 526 | /* The 'peer_...' members are used only by clients. */ |
@@ -545,7 +542,7 @@ typedef struct sess_cert_st | |||
545 | #endif | 542 | #endif |
546 | 543 | ||
547 | int references; /* actually always 1 at the moment */ | 544 | int references; /* actually always 1 at the moment */ |
548 | } SESS_CERT; | 545 | } SESS_CERT; |
549 | 546 | ||
550 | 547 | ||
551 | /*#define MAC_DEBUG */ | 548 | /*#define MAC_DEBUG */ |
@@ -568,12 +565,12 @@ typedef struct sess_cert_st | |||
568 | /* This is for the SSLv3/TLSv1.0 differences in crypto/hash stuff | 565 | /* This is for the SSLv3/TLSv1.0 differences in crypto/hash stuff |
569 | * It is a bit of a mess of functions, but hell, think of it as | 566 | * It is a bit of a mess of functions, but hell, think of it as |
570 | * an opaque structure :-) */ | 567 | * an opaque structure :-) */ |
571 | typedef struct ssl3_enc_method | 568 | typedef struct ssl3_enc_method { |
572 | { | ||
573 | int (*enc)(SSL *, int); | 569 | int (*enc)(SSL *, int); |
574 | int (*mac)(SSL *, unsigned char *, int); | 570 | int (*mac)(SSL *, unsigned char *, int); |
575 | int (*setup_key_block)(SSL *); | 571 | int (*setup_key_block)(SSL *); |
576 | int (*generate_master_secret)(SSL *, unsigned char *, unsigned char *, int); | 572 | int (*generate_master_secret)(SSL *, unsigned char *, |
573 | unsigned char *, int); | ||
577 | int (*change_cipher_state)(SSL *, int); | 574 | int (*change_cipher_state)(SSL *, int); |
578 | int (*final_finish_mac)(SSL *, const char *, int, unsigned char *); | 575 | int (*final_finish_mac)(SSL *, const char *, int, unsigned char *); |
579 | int finish_mac_length; | 576 | int finish_mac_length; |
@@ -584,33 +581,29 @@ typedef struct ssl3_enc_method | |||
584 | int server_finished_label_len; | 581 | int server_finished_label_len; |
585 | int (*alert_value)(int); | 582 | int (*alert_value)(int); |
586 | int (*export_keying_material)(SSL *, unsigned char *, size_t, | 583 | int (*export_keying_material)(SSL *, unsigned char *, size_t, |
587 | const char *, size_t, | 584 | const char *, size_t, const unsigned char *, size_t, |
588 | const unsigned char *, size_t, | 585 | int use_context); |
589 | int use_context); | 586 | } SSL3_ENC_METHOD; |
590 | } SSL3_ENC_METHOD; | ||
591 | 587 | ||
592 | #ifndef OPENSSL_NO_COMP | 588 | #ifndef OPENSSL_NO_COMP |
593 | /* Used for holding the relevant compression methods loaded into SSL_CTX */ | 589 | /* Used for holding the relevant compression methods loaded into SSL_CTX */ |
594 | typedef struct ssl3_comp_st | 590 | typedef struct ssl3_comp_st { |
595 | { | ||
596 | int comp_id; /* The identifier byte for this compression type */ | 591 | int comp_id; /* The identifier byte for this compression type */ |
597 | char *name; /* Text name used for the compression type */ | 592 | char *name; /* Text name used for the compression type */ |
598 | COMP_METHOD *method; /* The method :-) */ | 593 | COMP_METHOD *method; /* The method :-) */ |
599 | } SSL3_COMP; | 594 | } SSL3_COMP; |
600 | #endif | 595 | #endif |
601 | 596 | ||
602 | #ifndef OPENSSL_NO_BUF_FREELISTS | 597 | #ifndef OPENSSL_NO_BUF_FREELISTS |
603 | typedef struct ssl3_buf_freelist_st | 598 | typedef struct ssl3_buf_freelist_st { |
604 | { | ||
605 | size_t chunklen; | 599 | size_t chunklen; |
606 | unsigned int len; | 600 | unsigned int len; |
607 | struct ssl3_buf_freelist_entry_st *head; | 601 | struct ssl3_buf_freelist_entry_st *head; |
608 | } SSL3_BUF_FREELIST; | 602 | } SSL3_BUF_FREELIST; |
609 | 603 | ||
610 | typedef struct ssl3_buf_freelist_entry_st | 604 | typedef struct ssl3_buf_freelist_entry_st { |
611 | { | ||
612 | struct ssl3_buf_freelist_entry_st *next; | 605 | struct ssl3_buf_freelist_entry_st *next; |
613 | } SSL3_BUF_FREELIST_ENTRY; | 606 | } SSL3_BUF_FREELIST_ENTRY; |
614 | #endif | 607 | #endif |
615 | 608 | ||
616 | extern SSL3_ENC_METHOD ssl3_undef_enc_method; | 609 | extern SSL3_ENC_METHOD ssl3_undef_enc_method; |
@@ -822,32 +815,33 @@ SESS_CERT *ssl_sess_cert_new(void); | |||
822 | void ssl_sess_cert_free(SESS_CERT *sc); | 815 | void ssl_sess_cert_free(SESS_CERT *sc); |
823 | int ssl_set_peer_cert_type(SESS_CERT *c, int type); | 816 | int ssl_set_peer_cert_type(SESS_CERT *c, int type); |
824 | int ssl_get_new_session(SSL *s, int session); | 817 | int ssl_get_new_session(SSL *s, int session); |
825 | int ssl_get_prev_session(SSL *s, unsigned char *session,int len, const unsigned char *limit); | 818 | int ssl_get_prev_session(SSL *s, unsigned char *session, int len, |
826 | int ssl_cipher_id_cmp(const SSL_CIPHER *a,const SSL_CIPHER *b); | 819 | const unsigned char *limit); |
827 | DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(SSL_CIPHER, SSL_CIPHER, | 820 | int ssl_cipher_id_cmp(const SSL_CIPHER *a, const SSL_CIPHER *b); |
828 | ssl_cipher_id); | 821 | DECLARE_OBJ_BSEARCH_GLOBAL_CMP_FN(SSL_CIPHER, SSL_CIPHER, ssl_cipher_id); |
829 | int ssl_cipher_ptr_id_cmp(const SSL_CIPHER * const *ap, | 822 | int ssl_cipher_ptr_id_cmp(const SSL_CIPHER * const *ap, |
830 | const SSL_CIPHER * const *bp); | 823 | const SSL_CIPHER * const *bp); |
831 | STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s,unsigned char *p,int num, | 824 | STACK_OF(SSL_CIPHER) *ssl_bytes_to_cipher_list(SSL *s, unsigned char *p, |
832 | STACK_OF(SSL_CIPHER) **skp); | 825 | int num, STACK_OF(SSL_CIPHER) **skp); |
833 | int ssl_cipher_list_to_bytes(SSL *s,STACK_OF(SSL_CIPHER) *sk,unsigned char *p, | 826 | int ssl_cipher_list_to_bytes(SSL *s, STACK_OF(SSL_CIPHER) *sk, |
834 | int (*put_cb)(const SSL_CIPHER *, unsigned char *)); | 827 | unsigned char *p, int (*put_cb)(const SSL_CIPHER *, unsigned char *)); |
835 | STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *meth, | 828 | STACK_OF(SSL_CIPHER) *ssl_create_cipher_list(const SSL_METHOD *meth, |
836 | STACK_OF(SSL_CIPHER) **pref, | 829 | STACK_OF(SSL_CIPHER) **pref, STACK_OF(SSL_CIPHER) **sorted, |
837 | STACK_OF(SSL_CIPHER) **sorted, | 830 | const char *rule_str); |
838 | const char *rule_str); | ||
839 | void ssl_update_cache(SSL *s, int mode); | 831 | void ssl_update_cache(SSL *s, int mode); |
840 | int ssl_cipher_get_evp(const SSL_SESSION *s,const EVP_CIPHER **enc, | 832 | int ssl_cipher_get_evp(const SSL_SESSION *s, const EVP_CIPHER **enc, |
841 | const EVP_MD **md,int *mac_pkey_type,int *mac_secret_size, SSL_COMP **comp); | 833 | const EVP_MD **md, int *mac_pkey_type, int *mac_secret_size, |
842 | int ssl_get_handshake_digest(int i,long *mask,const EVP_MD **md); | 834 | SSL_COMP **comp); |
843 | int ssl_verify_cert_chain(SSL *s,STACK_OF(X509) *sk); | 835 | int ssl_get_handshake_digest(int i, long *mask, const EVP_MD **md); |
836 | |||
837 | int ssl_verify_cert_chain(SSL *s, STACK_OF(X509) *sk); | ||
844 | int ssl_undefined_function(SSL *s); | 838 | int ssl_undefined_function(SSL *s); |
845 | int ssl_undefined_void_function(void); | 839 | int ssl_undefined_void_function(void); |
846 | int ssl_undefined_const_function(const SSL *s); | 840 | int ssl_undefined_const_function(const SSL *s); |
847 | CERT_PKEY *ssl_get_server_send_pkey(const SSL *s); | 841 | CERT_PKEY *ssl_get_server_send_pkey(const SSL *s); |
848 | X509 *ssl_get_server_send_cert(const SSL *); | 842 | X509 *ssl_get_server_send_cert(const SSL *); |
849 | EVP_PKEY *ssl_get_sign_pkey(SSL *s,const SSL_CIPHER *c, const EVP_MD **pmd); | 843 | EVP_PKEY *ssl_get_sign_pkey(SSL *s, const SSL_CIPHER *c, const EVP_MD **pmd); |
850 | int ssl_cert_type(X509 *x,EVP_PKEY *pkey); | 844 | int ssl_cert_type(X509 *x, EVP_PKEY *pkey); |
851 | void ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher); | 845 | void ssl_set_cert_masks(CERT *c, const SSL_CIPHER *cipher); |
852 | STACK_OF(SSL_CIPHER) *ssl_get_ciphers_by_id(SSL *s); | 846 | STACK_OF(SSL_CIPHER) *ssl_get_ciphers_by_id(SSL *s); |
853 | int ssl_verify_alarm_type(long type); | 847 | int ssl_verify_alarm_type(long type); |
@@ -856,14 +850,14 @@ int ssl_fill_hello_random(SSL *s, int server, unsigned char *field, int len); | |||
856 | 850 | ||
857 | int ssl2_enc_init(SSL *s, int client); | 851 | int ssl2_enc_init(SSL *s, int client); |
858 | int ssl2_generate_key_material(SSL *s); | 852 | int ssl2_generate_key_material(SSL *s); |
859 | void ssl2_enc(SSL *s,int send_data); | 853 | void ssl2_enc(SSL *s, int send_data); |
860 | void ssl2_mac(SSL *s,unsigned char *mac,int send_data); | 854 | void ssl2_mac(SSL *s, unsigned char *mac, int send_data); |
861 | const SSL_CIPHER *ssl2_get_cipher_by_char(const unsigned char *p); | 855 | const SSL_CIPHER *ssl2_get_cipher_by_char(const unsigned char *p); |
862 | int ssl2_put_cipher_by_char(const SSL_CIPHER *c,unsigned char *p); | 856 | int ssl2_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p); |
863 | int ssl2_part_read(SSL *s, unsigned long f, int i); | 857 | int ssl2_part_read(SSL *s, unsigned long f, int i); |
864 | int ssl2_do_write(SSL *s); | 858 | int ssl2_do_write(SSL *s); |
865 | int ssl2_set_certificate(SSL *s, int type, int len, const unsigned char *data); | 859 | int ssl2_set_certificate(SSL *s, int type, int len, const unsigned char *data); |
866 | void ssl2_return_error(SSL *s,int reason); | 860 | void ssl2_return_error(SSL *s, int reason); |
867 | void ssl2_write_error(SSL *s); | 861 | void ssl2_write_error(SSL *s); |
868 | int ssl2_num_ciphers(void); | 862 | int ssl2_num_ciphers(void); |
869 | const SSL_CIPHER *ssl2_get_cipher(unsigned int u); | 863 | const SSL_CIPHER *ssl2_get_cipher(unsigned int u); |
@@ -876,47 +870,50 @@ int ssl2_peek(SSL *s, void *buf, int len); | |||
876 | int ssl2_write(SSL *s, const void *buf, int len); | 870 | int ssl2_write(SSL *s, const void *buf, int len); |
877 | int ssl2_shutdown(SSL *s); | 871 | int ssl2_shutdown(SSL *s); |
878 | void ssl2_clear(SSL *s); | 872 | void ssl2_clear(SSL *s); |
879 | long ssl2_ctrl(SSL *s,int cmd, long larg, void *parg); | 873 | long ssl2_ctrl(SSL *s, int cmd, long larg, void *parg); |
880 | long ssl2_ctx_ctrl(SSL_CTX *s,int cmd, long larg, void *parg); | 874 | long ssl2_ctx_ctrl(SSL_CTX *s, int cmd, long larg, void *parg); |
881 | long ssl2_callback_ctrl(SSL *s,int cmd, void (*fp)(void)); | 875 | long ssl2_callback_ctrl(SSL *s, int cmd, void (*fp)(void)); |
882 | long ssl2_ctx_callback_ctrl(SSL_CTX *s,int cmd, void (*fp)(void)); | 876 | long ssl2_ctx_callback_ctrl(SSL_CTX *s, int cmd, void (*fp)(void)); |
883 | int ssl2_pending(const SSL *s); | 877 | int ssl2_pending(const SSL *s); |
884 | long ssl2_default_timeout(void ); | 878 | long ssl2_default_timeout(void ); |
885 | 879 | ||
886 | const SSL_CIPHER *ssl3_get_cipher_by_char(const unsigned char *p); | 880 | const SSL_CIPHER *ssl3_get_cipher_by_char(const unsigned char *p); |
887 | int ssl3_put_cipher_by_char(const SSL_CIPHER *c,unsigned char *p); | 881 | int ssl3_put_cipher_by_char(const SSL_CIPHER *c, unsigned char *p); |
888 | void ssl3_init_finished_mac(SSL *s); | 882 | void ssl3_init_finished_mac(SSL *s); |
889 | int ssl3_send_server_certificate(SSL *s); | 883 | int ssl3_send_server_certificate(SSL *s); |
890 | int ssl3_send_newsession_ticket(SSL *s); | 884 | int ssl3_send_newsession_ticket(SSL *s); |
891 | int ssl3_send_cert_status(SSL *s); | 885 | int ssl3_send_cert_status(SSL *s); |
892 | int ssl3_get_finished(SSL *s,int state_a,int state_b); | 886 | int ssl3_get_finished(SSL *s, int state_a, int state_b); |
893 | int ssl3_setup_key_block(SSL *s); | 887 | int ssl3_setup_key_block(SSL *s); |
894 | int ssl3_send_change_cipher_spec(SSL *s,int state_a,int state_b); | 888 | int ssl3_send_change_cipher_spec(SSL *s, int state_a, int state_b); |
895 | int ssl3_change_cipher_state(SSL *s,int which); | 889 | int ssl3_change_cipher_state(SSL *s, int which); |
896 | void ssl3_cleanup_key_block(SSL *s); | 890 | void ssl3_cleanup_key_block(SSL *s); |
897 | int ssl3_do_write(SSL *s,int type); | 891 | int ssl3_do_write(SSL *s, int type); |
898 | int ssl3_send_alert(SSL *s,int level, int desc); | 892 | int ssl3_send_alert(SSL *s, int level, int desc); |
899 | int ssl3_generate_master_secret(SSL *s, unsigned char *out, | 893 | int ssl3_generate_master_secret(SSL *s, unsigned char *out, |
900 | unsigned char *p, int len); | 894 | unsigned char *p, int len); |
901 | int ssl3_get_req_cert_type(SSL *s,unsigned char *p); | 895 | int ssl3_get_req_cert_type(SSL *s, unsigned char *p); |
902 | long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok); | 896 | long ssl3_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok); |
903 | int ssl3_send_finished(SSL *s, int a, int b, const char *sender,int slen); | 897 | int ssl3_send_finished(SSL *s, int a, int b, const char *sender, int slen); |
904 | int ssl3_num_ciphers(void); | 898 | int ssl3_num_ciphers(void); |
905 | const SSL_CIPHER *ssl3_get_cipher(unsigned int u); | 899 | const SSL_CIPHER *ssl3_get_cipher(unsigned int u); |
906 | int ssl3_renegotiate(SSL *ssl); | 900 | int ssl3_renegotiate(SSL *ssl); |
907 | int ssl3_renegotiate_check(SSL *ssl); | 901 | |
902 | int ssl3_renegotiate_check(SSL *ssl); | ||
903 | |||
908 | int ssl3_dispatch_alert(SSL *s); | 904 | int ssl3_dispatch_alert(SSL *s); |
909 | int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek); | 905 | int ssl3_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek); |
910 | int ssl3_write_bytes(SSL *s, int type, const void *buf, int len); | 906 | int ssl3_write_bytes(SSL *s, int type, const void *buf, int len); |
911 | int ssl3_final_finish_mac(SSL *s, const char *sender, int slen,unsigned char *p); | 907 | int ssl3_final_finish_mac(SSL *s, const char *sender, int slen, |
908 | unsigned char *p); | ||
912 | int ssl3_cert_verify_mac(SSL *s, int md_nid, unsigned char *p); | 909 | int ssl3_cert_verify_mac(SSL *s, int md_nid, unsigned char *p); |
913 | void ssl3_finish_mac(SSL *s, const unsigned char *buf, int len); | 910 | void ssl3_finish_mac(SSL *s, const unsigned char *buf, int len); |
914 | int ssl3_enc(SSL *s, int send_data); | 911 | int ssl3_enc(SSL *s, int send_data); |
915 | int n_ssl3_mac(SSL *ssl, unsigned char *md, int send_data); | 912 | int n_ssl3_mac(SSL *ssl, unsigned char *md, int send_data); |
916 | void ssl3_free_digest_list(SSL *s); | 913 | void ssl3_free_digest_list(SSL *s); |
917 | unsigned long ssl3_output_cert_chain(SSL *s, X509 *x); | 914 | unsigned long ssl3_output_cert_chain(SSL *s, X509 *x); |
918 | SSL_CIPHER *ssl3_choose_cipher(SSL *ssl,STACK_OF(SSL_CIPHER) *clnt, | 915 | SSL_CIPHER *ssl3_choose_cipher(SSL *ssl, STACK_OF(SSL_CIPHER) *clnt, |
919 | STACK_OF(SSL_CIPHER) *srvr); | 916 | STACK_OF(SSL_CIPHER) *srvr); |
920 | int ssl3_setup_buffers(SSL *s); | 917 | int ssl3_setup_buffers(SSL *s); |
921 | int ssl3_setup_read_buffer(SSL *s); | 918 | int ssl3_setup_read_buffer(SSL *s); |
922 | int ssl3_setup_write_buffer(SSL *s); | 919 | int ssl3_setup_write_buffer(SSL *s); |
@@ -932,10 +929,10 @@ int ssl3_peek(SSL *s, void *buf, int len); | |||
932 | int ssl3_write(SSL *s, const void *buf, int len); | 929 | int ssl3_write(SSL *s, const void *buf, int len); |
933 | int ssl3_shutdown(SSL *s); | 930 | int ssl3_shutdown(SSL *s); |
934 | void ssl3_clear(SSL *s); | 931 | void ssl3_clear(SSL *s); |
935 | long ssl3_ctrl(SSL *s,int cmd, long larg, void *parg); | 932 | long ssl3_ctrl(SSL *s, int cmd, long larg, void *parg); |
936 | long ssl3_ctx_ctrl(SSL_CTX *s,int cmd, long larg, void *parg); | 933 | long ssl3_ctx_ctrl(SSL_CTX *s, int cmd, long larg, void *parg); |
937 | long ssl3_callback_ctrl(SSL *s,int cmd, void (*fp)(void)); | 934 | long ssl3_callback_ctrl(SSL *s, int cmd, void (*fp)(void)); |
938 | long ssl3_ctx_callback_ctrl(SSL_CTX *s,int cmd, void (*fp)(void)); | 935 | long ssl3_ctx_callback_ctrl(SSL_CTX *s, int cmd, void (*fp)(void)); |
939 | int ssl3_pending(const SSL *s); | 936 | int ssl3_pending(const SSL *s); |
940 | 937 | ||
941 | void ssl3_record_sequence_update(unsigned char *seq); | 938 | void ssl3_record_sequence_update(unsigned char *seq); |
@@ -952,16 +949,16 @@ const SSL_CIPHER *ssl23_get_cipher_by_char(const unsigned char *p); | |||
952 | long ssl23_default_timeout(void ); | 949 | long ssl23_default_timeout(void ); |
953 | 950 | ||
954 | long tls1_default_timeout(void); | 951 | long tls1_default_timeout(void); |
955 | int dtls1_do_write(SSL *s,int type); | 952 | int dtls1_do_write(SSL *s, int type); |
956 | int ssl3_read_n(SSL *s, int n, int max, int extend); | 953 | int ssl3_read_n(SSL *s, int n, int max, int extend); |
957 | int dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek); | 954 | int dtls1_read_bytes(SSL *s, int type, unsigned char *buf, int len, int peek); |
958 | int ssl3_do_compress(SSL *ssl); | 955 | int ssl3_do_compress(SSL *ssl); |
959 | int ssl3_do_uncompress(SSL *ssl); | 956 | int ssl3_do_uncompress(SSL *ssl); |
960 | int ssl3_write_pending(SSL *s, int type, const unsigned char *buf, | 957 | int ssl3_write_pending(SSL *s, int type, const unsigned char *buf, |
961 | unsigned int len); | 958 | unsigned int len); |
962 | unsigned char *dtls1_set_message_header(SSL *s, | 959 | unsigned char *dtls1_set_message_header(SSL *s, unsigned char *p, |
963 | unsigned char *p, unsigned char mt, unsigned long len, | 960 | unsigned char mt, unsigned long len, unsigned long frag_off, |
964 | unsigned long frag_off, unsigned long frag_len); | 961 | unsigned long frag_len); |
965 | 962 | ||
966 | int dtls1_write_app_data_bytes(SSL *s, int type, const void *buf, int len); | 963 | int dtls1_write_app_data_bytes(SSL *s, int type, const void *buf, int len); |
967 | int dtls1_write_bytes(SSL *s, int type, const void *buf, int len); | 964 | int dtls1_write_bytes(SSL *s, int type, const void *buf, int len); |
@@ -971,8 +968,8 @@ int dtls1_send_finished(SSL *s, int a, int b, const char *sender, int slen); | |||
971 | unsigned long dtls1_output_cert_chain(SSL *s, X509 *x); | 968 | unsigned long dtls1_output_cert_chain(SSL *s, X509 *x); |
972 | int dtls1_read_failed(SSL *s, int code); | 969 | int dtls1_read_failed(SSL *s, int code); |
973 | int dtls1_buffer_message(SSL *s, int ccs); | 970 | int dtls1_buffer_message(SSL *s, int ccs); |
974 | int dtls1_retransmit_message(SSL *s, unsigned short seq, | 971 | int dtls1_retransmit_message(SSL *s, unsigned short seq, |
975 | unsigned long frag_off, int *found); | 972 | unsigned long frag_off, int *found); |
976 | int dtls1_get_queue_priority(unsigned short seq, int is_ccs); | 973 | int dtls1_get_queue_priority(unsigned short seq, int is_ccs); |
977 | int dtls1_retransmit_buffered_messages(SSL *s); | 974 | int dtls1_retransmit_buffered_messages(SSL *s); |
978 | void dtls1_clear_record_buffer(SSL *s); | 975 | void dtls1_clear_record_buffer(SSL *s); |
@@ -1049,21 +1046,21 @@ int ssl23_write_bytes(SSL *s); | |||
1049 | int tls1_new(SSL *s); | 1046 | int tls1_new(SSL *s); |
1050 | void tls1_free(SSL *s); | 1047 | void tls1_free(SSL *s); |
1051 | void tls1_clear(SSL *s); | 1048 | void tls1_clear(SSL *s); |
1052 | long tls1_ctrl(SSL *s,int cmd, long larg, void *parg); | 1049 | long tls1_ctrl(SSL *s, int cmd, long larg, void *parg); |
1053 | long tls1_callback_ctrl(SSL *s,int cmd, void (*fp)(void)); | 1050 | long tls1_callback_ctrl(SSL *s, int cmd, void (*fp)(void)); |
1054 | 1051 | ||
1055 | int dtls1_new(SSL *s); | 1052 | int dtls1_new(SSL *s); |
1056 | int dtls1_accept(SSL *s); | 1053 | int dtls1_accept(SSL *s); |
1057 | int dtls1_connect(SSL *s); | 1054 | int dtls1_connect(SSL *s); |
1058 | void dtls1_free(SSL *s); | 1055 | void dtls1_free(SSL *s); |
1059 | void dtls1_clear(SSL *s); | 1056 | void dtls1_clear(SSL *s); |
1060 | long dtls1_ctrl(SSL *s,int cmd, long larg, void *parg); | 1057 | long dtls1_ctrl(SSL *s, int cmd, long larg, void *parg); |
1061 | int dtls1_shutdown(SSL *s); | 1058 | int dtls1_shutdown(SSL *s); |
1062 | 1059 | ||
1063 | long dtls1_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok); | 1060 | long dtls1_get_message(SSL *s, int st1, int stn, int mt, long max, int *ok); |
1064 | int dtls1_get_record(SSL *s); | 1061 | int dtls1_get_record(SSL *s); |
1065 | int do_dtls1_write(SSL *s, int type, const unsigned char *buf, | 1062 | int do_dtls1_write(SSL *s, int type, const unsigned char *buf, |
1066 | unsigned int len, int create_empty_fragement); | 1063 | unsigned int len, int create_empty_fragement); |
1067 | int dtls1_dispatch_alert(SSL *s); | 1064 | int dtls1_dispatch_alert(SSL *s); |
1068 | int dtls1_enc(SSL *s, int snd); | 1065 | int dtls1_enc(SSL *s, int snd); |
1069 | 1066 | ||
@@ -1073,15 +1070,14 @@ void ssl_free_wbio_buffer(SSL *s); | |||
1073 | int tls1_change_cipher_state(SSL *s, int which); | 1070 | int tls1_change_cipher_state(SSL *s, int which); |
1074 | int tls1_setup_key_block(SSL *s); | 1071 | int tls1_setup_key_block(SSL *s); |
1075 | int tls1_enc(SSL *s, int snd); | 1072 | int tls1_enc(SSL *s, int snd); |
1076 | int tls1_final_finish_mac(SSL *s, | 1073 | int tls1_final_finish_mac(SSL *s, const char *str, int slen, unsigned char *p); |
1077 | const char *str, int slen, unsigned char *p); | ||
1078 | int tls1_cert_verify_mac(SSL *s, int md_nid, unsigned char *p); | 1074 | int tls1_cert_verify_mac(SSL *s, int md_nid, unsigned char *p); |
1079 | int tls1_mac(SSL *ssl, unsigned char *md, int snd); | 1075 | int tls1_mac(SSL *ssl, unsigned char *md, int snd); |
1080 | int tls1_generate_master_secret(SSL *s, unsigned char *out, | 1076 | int tls1_generate_master_secret(SSL *s, unsigned char *out, |
1081 | unsigned char *p, int len); | 1077 | unsigned char *p, int len); |
1082 | int tls1_export_keying_material(SSL *s, unsigned char *out, size_t olen, | 1078 | int tls1_export_keying_material(SSL *s, unsigned char *out, size_t olen, |
1083 | const char *label, size_t llen, | 1079 | const char *label, size_t llen, const unsigned char *p, size_t plen, |
1084 | const unsigned char *p, size_t plen, int use_context); | 1080 | int use_context); |
1085 | int tls1_alert_code(int code); | 1081 | int tls1_alert_code(int code); |
1086 | int ssl3_alert_code(int code); | 1082 | int ssl3_alert_code(int code); |
1087 | int ssl_ok(SSL *s); | 1083 | int ssl_ok(SSL *s); |
@@ -1098,10 +1094,16 @@ int tls1_ec_nid2curve_id(int nid); | |||
1098 | #endif /* OPENSSL_NO_EC */ | 1094 | #endif /* OPENSSL_NO_EC */ |
1099 | 1095 | ||
1100 | #ifndef OPENSSL_NO_TLSEXT | 1096 | #ifndef OPENSSL_NO_TLSEXT |
1101 | unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, unsigned char *limit); | 1097 | unsigned char *ssl_add_clienthello_tlsext(SSL *s, unsigned char *p, |
1102 | unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *p, unsigned char *limit); | 1098 | unsigned char *limit); |
1103 | int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **data, unsigned char *d, int n, int *al); | 1099 | |
1104 | int ssl_parse_serverhello_tlsext(SSL *s, unsigned char **data, unsigned char *d, int n, int *al); | 1100 | unsigned char *ssl_add_serverhello_tlsext(SSL *s, unsigned char *p, |
1101 | unsigned char *limit); | ||
1102 | |||
1103 | int ssl_parse_clienthello_tlsext(SSL *s, unsigned char **data, | ||
1104 | unsigned char *d, int n, int *al); | ||
1105 | int ssl_parse_serverhello_tlsext(SSL *s, unsigned char **data, | ||
1106 | unsigned char *d, int n, int *al); | ||
1105 | int ssl_prepare_clienthello_tlsext(SSL *s); | 1107 | int ssl_prepare_clienthello_tlsext(SSL *s); |
1106 | int ssl_prepare_serverhello_tlsext(SSL *s); | 1108 | int ssl_prepare_serverhello_tlsext(SSL *s); |
1107 | int ssl_check_clienthello_tlsext_early(SSL *s); | 1109 | int ssl_check_clienthello_tlsext_early(SSL *s); |
@@ -1114,60 +1116,53 @@ int ssl_check_serverhello_tlsext(SSL *s); | |||
1114 | #define tlsext_tick_md EVP_sha256 | 1116 | #define tlsext_tick_md EVP_sha256 |
1115 | #endif | 1117 | #endif |
1116 | int tls1_process_ticket(SSL *s, unsigned char *session_id, int len, | 1118 | int tls1_process_ticket(SSL *s, unsigned char *session_id, int len, |
1117 | const unsigned char *limit, SSL_SESSION **ret); | 1119 | const unsigned char *limit, SSL_SESSION **ret); |
1118 | 1120 | ||
1119 | int tls12_get_sigandhash(unsigned char *p, const EVP_PKEY *pk, | 1121 | int tls12_get_sigandhash(unsigned char *p, const EVP_PKEY *pk, |
1120 | const EVP_MD *md); | 1122 | const EVP_MD *md); |
1121 | int tls12_get_sigid(const EVP_PKEY *pk); | 1123 | int tls12_get_sigid(const EVP_PKEY *pk); |
1122 | const EVP_MD *tls12_get_hash(unsigned char hash_alg); | 1124 | const EVP_MD *tls12_get_hash(unsigned char hash_alg); |
1123 | 1125 | ||
1124 | #endif | 1126 | #endif |
1125 | EVP_MD_CTX* ssl_replace_hash(EVP_MD_CTX **hash,const EVP_MD *md) ; | 1127 | EVP_MD_CTX* ssl_replace_hash(EVP_MD_CTX **hash, const EVP_MD *md); |
1126 | void ssl_clear_hash_ctx(EVP_MD_CTX **hash); | 1128 | void ssl_clear_hash_ctx(EVP_MD_CTX **hash); |
1127 | int ssl_add_serverhello_renegotiate_ext(SSL *s, unsigned char *p, int *len, | 1129 | int ssl_add_serverhello_renegotiate_ext(SSL *s, unsigned char *p, |
1128 | int maxlen); | 1130 | int *len, int maxlen); |
1129 | int ssl_parse_serverhello_renegotiate_ext(SSL *s, unsigned char *d, int len, | 1131 | int ssl_parse_serverhello_renegotiate_ext(SSL *s, unsigned char *d, |
1130 | int *al); | 1132 | int len, int *al); |
1131 | int ssl_add_clienthello_renegotiate_ext(SSL *s, unsigned char *p, int *len, | 1133 | int ssl_add_clienthello_renegotiate_ext(SSL *s, unsigned char *p, |
1132 | int maxlen); | 1134 | int *len, int maxlen); |
1133 | int ssl_parse_clienthello_renegotiate_ext(SSL *s, unsigned char *d, int len, | 1135 | int ssl_parse_clienthello_renegotiate_ext(SSL *s, unsigned char *d, |
1134 | int *al); | 1136 | int len, int *al); |
1135 | long ssl_get_algorithm2(SSL *s); | 1137 | long ssl_get_algorithm2(SSL *s); |
1136 | int tls1_process_sigalgs(SSL *s, const unsigned char *data, int dsize); | 1138 | int tls1_process_sigalgs(SSL *s, const unsigned char *data, int dsize); |
1137 | int tls12_get_req_sig_algs(SSL *s, unsigned char *p); | 1139 | int tls12_get_req_sig_algs(SSL *s, unsigned char *p); |
1138 | 1140 | ||
1139 | int ssl_add_clienthello_use_srtp_ext(SSL *s, unsigned char *p, int *len, int maxlen); | 1141 | int ssl_add_clienthello_use_srtp_ext(SSL *s, unsigned char *p, |
1140 | int ssl_parse_clienthello_use_srtp_ext(SSL *s, unsigned char *d, int len,int *al); | 1142 | int *len, int maxlen); |
1141 | int ssl_add_serverhello_use_srtp_ext(SSL *s, unsigned char *p, int *len, int maxlen); | 1143 | int ssl_parse_clienthello_use_srtp_ext(SSL *s, unsigned char *d, |
1142 | int ssl_parse_serverhello_use_srtp_ext(SSL *s, unsigned char *d, int len,int *al); | 1144 | int len, int *al); |
1145 | int ssl_add_serverhello_use_srtp_ext(SSL *s, unsigned char *p, | ||
1146 | int *len, int maxlen); | ||
1147 | int ssl_parse_serverhello_use_srtp_ext(SSL *s, unsigned char *d, | ||
1148 | int len, int *al); | ||
1143 | 1149 | ||
1144 | /* s3_cbc.c */ | 1150 | /* s3_cbc.c */ |
1145 | void ssl3_cbc_copy_mac(unsigned char* out, | 1151 | void ssl3_cbc_copy_mac(unsigned char *out, const SSL3_RECORD *rec, |
1146 | const SSL3_RECORD *rec, | 1152 | unsigned md_size, unsigned orig_len); |
1147 | unsigned md_size,unsigned orig_len); | 1153 | int ssl3_cbc_remove_padding(const SSL *s, SSL3_RECORD *rec, |
1148 | int ssl3_cbc_remove_padding(const SSL* s, | 1154 | unsigned block_size, unsigned mac_size); |
1149 | SSL3_RECORD *rec, | 1155 | int tls1_cbc_remove_padding(const SSL *s, SSL3_RECORD *rec, |
1150 | unsigned block_size, | 1156 | unsigned block_size, unsigned mac_size); |
1151 | unsigned mac_size); | ||
1152 | int tls1_cbc_remove_padding(const SSL* s, | ||
1153 | SSL3_RECORD *rec, | ||
1154 | unsigned block_size, | ||
1155 | unsigned mac_size); | ||
1156 | char ssl3_cbc_record_digest_supported(const EVP_MD_CTX *ctx); | 1157 | char ssl3_cbc_record_digest_supported(const EVP_MD_CTX *ctx); |
1157 | void ssl3_cbc_digest_record( | 1158 | void ssl3_cbc_digest_record(const EVP_MD_CTX *ctx, unsigned char *md_out, |
1158 | const EVP_MD_CTX *ctx, | 1159 | size_t *md_out_size, const unsigned char header[13], |
1159 | unsigned char* md_out, | 1160 | const unsigned char *data, size_t data_plus_mac_size, |
1160 | size_t* md_out_size, | 1161 | size_t data_plus_mac_plus_padding_size, const unsigned char *mac_secret, |
1161 | const unsigned char header[13], | 1162 | unsigned mac_secret_length, char is_sslv3); |
1162 | const unsigned char *data, | 1163 | |
1163 | size_t data_plus_mac_size, | 1164 | void tls_fips_digest_extra(const EVP_CIPHER_CTX *cipher_ctx, |
1164 | size_t data_plus_mac_plus_padding_size, | 1165 | EVP_MD_CTX *mac_ctx, const unsigned char *data, size_t data_len, |
1165 | const unsigned char *mac_secret, | 1166 | size_t orig_len); |
1166 | unsigned mac_secret_length, | ||
1167 | char is_sslv3); | ||
1168 | |||
1169 | void tls_fips_digest_extra( | ||
1170 | const EVP_CIPHER_CTX *cipher_ctx, EVP_MD_CTX *mac_ctx, | ||
1171 | const unsigned char *data, size_t data_len, size_t orig_len); | ||
1172 | 1167 | ||
1173 | #endif | 1168 | #endif |
diff --git a/src/lib/libssl/tls1.h b/src/lib/libssl/tls1.h index 7e35f13849..95d6660ac3 100644 --- a/src/lib/libssl/tls1.h +++ b/src/lib/libssl/tls1.h | |||
@@ -240,9 +240,9 @@ extern "C" { | |||
240 | #define TLSEXT_TYPE_session_ticket 35 | 240 | #define TLSEXT_TYPE_session_ticket 35 |
241 | 241 | ||
242 | /* ExtensionType value from draft-rescorla-tls-opaque-prf-input-00.txt */ | 242 | /* ExtensionType value from draft-rescorla-tls-opaque-prf-input-00.txt */ |
243 | #if 0 /* will have to be provided externally for now , | 243 | #if 0 /* will have to be provided externally for now , |
244 | * i.e. build with -DTLSEXT_TYPE_opaque_prf_input=38183 | 244 | * i.e. build with - DTLSEXT_TYPE_opaque_prf_input = 38183 |
245 | * using whatever extension number you'd like to try */ | 245 | * using whatever extension number you'd like to try */ |
246 | # define TLSEXT_TYPE_opaque_prf_input ?? */ | 246 | # define TLSEXT_TYPE_opaque_prf_input ?? */ |
247 | #endif | 247 | #endif |
248 | 248 | ||
@@ -295,8 +295,8 @@ int SSL_get_servername_type(const SSL *s); | |||
295 | * It returns 1 on success and zero otherwise. | 295 | * It returns 1 on success and zero otherwise. |
296 | */ | 296 | */ |
297 | int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, | 297 | int SSL_export_keying_material(SSL *s, unsigned char *out, size_t olen, |
298 | const char *label, size_t llen, const unsigned char *p, size_t plen, | 298 | const char *label, size_t llen, const unsigned char *p, size_t plen, |
299 | int use_context); | 299 | int use_context); |
300 | 300 | ||
301 | #define SSL_set_tlsext_host_name(s,name) \ | 301 | #define SSL_set_tlsext_host_name(s,name) \ |
302 | SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_HOSTNAME,TLSEXT_NAMETYPE_host_name,(char *)name) | 302 | SSL_ctrl(s,SSL_CTRL_SET_TLSEXT_HOSTNAME,TLSEXT_NAMETYPE_host_name,(char *)name) |
@@ -719,11 +719,10 @@ SSL_CTX_callback_ctrl(ssl,SSL_CTRL_SET_TLSEXT_TICKET_KEY_CB,(void (*)(void))cb) | |||
719 | #endif | 719 | #endif |
720 | 720 | ||
721 | /* TLS Session Ticket extension struct */ | 721 | /* TLS Session Ticket extension struct */ |
722 | struct tls_session_ticket_ext_st | 722 | struct tls_session_ticket_ext_st { |
723 | { | ||
724 | unsigned short length; | 723 | unsigned short length; |
725 | void *data; | 724 | void *data; |
726 | }; | 725 | }; |
727 | 726 | ||
728 | #ifdef __cplusplus | 727 | #ifdef __cplusplus |
729 | } | 728 | } |