diff options
author | jsing <> | 2017-01-22 03:50:45 +0000 |
---|---|---|
committer | jsing <> | 2017-01-22 03:50:45 +0000 |
commit | da11794e3abdcddc9079bb28bb8e44547030b01f (patch) | |
tree | 1305cf6ae8a5e82d3473b44db775f816b47c9554 /src/lib/libssl/ssl.h | |
parent | bcd4033a22e1bf44686805b7d0fd9c2560c44eb4 (diff) | |
download | openbsd-da11794e3abdcddc9079bb28bb8e44547030b01f.tar.gz openbsd-da11794e3abdcddc9079bb28bb8e44547030b01f.tar.bz2 openbsd-da11794e3abdcddc9079bb28bb8e44547030b01f.zip |
Convert publically visible structs to translucent structs.
This change adds an internal opaque struct for each of the significant
publically visible structs. The opaque struct is then allocated and
attached to the publically visible struct when the appropriate *_new()
function is called, then cleared and freed as necessary.
This will allow for changes to be made to the internals of libssl, without
requiring a major bump each time the publically visible structs are
modified.
ok beck@
Diffstat (limited to 'src/lib/libssl/ssl.h')
-rw-r--r-- | src/lib/libssl/ssl.h | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/lib/libssl/ssl.h b/src/lib/libssl/ssl.h index 37844bdeaa..e8ad9fb470 100644 --- a/src/lib/libssl/ssl.h +++ b/src/lib/libssl/ssl.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl.h,v 1.102 2016/12/30 17:20:51 jsing Exp $ */ | 1 | /* $OpenBSD: ssl.h,v 1.103 2017/01/22 03:50:45 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 | * |
@@ -353,6 +353,7 @@ extern "C" { | |||
353 | * 'struct ssl_st *' function parameters used to prototype callbacks | 353 | * 'struct ssl_st *' function parameters used to prototype callbacks |
354 | * in SSL_CTX. */ | 354 | * in SSL_CTX. */ |
355 | typedef struct ssl_st *ssl_crock_st; | 355 | typedef struct ssl_st *ssl_crock_st; |
356 | |||
356 | typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; | 357 | typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; |
357 | typedef struct ssl_method_st SSL_METHOD; | 358 | typedef struct ssl_method_st SSL_METHOD; |
358 | typedef struct ssl_cipher_st SSL_CIPHER; | 359 | typedef struct ssl_cipher_st SSL_CIPHER; |
@@ -455,6 +456,8 @@ struct ssl_method_st { | |||
455 | * Look in ssl/ssl_asn1.c for more details | 456 | * Look in ssl/ssl_asn1.c for more details |
456 | * I'm using EXPLICIT tags so I can read the damn things using asn1parse :-). | 457 | * I'm using EXPLICIT tags so I can read the damn things using asn1parse :-). |
457 | */ | 458 | */ |
459 | struct ssl_session_internal_st; | ||
460 | |||
458 | struct ssl_session_st { | 461 | struct ssl_session_st { |
459 | int ssl_version; /* what ssl version session info is | 462 | int ssl_version; /* what ssl version session info is |
460 | * being kept in here? */ | 463 | * being kept in here? */ |
@@ -513,6 +516,8 @@ struct ssl_session_st { | |||
513 | unsigned char *tlsext_tick; /* Session ticket */ | 516 | unsigned char *tlsext_tick; /* Session ticket */ |
514 | size_t tlsext_ticklen; /* Session ticket length */ | 517 | size_t tlsext_ticklen; /* Session ticket length */ |
515 | long tlsext_tick_lifetime_hint; /* Session lifetime hint in seconds */ | 518 | long tlsext_tick_lifetime_hint; /* Session lifetime hint in seconds */ |
519 | |||
520 | struct ssl_session_internal_st *internal; | ||
516 | }; | 521 | }; |
517 | 522 | ||
518 | #endif | 523 | #endif |
@@ -687,6 +692,8 @@ struct lhash_st_SSL_SESSION { | |||
687 | int dummy; | 692 | int dummy; |
688 | }; | 693 | }; |
689 | 694 | ||
695 | struct ssl_ctx_internal_st; | ||
696 | |||
690 | struct ssl_ctx_st { | 697 | struct ssl_ctx_st { |
691 | const SSL_METHOD *method; | 698 | const SSL_METHOD *method; |
692 | 699 | ||
@@ -885,6 +892,8 @@ struct ssl_ctx_st { | |||
885 | 892 | ||
886 | /* SRTP profiles we are willing to do from RFC 5764 */ | 893 | /* SRTP profiles we are willing to do from RFC 5764 */ |
887 | STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; | 894 | STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; |
895 | |||
896 | struct ssl_ctx_internal_st *internal; | ||
888 | }; | 897 | }; |
889 | 898 | ||
890 | #endif | 899 | #endif |
@@ -997,6 +1006,7 @@ void SSL_get0_alpn_selected(const SSL *ssl, const unsigned char **data, | |||
997 | #define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 | 1006 | #define SSL_MAC_FLAG_WRITE_MAC_STREAM 2 |
998 | 1007 | ||
999 | #ifndef OPENSSL_NO_SSL_INTERN | 1008 | #ifndef OPENSSL_NO_SSL_INTERN |
1009 | struct ssl_internal_st; | ||
1000 | 1010 | ||
1001 | struct ssl_st { | 1011 | struct ssl_st { |
1002 | /* protocol version | 1012 | /* protocol version |
@@ -1192,6 +1202,7 @@ struct ssl_st { | |||
1192 | void *tls_session_secret_cb_arg; | 1202 | void *tls_session_secret_cb_arg; |
1193 | 1203 | ||
1194 | SSL_CTX * initial_ctx; /* initial ctx, used to store sessions */ | 1204 | SSL_CTX * initial_ctx; /* initial ctx, used to store sessions */ |
1205 | #define session_ctx initial_ctx | ||
1195 | 1206 | ||
1196 | /* Next protocol negotiation. For the client, this is the protocol that | 1207 | /* Next protocol negotiation. For the client, this is the protocol that |
1197 | * we sent in NextProtocol and is set when handling ServerHello | 1208 | * we sent in NextProtocol and is set when handling ServerHello |
@@ -1203,8 +1214,6 @@ struct ssl_st { | |||
1203 | unsigned char *next_proto_negotiated; | 1214 | unsigned char *next_proto_negotiated; |
1204 | unsigned char next_proto_negotiated_len; | 1215 | unsigned char next_proto_negotiated_len; |
1205 | 1216 | ||
1206 | #define session_ctx initial_ctx | ||
1207 | |||
1208 | STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; /* What we'll do */ | 1217 | STACK_OF(SRTP_PROTECTION_PROFILE) *srtp_profiles; /* What we'll do */ |
1209 | SRTP_PROTECTION_PROFILE *srtp_profile; /* What's been chosen */ | 1218 | SRTP_PROTECTION_PROFILE *srtp_profile; /* What's been chosen */ |
1210 | 1219 | ||
@@ -1224,6 +1233,7 @@ struct ssl_st { | |||
1224 | * 2 if we are a server and are inside a handshake | 1233 | * 2 if we are a server and are inside a handshake |
1225 | * (i.e. not just sending a HelloRequest) */ | 1234 | * (i.e. not just sending a HelloRequest) */ |
1226 | 1235 | ||
1236 | struct ssl_internal_st *internal; | ||
1227 | }; | 1237 | }; |
1228 | 1238 | ||
1229 | #endif | 1239 | #endif |