X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=ssl%2Fssl_locl.h;h=3f87da7d539bdd625a6cf00f2a4b274525566d36;hb=ae4af7a067531245c20f032afe61a68d60d39d11;hp=3bd50dfa4c8001b02287447fbce36e44c0218b63;hpb=ecf4d660902dcef6e0afc51d52926f00d409ee6b;p=oweals%2Fopenssl.git diff --git a/ssl/ssl_locl.h b/ssl/ssl_locl.h index 3bd50dfa4c..3f87da7d53 100644 --- a/ssl/ssl_locl.h +++ b/ssl/ssl_locl.h @@ -534,11 +534,28 @@ typedef struct cert_pkey_st typedef struct { unsigned short ext_type; + /* Per-connection flags relating to this extension type: not used + * if part of an SSL_CTX structure. + */ + unsigned short ext_flags; custom_ext_add_cb add_cb; + custom_ext_free_cb free_cb; + void *add_arg; custom_ext_parse_cb parse_cb; - void *arg; + void *parse_arg; } custom_ext_method; +/* ext_flags values */ + +/* Indicates an extension has been received. + * Used to check for unsolicited or duplicate extensions. + */ +#define SSL_EXT_FLAG_RECEIVED 0x1 +/* Indicates an extension has been sent: used to + * enable sending of corresponding ServerHello extension. + */ +#define SSL_EXT_FLAG_SENT 0x2 + typedef struct { custom_ext_method *meths; size_t meths_count; @@ -1410,10 +1427,12 @@ int srp_verify_server_param(SSL *s, int *al); /* t1_ext.c */ +void custom_ext_init(custom_ext_methods *meths); + int custom_ext_parse(SSL *s, int server, - unsigned short ext_type, + unsigned int ext_type, const unsigned char *ext_data, - unsigned short ext_size, + size_t ext_size, int *al); int custom_ext_add(SSL *s, int server, unsigned char **pret,