117 #ifndef HEADER_SSL_LOCL_H
118 #define HEADER_SSL_LOCL_H
126 #include <openssl/buffer.h>
127 #include <openssl/comp.h>
128 #include <openssl/bio.h>
129 #include <openssl/stack.h>
130 #ifndef OPENSSL_NO_RSA
131 #include <openssl/rsa.h>
133 #ifndef OPENSSL_NO_DSA
134 #include <openssl/dsa.h>
136 #include <openssl/err.h>
137 #include <openssl/ssl.h>
138 #include <openssl/symhacks.h>
140 #ifdef OPENSSL_BUILD_SHLIBSSL
141 # undef OPENSSL_EXTERN
142 # define OPENSSL_EXTERN OPENSSL_EXPORT
147 #define c2l(c,l) (l = ((unsigned long)(*((c)++))) , \
148 l|=(((unsigned long)(*((c)++)))<< 8), \
149 l|=(((unsigned long)(*((c)++)))<<16), \
150 l|=(((unsigned long)(*((c)++)))<<24))
153 #define c2ln(c,l1,l2,n) { \
157 case 8: l2 =((unsigned long)(*(--(c))))<<24; \
158 case 7: l2|=((unsigned long)(*(--(c))))<<16; \
159 case 6: l2|=((unsigned long)(*(--(c))))<< 8; \
160 case 5: l2|=((unsigned long)(*(--(c)))); \
161 case 4: l1 =((unsigned long)(*(--(c))))<<24; \
162 case 3: l1|=((unsigned long)(*(--(c))))<<16; \
163 case 2: l1|=((unsigned long)(*(--(c))))<< 8; \
164 case 1: l1|=((unsigned long)(*(--(c)))); \
168 #define l2c(l,c) (*((c)++)=(unsigned char)(((l) )&0xff), \
169 *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
170 *((c)++)=(unsigned char)(((l)>>16)&0xff), \
171 *((c)++)=(unsigned char)(((l)>>24)&0xff))
173 #define n2l(c,l) (l =((unsigned long)(*((c)++)))<<24, \
174 l|=((unsigned long)(*((c)++)))<<16, \
175 l|=((unsigned long)(*((c)++)))<< 8, \
176 l|=((unsigned long)(*((c)++))))
178 #define l2n(l,c) (*((c)++)=(unsigned char)(((l)>>24)&0xff), \
179 *((c)++)=(unsigned char)(((l)>>16)&0xff), \
180 *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
181 *((c)++)=(unsigned char)(((l) )&0xff))
183 #define l2n6(l,c) (*((c)++)=(unsigned char)(((l)>>40)&0xff), \
184 *((c)++)=(unsigned char)(((l)>>32)&0xff), \
185 *((c)++)=(unsigned char)(((l)>>24)&0xff), \
186 *((c)++)=(unsigned char)(((l)>>16)&0xff), \
187 *((c)++)=(unsigned char)(((l)>> 8)&0xff), \
188 *((c)++)=(unsigned char)(((l) )&0xff))
190 #define n2l6(c,l) (l =((BN_ULLONG)(*((c)++)))<<40, \
191 l|=((BN_ULLONG)(*((c)++)))<<32, \
192 l|=((BN_ULLONG)(*((c)++)))<<24, \
193 l|=((BN_ULLONG)(*((c)++)))<<16, \
194 l|=((BN_ULLONG)(*((c)++)))<< 8, \
195 l|=((BN_ULLONG)(*((c)++))))
198 #define l2cn(l1,l2,c,n) { \
201 case 8: *(--(c))=(unsigned char)(((l2)>>24)&0xff); \
202 case 7: *(--(c))=(unsigned char)(((l2)>>16)&0xff); \
203 case 6: *(--(c))=(unsigned char)(((l2)>> 8)&0xff); \
204 case 5: *(--(c))=(unsigned char)(((l2) )&0xff); \
205 case 4: *(--(c))=(unsigned char)(((l1)>>24)&0xff); \
206 case 3: *(--(c))=(unsigned char)(((l1)>>16)&0xff); \
207 case 2: *(--(c))=(unsigned char)(((l1)>> 8)&0xff); \
208 case 1: *(--(c))=(unsigned char)(((l1) )&0xff); \
212 #define n2s(c,s) ((s=(((unsigned int)(c[0]))<< 8)| \
213 (((unsigned int)(c[1])) )),c+=2)
214 #define s2n(s,c) ((c[0]=(unsigned char)(((s)>> 8)&0xff), \
215 c[1]=(unsigned char)(((s) )&0xff)),c+=2)
217 #define n2l3(c,l) ((l =(((unsigned long)(c[0]))<<16)| \
218 (((unsigned long)(c[1]))<< 8)| \
219 (((unsigned long)(c[2])) )),c+=3)
221 #define l2n3(l,c) ((c[0]=(unsigned char)(((l)>>16)&0xff), \
222 c[1]=(unsigned char)(((l)>> 8)&0xff), \
223 c[2]=(unsigned char)(((l) )&0xff)),c+=3)
227 #define SSL_DECRYPT 0
228 #define SSL_ENCRYPT 1
230 #define TWO_BYTE_BIT 0x80
231 #define SEC_ESC_BIT 0x40
232 #define TWO_BYTE_MASK 0x7fff
233 #define THREE_BYTE_MASK 0x3fff
235 #define INC32(a) ((a)=((a)+1)&0xffffffffL)
236 #define DEC32(a) ((a)=((a)-1)&0xffffffffL)
237 #define MAX_MAC_SIZE 20
252 #define SSL_MKEY_MASK 0x000000FFL
253 #define SSL_kRSA 0x00000001L
254 #define SSL_kDHr 0x00000002L
255 #define SSL_kDHd 0x00000004L
256 #define SSL_kFZA 0x00000008L
257 #define SSL_kEDH 0x00000010L
258 #define SSL_kKRB5 0x00000020L
259 #define SSL_kECDH 0x00000040L
260 #define SSL_kECDHE 0x00000080L
261 #define SSL_EDH (SSL_kEDH|(SSL_AUTH_MASK^SSL_aNULL))
263 #define SSL_AUTH_MASK 0x00007F00L
264 #define SSL_aRSA 0x00000100L
265 #define SSL_aDSS 0x00000200L
266 #define SSL_DSS SSL_aDSS
267 #define SSL_aFZA 0x00000400L
268 #define SSL_aNULL 0x00000800L
269 #define SSL_aDH 0x00001000L
270 #define SSL_aKRB5 0x00002000L
271 #define SSL_aECDSA 0x00004000L
273 #define SSL_NULL (SSL_eNULL)
274 #define SSL_ADH (SSL_kEDH|SSL_aNULL)
275 #define SSL_RSA (SSL_kRSA|SSL_aRSA)
276 #define SSL_DH (SSL_kDHr|SSL_kDHd|SSL_kEDH)
277 #define SSL_ECDH (SSL_kECDH|SSL_kECDHE)
278 #define SSL_FZA (SSL_aFZA|SSL_kFZA|SSL_eFZA)
279 #define SSL_KRB5 (SSL_kKRB5|SSL_aKRB5)
281 #define SSL_ENC_MASK 0x1C3F8000L
282 #define SSL_DES 0x00008000L
283 #define SSL_3DES 0x00010000L
284 #define SSL_RC4 0x00020000L
285 #define SSL_RC2 0x00040000L
286 #define SSL_IDEA 0x00080000L
287 #define SSL_eFZA 0x00100000L
288 #define SSL_eNULL 0x00200000L
289 #define SSL_AES 0x04000000L
290 #define SSL_CAMELLIA 0x08000000L
291 #define SSL_SEED 0x10000000L
293 #define SSL_MAC_MASK 0x00c00000L
294 #define SSL_MD5 0x00400000L
295 #define SSL_SHA1 0x00800000L
296 #define SSL_SHA (SSL_SHA1)
298 #define SSL_SSL_MASK 0x03000000L
299 #define SSL_SSLV2 0x01000000L
300 #define SSL_SSLV3 0x02000000L
301 #define SSL_TLSV1 SSL_SSLV3
320 #define SSL_EXP_MASK 0x00000003L
321 #define SSL_NOT_EXP 0x00000001L
322 #define SSL_EXPORT 0x00000002L
324 #define SSL_STRONG_MASK 0x000000fcL
325 #define SSL_STRONG_NONE 0x00000004L
326 #define SSL_EXP40 0x00000008L
327 #define SSL_MICRO (SSL_EXP40)
328 #define SSL_EXP56 0x00000010L
329 #define SSL_MINI (SSL_EXP56)
330 #define SSL_LOW 0x00000020L
331 #define SSL_MEDIUM 0x00000040L
332 #define SSL_HIGH 0x00000080L
349 #define SSL_IS_EXPORT(a) ((a)&SSL_EXPORT)
350 #define SSL_IS_EXPORT56(a) ((a)&SSL_EXP56)
351 #define SSL_IS_EXPORT40(a) ((a)&SSL_EXP40)
352 #define SSL_C_IS_EXPORT(c) SSL_IS_EXPORT((c)->algo_strength)
353 #define SSL_C_IS_EXPORT56(c) SSL_IS_EXPORT56((c)->algo_strength)
354 #define SSL_C_IS_EXPORT40(c) SSL_IS_EXPORT40((c)->algo_strength)
356 #define SSL_EXPORT_KEYLENGTH(a,s) (SSL_IS_EXPORT40(s) ? 5 : \
357 ((a)&SSL_ENC_MASK) == SSL_DES ? 8 : 7)
358 #define SSL_EXPORT_PKEYLENGTH(a) (SSL_IS_EXPORT40(a) ? 512 : 1024)
359 #define SSL_C_EXPORT_KEYLENGTH(c) SSL_EXPORT_KEYLENGTH((c)->algorithms, \
361 #define SSL_C_EXPORT_PKEYLENGTH(c) SSL_EXPORT_PKEYLENGTH((c)->algo_strength)
364 #define SSL_ALL 0xffffffffL
365 #define SSL_ALL_CIPHERS (SSL_MKEY_MASK|SSL_AUTH_MASK|SSL_ENC_MASK|\
367 #define SSL_ALL_STRENGTHS (SSL_EXP_MASK|SSL_STRONG_MASK)
370 #define SSL_PKEY_RSA_ENC 0
371 #define SSL_PKEY_RSA_SIGN 1
372 #define SSL_PKEY_DSA_SIGN 2
373 #define SSL_PKEY_DH_RSA 3
374 #define SSL_PKEY_DH_DSA 4
375 #define SSL_PKEY_ECC 5
376 #define SSL_PKEY_NUM 6
392 #ifndef OPENSSL_NO_EC
396 #define EXPLICIT_PRIME_CURVE_TYPE 1
397 #define EXPLICIT_CHAR2_CURVE_TYPE 2
398 #define NAMED_CURVE_TYPE 3
418 unsigned long export_mask;
419 #ifndef OPENSSL_NO_RSA
421 RSA *(*rsa_tmp_cb)(
SSL *ssl,
int is_export,
int keysize);
423 #ifndef OPENSSL_NO_DH
425 DH *(*dh_tmp_cb)(
SSL *ssl,
int is_export,
int keysize);
427 #ifndef OPENSSL_NO_ECDH
430 EC_KEY *(*ecdh_tmp_cb)(
SSL *ssl,
int is_export,
int keysize);
441 STACK_OF(
X509) *cert_chain;
451 #ifndef OPENSSL_NO_RSA
454 #ifndef OPENSSL_NO_DH
457 #ifndef OPENSSL_NO_ECDH
476 #define FP_ICC (int (*)(const void *,const void *))
477 #define ssl_put_cipher_by_char(ssl,ciph,ptr) \
478 ((ssl)->method->put_cipher_by_char((ciph),(ptr)))
479 #define ssl_get_cipher_by_char(ssl,ptr) \
480 ((ssl)->method->get_cipher_by_char(ptr))
487 int (*enc)(
SSL *, int);
488 int (*mac)(SSL *,
unsigned char *, int);
489 int (*setup_key_block)(SSL *);
490 int (*generate_master_secret)(SSL *,
unsigned char *,
unsigned char *, int);
491 int (*change_cipher_state)(SSL *, int);
492 int (*final_finish_mac)(SSL *,
EVP_MD_CTX *, EVP_MD_CTX *,
const char *, int,
unsigned char *);
493 int finish_mac_length;
494 int (*cert_verify_mac)(SSL *, EVP_MD_CTX *,
unsigned char *);
495 const char *client_finished_label;
496 int client_finished_label_len;
497 const char *server_finished_label;
498 int server_finished_label_len;
499 int (*alert_value)(int);
524 #define IMPLEMENT_tls1_meth_func(func_name, s_accept, s_connect, s_get_meth) \
525 SSL_METHOD *func_name(void) \
527 static SSL_METHOD func_name##_data= { \
539 ssl3_renegotiate_check, \
543 ssl3_dispatch_alert, \
546 ssl3_get_cipher_by_char, \
547 ssl3_put_cipher_by_char, \
552 tls1_default_timeout, \
554 ssl_undefined_void_function, \
555 ssl3_callback_ctrl, \
556 ssl3_ctx_callback_ctrl, \
558 return &func_name##_data; \
561 #define IMPLEMENT_ssl3_meth_func(func_name, s_accept, s_connect, s_get_meth) \
562 SSL_METHOD *func_name(void) \
564 static SSL_METHOD func_name##_data= { \
576 ssl3_renegotiate_check, \
580 ssl3_dispatch_alert, \
583 ssl3_get_cipher_by_char, \
584 ssl3_put_cipher_by_char, \
589 ssl3_default_timeout, \
591 ssl_undefined_void_function, \
592 ssl3_callback_ctrl, \
593 ssl3_ctx_callback_ctrl, \
595 return &func_name##_data; \
598 #define IMPLEMENT_ssl23_meth_func(func_name, s_accept, s_connect, s_get_meth) \
599 SSL_METHOD *func_name(void) \
601 static SSL_METHOD func_name##_data= { \
611 ssl_undefined_function, \
612 ssl_undefined_function, \
617 ssl3_dispatch_alert, \
620 ssl23_get_cipher_by_char, \
621 ssl23_put_cipher_by_char, \
622 ssl_undefined_const_function, \
626 ssl23_default_timeout, \
627 &ssl3_undef_enc_method, \
628 ssl_undefined_void_function, \
629 ssl3_callback_ctrl, \
630 ssl3_ctx_callback_ctrl, \
632 return &func_name##_data; \
635 #define IMPLEMENT_ssl2_meth_func(func_name, s_accept, s_connect, s_get_meth) \
636 SSL_METHOD *func_name(void) \
638 static SSL_METHOD func_name##_data= { \
657 ssl2_get_cipher_by_char, \
658 ssl2_put_cipher_by_char, \
663 ssl2_default_timeout, \
664 &ssl3_undef_enc_method, \
665 ssl_undefined_void_function, \
666 ssl2_callback_ctrl, \
667 ssl2_ctx_callback_ctrl, \
669 return &func_name##_data; \
672 #define IMPLEMENT_dtls1_meth_func(func_name, s_accept, s_connect, s_get_meth) \
673 SSL_METHOD *func_name(void) \
675 static SSL_METHOD func_name##_data= { \
687 ssl3_renegotiate_check, \
690 dtls1_write_app_data_bytes, \
691 dtls1_dispatch_alert, \
694 ssl3_get_cipher_by_char, \
695 ssl3_put_cipher_by_char, \
700 dtls1_default_timeout, \
702 ssl_undefined_void_function, \
703 ssl3_callback_ctrl, \
704 ssl3_ctx_callback_ctrl, \
706 return &func_name##_data; \
709 void ssl_clear_cipher_ctx(
SSL *s);
710 int ssl_clear_bad_session(
SSL *s);
711 CERT *ssl_cert_new(
void);
713 int ssl_cert_inst(
CERT **o);
714 void ssl_cert_free(
CERT *c);
717 int ssl_set_peer_cert_type(
SESS_CERT *c,
int type);
718 int ssl_get_new_session(
SSL *s,
int session);
719 int ssl_get_prev_session(
SSL *s,
unsigned char *session,
int len,
const unsigned char *limit);
721 int ssl_cipher_ptr_id_cmp(
const SSL_CIPHER *
const *ap,
726 int (*put_cb)(
const SSL_CIPHER *,
unsigned char *));
730 const char *rule_str);
731 void ssl_update_cache(
SSL *s,
int mode);
735 int ssl_undefined_function(
SSL *s);
736 int ssl_undefined_void_function(
void);
737 int ssl_undefined_const_function(
const SSL *s);
738 X509 *ssl_get_server_send_cert(
SSL *);
743 int ssl_verify_alarm_type(
long type);
744 void ssl_load_ciphers(
void);
746 int ssl2_enc_init(
SSL *s,
int client);
747 int ssl2_generate_key_material(
SSL *s);
748 void ssl2_enc(
SSL *s,
int send_data);
749 void ssl2_mac(
SSL *s,
unsigned char *mac,
int send_data);
750 SSL_CIPHER *ssl2_get_cipher_by_char(
const unsigned char *p);
751 int ssl2_put_cipher_by_char(
const SSL_CIPHER *c,
unsigned char *p);
752 int ssl2_part_read(
SSL *s,
unsigned long f,
int i);
753 int ssl2_do_write(
SSL *s);
754 int ssl2_set_certificate(
SSL *s,
int type,
int len,
const unsigned char *data);
755 void ssl2_return_error(
SSL *s,
int reason);
756 void ssl2_write_error(
SSL *s);
757 int ssl2_num_ciphers(
void);
759 int ssl2_new(
SSL *s);
760 void ssl2_free(
SSL *s);
761 int ssl2_accept(
SSL *s);
762 int ssl2_connect(
SSL *s);
763 int ssl2_read(
SSL *s,
void *buf,
int len);
764 int ssl2_peek(
SSL *s,
void *buf,
int len);
765 int ssl2_write(
SSL *s,
const void *buf,
int len);
766 int ssl2_shutdown(
SSL *s);
767 void ssl2_clear(
SSL *s);
768 long ssl2_ctrl(
SSL *s,
int cmd,
long larg,
void *parg);
769 long ssl2_ctx_ctrl(
SSL_CTX *s,
int cmd,
long larg,
void *parg);
770 long ssl2_callback_ctrl(
SSL *s,
int cmd,
void (*fp)(
void));
771 long ssl2_ctx_callback_ctrl(
SSL_CTX *s,
int cmd,
void (*fp)(
void));
772 int ssl2_pending(
const SSL *s);
773 long ssl2_default_timeout(
void );
775 SSL_CIPHER *ssl3_get_cipher_by_char(
const unsigned char *p);
776 int ssl3_put_cipher_by_char(
const SSL_CIPHER *c,
unsigned char *p);
777 void ssl3_init_finished_mac(
SSL *s);
778 int ssl3_send_server_certificate(
SSL *s);
779 int ssl3_send_newsession_ticket(
SSL *s);
780 int ssl3_get_finished(
SSL *s,
int state_a,
int state_b);
781 int ssl3_setup_key_block(
SSL *s);
782 int ssl3_send_change_cipher_spec(
SSL *s,
int state_a,
int state_b);
783 int ssl3_change_cipher_state(
SSL *s,
int which);
784 void ssl3_cleanup_key_block(
SSL *s);
785 int ssl3_do_write(
SSL *s,
int type);
786 void ssl3_send_alert(
SSL *s,
int level,
int desc);
787 int ssl3_generate_master_secret(
SSL *s,
unsigned char *out,
788 unsigned char *p,
int len);
789 int ssl3_get_req_cert_type(
SSL *s,
unsigned char *p);
790 long ssl3_get_message(
SSL *s,
int st1,
int stn,
int mt,
long max,
int *ok);
791 int ssl3_send_finished(
SSL *s,
int a,
int b,
const char *sender,
int slen);
792 int ssl3_num_ciphers(
void);
794 int ssl3_renegotiate(
SSL *ssl);
795 int ssl3_renegotiate_check(
SSL *ssl);
796 int ssl3_dispatch_alert(
SSL *s);
797 int ssl3_read_bytes(
SSL *s,
int type,
unsigned char *buf,
int len,
int peek);
798 int ssl3_write_bytes(
SSL *s,
int type,
const void *buf,
int len);
800 const char *sender,
int slen,
unsigned char *p);
801 int ssl3_cert_verify_mac(
SSL *s,
EVP_MD_CTX *in,
unsigned char *p);
802 void ssl3_finish_mac(
SSL *s,
const unsigned char *buf,
int len);
803 int ssl3_enc(
SSL *s,
int send_data);
804 int ssl3_mac(
SSL *ssl,
unsigned char *md,
int send_data);
805 unsigned long ssl3_output_cert_chain(
SSL *s,
X509 *x);
808 int ssl3_setup_buffers(
SSL *s);
809 int ssl3_new(
SSL *s);
810 void ssl3_free(
SSL *s);
811 int ssl3_accept(
SSL *s);
812 int ssl3_connect(
SSL *s);
813 int ssl3_read(
SSL *s,
void *buf,
int len);
814 int ssl3_peek(
SSL *s,
void *buf,
int len);
815 int ssl3_write(
SSL *s,
const void *buf,
int len);
816 int ssl3_shutdown(
SSL *s);
817 void ssl3_clear(
SSL *s);
818 long ssl3_ctrl(
SSL *s,
int cmd,
long larg,
void *parg);
819 long ssl3_ctx_ctrl(
SSL_CTX *s,
int cmd,
long larg,
void *parg);
820 long ssl3_callback_ctrl(
SSL *s,
int cmd,
void (*fp)(
void));
821 long ssl3_ctx_callback_ctrl(
SSL_CTX *s,
int cmd,
void (*fp)(
void));
822 int ssl3_pending(
const SSL *s);
824 void ssl3_record_sequence_update(
unsigned char *seq);
825 int ssl3_do_change_cipher_spec(
SSL *ssl);
826 long ssl3_default_timeout(
void );
828 int ssl23_num_ciphers(
void );
830 int ssl23_read(
SSL *s,
void *buf,
int len);
831 int ssl23_peek(
SSL *s,
void *buf,
int len);
832 int ssl23_write(
SSL *s,
const void *buf,
int len);
833 int ssl23_put_cipher_by_char(
const SSL_CIPHER *c,
unsigned char *p);
834 SSL_CIPHER *ssl23_get_cipher_by_char(
const unsigned char *p);
835 long ssl23_default_timeout(
void );
837 long tls1_default_timeout(
void);
838 int dtls1_do_write(
SSL *s,
int type);
839 int ssl3_read_n(
SSL *s,
int n,
int max,
int extend);
840 int dtls1_read_bytes(
SSL *s,
int type,
unsigned char *buf,
int len,
int peek);
841 int ssl3_do_compress(
SSL *ssl);
842 int ssl3_do_uncompress(
SSL *ssl);
843 int ssl3_write_pending(
SSL *s,
int type,
const unsigned char *buf,
845 unsigned char *dtls1_set_message_header(
SSL *s,
846 unsigned char *p,
unsigned char mt,
unsigned long len,
847 unsigned long frag_off,
unsigned long frag_len);
849 int dtls1_write_app_data_bytes(
SSL *s,
int type,
const void *buf,
int len);
850 int dtls1_write_bytes(
SSL *s,
int type,
const void *buf,
int len);
852 int dtls1_send_change_cipher_spec(
SSL *s,
int a,
int b);
853 int dtls1_send_finished(
SSL *s,
int a,
int b,
const char *sender,
int slen);
854 unsigned long dtls1_output_cert_chain(
SSL *s,
X509 *x);
855 int dtls1_read_failed(
SSL *s,
int code);
856 int dtls1_buffer_message(
SSL *s,
int ccs);
857 int dtls1_retransmit_message(
SSL *s,
unsigned short seq,
858 unsigned long frag_off,
int *found);
859 void dtls1_clear_record_buffer(
SSL *s);
860 void dtls1_get_message_header(
unsigned char *data,
struct hm_header_st *msg_hdr);
861 void dtls1_get_ccs_header(
unsigned char *data,
struct ccs_header_st *ccs_hdr);
862 void dtls1_reset_seq_numbers(
SSL *s,
int rw);
863 long dtls1_default_timeout(
void);
869 int ssl3_client_hello(
SSL *s);
870 int ssl3_get_server_hello(
SSL *s);
871 int ssl3_get_certificate_request(
SSL *s);
872 int ssl3_get_new_session_ticket(
SSL *s);
873 int ssl3_get_server_done(
SSL *s);
874 int ssl3_send_client_verify(
SSL *s);
875 int ssl3_send_client_certificate(
SSL *s);
876 int ssl3_send_client_key_exchange(
SSL *s);
877 int ssl3_get_key_exchange(
SSL *s);
878 int ssl3_get_server_certificate(
SSL *s);
879 int ssl3_check_cert_and_algorithm(
SSL *s);
881 int dtls1_client_hello(
SSL *s);
882 int dtls1_send_client_certificate(
SSL *s);
883 int dtls1_send_client_key_exchange(
SSL *s);
884 int dtls1_send_client_verify(
SSL *s);
887 int ssl3_get_client_hello(
SSL *s);
888 int ssl3_send_server_hello(
SSL *s);
889 int ssl3_send_hello_request(
SSL *s);
890 int ssl3_send_server_key_exchange(
SSL *s);
891 int ssl3_send_certificate_request(
SSL *s);
892 int ssl3_send_server_done(
SSL *s);
893 int ssl3_check_client_hello(
SSL *s);
894 int ssl3_get_client_certificate(
SSL *s);
895 int ssl3_get_client_key_exchange(
SSL *s);
896 int ssl3_get_cert_verify(
SSL *s);
898 int dtls1_send_hello_request(
SSL *s);
899 int dtls1_send_server_hello(
SSL *s);
900 int dtls1_send_server_certificate(
SSL *s);
901 int dtls1_send_server_key_exchange(
SSL *s);
902 int dtls1_send_certificate_request(
SSL *s);
903 int dtls1_send_server_done(
SSL *s);
907 int ssl23_accept(
SSL *s);
908 int ssl23_connect(
SSL *s);
909 int ssl23_read_bytes(
SSL *s,
int n);
910 int ssl23_write_bytes(
SSL *s);
912 int tls1_new(
SSL *s);
913 void tls1_free(
SSL *s);
914 void tls1_clear(
SSL *s);
915 long tls1_ctrl(
SSL *s,
int cmd,
long larg,
void *parg);
916 long tls1_callback_ctrl(
SSL *s,
int cmd,
void (*fp)(
void));
919 int dtls1_new(
SSL *s);
920 int dtls1_accept(
SSL *s);
921 int dtls1_connect(
SSL *s);
922 void dtls1_free(
SSL *s);
923 void dtls1_clear(
SSL *s);
924 long dtls1_ctrl(
SSL *s,
int cmd,
long larg,
void *parg);
927 long dtls1_get_message(
SSL *s,
int st1,
int stn,
int mt,
long max,
int *ok);
928 int dtls1_get_record(
SSL *s);
929 int do_dtls1_write(
SSL *s,
int type,
const unsigned char *buf,
930 unsigned int len,
int create_empty_fragement);
931 int dtls1_dispatch_alert(
SSL *s);
932 int dtls1_enc(
SSL *s,
int snd);
934 int ssl_init_wbio_buffer(
SSL *s,
int push);
935 void ssl_free_wbio_buffer(
SSL *s);
937 int tls1_change_cipher_state(
SSL *s,
int which);
938 int tls1_setup_key_block(
SSL *s);
939 int tls1_enc(
SSL *s,
int snd);
941 const char *str,
int slen,
unsigned char *p);
942 int tls1_cert_verify_mac(
SSL *s,
EVP_MD_CTX *in,
unsigned char *p);
943 int tls1_mac(
SSL *ssl,
unsigned char *md,
int snd);
944 int tls1_generate_master_secret(
SSL *s,
unsigned char *out,
945 unsigned char *p,
int len);
946 int tls1_alert_code(
int code);
947 int ssl3_alert_code(
int code);
954 #ifndef OPENSSL_NO_TLSEXT
955 unsigned char *ssl_add_clienthello_tlsext(
SSL *s,
unsigned char *p,
unsigned char *limit);
956 unsigned char *ssl_add_serverhello_tlsext(
SSL *s,
unsigned char *p,
unsigned char *limit);
957 int ssl_parse_clienthello_tlsext(
SSL *s,
unsigned char **data,
unsigned char *d,
int n,
int *al);
958 int ssl_parse_serverhello_tlsext(
SSL *s,
unsigned char **data,
unsigned char *d,
int n,
int *al);
959 int ssl_prepare_clienthello_tlsext(
SSL *s);
960 int ssl_prepare_serverhello_tlsext(
SSL *s);
961 int ssl_check_clienthello_tlsext(
SSL *s);
962 int ssl_check_serverhello_tlsext(
SSL *s);
963 #ifdef OPENSSL_NO_SHA256
964 #define tlsext_tick_md EVP_sha1
966 #define tlsext_tick_md EVP_sha256
968 int tls1_process_ticket(
SSL *s,
unsigned char *session_id,
int len,
STACK_OF(X509_NAME)
Definition: ssl_cert.c:554
Definition: ssl_locl.h:485
Definition: ssl_locl.h:439
Definition: ssl_locl.h:407
Definition: ssl_locl.h:401
Definition: ssl_locl.h:503