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 ecf4d66090)

Conflicts:

	ssl/ssl_lib.c
	ssl/ssl_locl.h
	ssl/t1_lib.c
This commit is contained in:
Dr. Stephen Henson
2014-08-10 12:08:08 +01:00
parent da67a0ae34
commit 0a4fe37fc6
8 changed files with 283 additions and 209 deletions

View File

@@ -405,21 +405,21 @@ typedef int (*tls_session_secret_cb_fn)(SSL *s, void *secret, int *secret_len, S
* "al" is a TLS "AlertDescription" from 0-255 which WILL be sent as a
* fatal TLS alert, if the callback returns zero.
*/
typedef int (*custom_cli_ext_first_cb_fn)(SSL *s, unsigned short ext_type,
typedef int (*custom_ext_add_cb)(SSL *s, unsigned short ext_type,
const unsigned char **out,
unsigned short *outlen, int *al, void *arg);
typedef int (*custom_cli_ext_second_cb_fn)(SSL *s, unsigned short ext_type,
unsigned short *outlen, int *al,
void *arg);
typedef int (*custom_ext_parse_cb)(SSL *s, unsigned short ext_type,
const unsigned char *in,
unsigned short inlen, int *al,
void *arg);
typedef int (*custom_srv_ext_first_cb_fn)(SSL *s, unsigned short ext_type,
const unsigned char *in,
unsigned short inlen, int *al,
void *arg);
typedef int (*custom_srv_ext_second_cb_fn)(SSL *s, unsigned short ext_type,
const unsigned char **out,
unsigned short *outlen, int *al, void *arg);
typedef custom_ext_add_cb custom_cli_ext_first_cb_fn;
typedef custom_ext_parse_cb custom_cli_ext_second_cb_fn;
typedef custom_ext_add_cb custom_srv_ext_second_cb_fn;
typedef custom_ext_parse_cb custom_srv_ext_first_cb_fn;
#endif