summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl_locl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/ssl_locl.h')
-rw-r--r--src/lib/libssl/ssl_locl.h127
1 files changed, 126 insertions, 1 deletions
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h
index 7ff3e0713d..f102c2fc95 100644
--- a/src/lib/libssl/ssl_locl.h
+++ b/src/lib/libssl/ssl_locl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_locl.h,v 1.358 2021/08/30 19:25:43 jsing Exp $ */ 1/* $OpenBSD: ssl_locl.h,v 1.359 2021/10/15 16:48:47 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
@@ -361,6 +361,11 @@ __BEGIN_HIDDEN_DECLS
361#define EXPLICIT_CHAR2_CURVE_TYPE 2 361#define EXPLICIT_CHAR2_CURVE_TYPE 2
362#define NAMED_CURVE_TYPE 3 362#define NAMED_CURVE_TYPE 3
363 363
364struct ssl_comp_st {
365 int id;
366 const char *name;
367};
368
364struct ssl_cipher_st { 369struct ssl_cipher_st {
365 int valid; 370 int valid;
366 const char *name; /* text name */ 371 const char *name; /* text name */
@@ -611,6 +616,14 @@ typedef struct ssl_handshake_st {
611 SSL_HANDSHAKE_TLS13 tls13; 616 SSL_HANDSHAKE_TLS13 tls13;
612} SSL_HANDSHAKE; 617} SSL_HANDSHAKE;
613 618
619typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT;
620
621/* TLS Session Ticket extension struct. */
622struct tls_session_ticket_ext_st {
623 unsigned short length;
624 void *data;
625};
626
614struct tls12_key_block; 627struct tls12_key_block;
615 628
616struct tls12_key_block *tls12_key_block_new(void); 629struct tls12_key_block *tls12_key_block_new(void);
@@ -832,6 +845,44 @@ typedef struct ssl_ctx_internal_st {
832 uint16_t *tlsext_supportedgroups; /* our list */ 845 uint16_t *tlsext_supportedgroups; /* our list */
833} SSL_CTX_INTERNAL; 846} SSL_CTX_INTERNAL;
834 847
848struct ssl_ctx_st {
849 const SSL_METHOD *method;
850
851 STACK_OF(SSL_CIPHER) *cipher_list;
852
853 struct x509_store_st /* X509_STORE */ *cert_store;
854
855 /* If timeout is not 0, it is the default timeout value set
856 * when SSL_new() is called. This has been put in to make
857 * life easier to set things up */
858 long session_timeout;
859
860 int references;
861
862 /* Default values to use in SSL structures follow (these are copied by SSL_new) */
863
864 STACK_OF(X509) *extra_certs;
865
866 int verify_mode;
867 unsigned int sid_ctx_length;
868 unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH];
869
870 X509_VERIFY_PARAM *param;
871
872 /*
873 * XXX
874 * default_passwd_cb used by python and openvpn, need to keep it until we
875 * add an accessor
876 */
877 /* Default password callback. */
878 pem_password_cb *default_passwd_callback;
879
880 /* Default password callback user data. */
881 void *default_passwd_callback_userdata;
882
883 struct ssl_ctx_internal_st *internal;
884};
885
835typedef struct ssl_internal_st { 886typedef struct ssl_internal_st {
836 struct tls13_ctx *tls13; 887 struct tls13_ctx *tls13;
837 888
@@ -973,6 +1024,80 @@ typedef struct ssl_internal_st {
973 int empty_record_count; 1024 int empty_record_count;
974} SSL_INTERNAL; 1025} SSL_INTERNAL;
975 1026
1027struct ssl_st {
1028 /* protocol version
1029 * (one of SSL2_VERSION, SSL3_VERSION, TLS1_VERSION, DTLS1_VERSION)
1030 */
1031 int version;
1032
1033 const SSL_METHOD *method; /* SSLv3 */
1034
1035 /* There are 2 BIO's even though they are normally both the
1036 * same. This is so data can be read and written to different
1037 * handlers */
1038
1039 BIO *rbio; /* used by SSL_read */
1040 BIO *wbio; /* used by SSL_write */
1041 BIO *bbio; /* used during session-id reuse to concatenate
1042 * messages */
1043 int server; /* are we the server side? - mostly used by SSL_clear*/
1044
1045 struct ssl3_state_st *s3; /* SSLv3 variables */
1046 struct dtls1_state_st *d1; /* DTLSv1 variables */
1047
1048 X509_VERIFY_PARAM *param;
1049
1050 /* crypto */
1051 STACK_OF(SSL_CIPHER) *cipher_list;
1052
1053 /* This is used to hold the server certificate used */
1054 struct cert_st /* CERT */ *cert;
1055
1056 /* the session_id_context is used to ensure sessions are only reused
1057 * in the appropriate context */
1058 unsigned int sid_ctx_length;
1059 unsigned char sid_ctx[SSL_MAX_SID_CTX_LENGTH];
1060
1061 /* This can also be in the session once a session is established */
1062 SSL_SESSION *session;
1063
1064 /* Used in SSL2 and SSL3 */
1065 int verify_mode; /* 0 don't care about verify failure.
1066 * 1 fail if verify fails */
1067 int error; /* error bytes to be written */
1068 int error_code; /* actual code */
1069
1070 SSL_CTX *ctx;
1071
1072 long verify_result;
1073
1074 int references;
1075
1076 int client_version; /* what was passed, used for
1077 * SSLv3/TLS rollback check */
1078
1079 unsigned int max_send_fragment;
1080
1081 char *tlsext_hostname;
1082
1083 /* certificate status request info */
1084 /* Status type or -1 if no status type */
1085 int tlsext_status_type;
1086
1087 SSL_CTX * initial_ctx; /* initial ctx, used to store sessions */
1088#define session_ctx initial_ctx
1089
1090 /*
1091 * XXX really should be internal, but is
1092 * touched unnaturally by wpa-supplicant
1093 * and freeradius and other perversions
1094 */
1095 EVP_CIPHER_CTX *enc_read_ctx; /* cryptographic state */
1096 EVP_MD_CTX *read_hash; /* used for mac generation */
1097
1098 struct ssl_internal_st *internal;
1099};
1100
976typedef struct ssl3_record_internal_st { 1101typedef struct ssl3_record_internal_st {
977 int type; /* type of record */ 1102 int type; /* type of record */
978 unsigned int length; /* How many bytes available */ 1103 unsigned int length; /* How many bytes available */