summaryrefslogtreecommitdiffstats
path: root/ssl/ssl_locl.h
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2014-08-10 12:08:08 +0100
committerDr. Stephen Henson <steve@openssl.org>2014-08-28 18:09:05 +0100
commit0a4fe37fc6248e5efadcda34015eff122e01b1db (patch)
treeecc261ba3f2b21e6de4fb984535403c6668c0a3f /ssl/ssl_locl.h
parentda67a0ae3462f6c6447ed841a9ec514077244b02 (diff)
Custom extension revision.
Use the same structure for client and server custom extensions. Add utility functions in new file t1_ext.c. Use new utility functions to handle custom server and client extensions and remove a lot of code duplication. Reviewed-by: Emilia Käsper <emilia@openssl.org> (cherry picked from commit ecf4d660902dcef6e0afc51d52926f00d409ee6b) Conflicts: ssl/ssl_lib.c ssl/ssl_locl.h ssl/t1_lib.c
Diffstat (limited to 'ssl/ssl_locl.h')
-rw-r--r--ssl/ssl_locl.h37
1 files changed, 24 insertions, 13 deletions
diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h
index 655bca1231..f9a67b3832 100644
--- a/ssl/ssl_locl.h
+++ b/ssl/ssl_locl.h
@@ -528,17 +528,15 @@ typedef struct cert_pkey_st
typedef struct {
unsigned short ext_type;
- custom_cli_ext_first_cb_fn fn1;
- custom_cli_ext_second_cb_fn fn2;
+ custom_ext_add_cb add_cb;
+ custom_ext_parse_cb parse_cb;
void *arg;
-} custom_cli_ext_record;
+} custom_ext_method;
typedef struct {
- unsigned short ext_type;
- custom_srv_ext_first_cb_fn fn1;
- custom_srv_ext_second_cb_fn fn2;
- void *arg;
-} custom_srv_ext_record;
+ custom_ext_method *meths;
+ size_t meths_count;
+} custom_ext_methods;
typedef struct cert_st
{
@@ -635,11 +633,9 @@ typedef struct cert_st
unsigned char *ciphers_raw;
size_t ciphers_rawlen;
- /* Arrays containing the callbacks for custom TLS Extensions. */
- custom_cli_ext_record *custom_cli_ext_records;
- size_t custom_cli_ext_records_count;
- custom_srv_ext_record *custom_srv_ext_records;
- size_t custom_srv_ext_records_count;
+ /* Custom extension methods for server and client */
+ custom_ext_methods cli_ext;
+ custom_ext_methods srv_ext;
int references; /* >1 only if SSL_copy_session_id is used */
} CERT;
@@ -1382,6 +1378,21 @@ void tls_fips_digest_extra(
int srp_verify_server_param(SSL *s, int *al);
+/* t1_ext.c */
+
+int custom_ext_parse(SSL *s, int server,
+ unsigned short ext_type,
+ const unsigned char *ext_data,
+ unsigned short ext_size,
+ int *al);
+int custom_ext_add(SSL *s, int server,
+ unsigned char **pret,
+ unsigned char *limit,
+ int *al);
+
+int custom_exts_copy(custom_ext_methods *dst, const custom_ext_methods *src);
+void custom_exts_free(custom_ext_methods *exts);
+
#else
#define ssl_init_wbio_buffer SSL_test_functions()->p_ssl_init_wbio_buffer