summaryrefslogtreecommitdiffstats
path: root/ssl/t1_ext.c
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2014-08-19 13:33:51 +0100
committerDr. Stephen Henson <steve@openssl.org>2014-08-28 17:06:53 +0100
commitc846a5f5678a7149bc6cbd37dbdae886a5108364 (patch)
tree502a72105fbf78f437598e5d603e3863c8692e8d /ssl/t1_ext.c
parent33f653adf3bff5b0795e22de1f54b7c5472252d0 (diff)
New function SSL_extension_supported().
Reviewed-by: Emilia Käsper <emilia@openssl.org>
Diffstat (limited to 'ssl/t1_ext.c')
-rw-r--r--ssl/t1_ext.c55
1 files changed, 32 insertions, 23 deletions
diff --git a/ssl/t1_ext.c b/ssl/t1_ext.c
index 115e4345ea..0cca8d5506 100644
--- a/ssl/t1_ext.c
+++ b/ssl/t1_ext.c
@@ -218,30 +218,9 @@ static int custom_ext_set(custom_ext_methods *exts,
custom_ext_parse_cb parse_cb, void *parse_arg)
{
custom_ext_method *meth;
- /* See if it is a supported internally */
- switch(ext_type)
- {
- case TLSEXT_TYPE_application_layer_protocol_negotiation:
- case TLSEXT_TYPE_ec_point_formats:
- case TLSEXT_TYPE_elliptic_curves:
- case TLSEXT_TYPE_heartbeat:
- case TLSEXT_TYPE_next_proto_neg:
- case TLSEXT_TYPE_padding:
- case TLSEXT_TYPE_renegotiate:
- case TLSEXT_TYPE_server_name:
- case TLSEXT_TYPE_session_ticket:
- case TLSEXT_TYPE_signature_algorithms:
- case TLSEXT_TYPE_srp:
- case TLSEXT_TYPE_status_request:
- case TLSEXT_TYPE_use_srtp:
-#ifdef TLSEXT_TYPE_opaque_prf_input
- case TLSEXT_TYPE_opaque_prf_input:
-#endif
-#ifdef TLSEXT_TYPE_encrypt_then_mac
- case TLSEXT_TYPE_encrypt_then_mac:
-#endif
+ /* Don't add if extension supported internall */
+ if (SSL_extension_supported(ext_type))
return 0;
- }
/* Extension type must fit in 16 bits */
if (ext_type > 0xffff)
return 0;
@@ -293,4 +272,34 @@ int SSL_CTX_set_custom_srv_ext(SSL_CTX *ctx, unsigned int ext_type,
add_cb, free_cb, add_arg,
parse_cb, parse_arg);
}
+
+int SSL_extension_supported(unsigned int ext_type)
+ {
+ /* See if it is a supported internally */
+ switch(ext_type)
+ {
+ case TLSEXT_TYPE_application_layer_protocol_negotiation:
+ case TLSEXT_TYPE_ec_point_formats:
+ case TLSEXT_TYPE_elliptic_curves:
+ case TLSEXT_TYPE_heartbeat:
+ case TLSEXT_TYPE_next_proto_neg:
+ case TLSEXT_TYPE_padding:
+ case TLSEXT_TYPE_renegotiate:
+ case TLSEXT_TYPE_server_name:
+ case TLSEXT_TYPE_session_ticket:
+ case TLSEXT_TYPE_signature_algorithms:
+ case TLSEXT_TYPE_srp:
+ case TLSEXT_TYPE_status_request:
+ case TLSEXT_TYPE_use_srtp:
+#ifdef TLSEXT_TYPE_opaque_prf_input
+ case TLSEXT_TYPE_opaque_prf_input:
+#endif
+#ifdef TLSEXT_TYPE_encrypt_then_mac
+ case TLSEXT_TYPE_encrypt_then_mac:
+#endif
+ return 1;
+ default:
+ return 0;
+ }
+ }
#endif