summaryrefslogtreecommitdiff
path: root/src/lib/libssl/ssl.h
diff options
context:
space:
mode:
authorjsing <>2017-01-22 03:50:45 +0000
committerjsing <>2017-01-22 03:50:45 +0000
commitda11794e3abdcddc9079bb28bb8e44547030b01f (patch)
tree1305cf6ae8a5e82d3473b44db775f816b47c9554 /src/lib/libssl/ssl.h
parentbcd4033a22e1bf44686805b7d0fd9c2560c44eb4 (diff)
downloadopenbsd-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.h16
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. */
355typedef struct ssl_st *ssl_crock_st; 355typedef struct ssl_st *ssl_crock_st;
356
356typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT; 357typedef struct tls_session_ticket_ext_st TLS_SESSION_TICKET_EXT;
357typedef struct ssl_method_st SSL_METHOD; 358typedef struct ssl_method_st SSL_METHOD;
358typedef struct ssl_cipher_st SSL_CIPHER; 359typedef 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 */
459struct ssl_session_internal_st;
460
458struct ssl_session_st { 461struct 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
695struct ssl_ctx_internal_st;
696
690struct ssl_ctx_st { 697struct 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
1009struct ssl_internal_st;
1000 1010
1001struct ssl_st { 1011struct 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