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 | } |
