diff options
author | Ingela Andin <[email protected]> | 2018-04-25 10:30:50 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2018-04-25 10:30:50 +0200 |
commit | 0e669ed13e20d5d68aa617aacd807eca7268d070 (patch) | |
tree | dd088e2f20f476f7704ce35a77005ec614682e01 /lib/ssl/src/ssl_handshake.erl | |
parent | 3beffe5b8f9a454b766674427d4eafa22dbdbbd7 (diff) | |
parent | 34ef4b8d5feff3b0cc76573d769e482c420673ba (diff) | |
download | otp-0e669ed13e20d5d68aa617aacd807eca7268d070.tar.gz otp-0e669ed13e20d5d68aa617aacd807eca7268d070.tar.bz2 otp-0e669ed13e20d5d68aa617aacd807eca7268d070.zip |
Merge pull request #1779 from IngelaAndin/ingela/ssl/hello-pause/ERL-169/OTP-14372
Add new API functions to enable smoother user customizations based on TLS hello extensions
Diffstat (limited to 'lib/ssl/src/ssl_handshake.erl')
-rw-r--r-- | lib/ssl/src/ssl_handshake.erl | 25 |
1 files changed, 22 insertions, 3 deletions
diff --git a/lib/ssl/src/ssl_handshake.erl b/lib/ssl/src/ssl_handshake.erl index e1f813ea95..54eb920bda 100644 --- a/lib/ssl/src/ssl_handshake.erl +++ b/lib/ssl/src/ssl_handshake.erl @@ -53,7 +53,7 @@ -export([certify/7, certificate_verify/6, verify_signature/5, master_secret/4, server_key_exchange_hash/2, verify_connection/6, init_handshake_history/0, update_handshake_history/2, verify_server_key/5, - select_version/3 + select_version/3, extension_value/1 ]). %% Encode @@ -139,8 +139,8 @@ certificate(OwnCert, CertDbHandle, CertDbRef, server) -> case ssl_certificate:certificate_chain(OwnCert, CertDbHandle, CertDbRef) of {ok, _, Chain} -> #certificate{asn1_certificates = Chain}; - {error, _} -> - ?ALERT_REC(?FATAL, ?INTERNAL_ERROR, server_has_no_suitable_certificates) + {error, Error} -> + ?ALERT_REC(?FATAL, ?INTERNAL_ERROR, {server_has_no_suitable_certificates, Error}) end. %%-------------------------------------------------------------------- @@ -1166,6 +1166,25 @@ srp_user(#ssl_options{srp_identity = {UserName, _}}) -> srp_user(_) -> undefined. +extension_value(undefined) -> + undefined; +extension_value(#sni{hostname = HostName}) -> + HostName; +extension_value(#ec_point_formats{ec_point_format_list = List}) -> + List; +extension_value(#elliptic_curves{elliptic_curve_list = List}) -> + List; +extension_value(#hash_sign_algos{hash_sign_algos = Algos}) -> + Algos; +extension_value(#alpn{extension_data = Data}) -> + Data; +extension_value(#next_protocol_negotiation{extension_data = Data}) -> + Data; +extension_value(#srp{username = Name}) -> + Name; +extension_value(#renegotiation_info{renegotiated_connection = Data}) -> + Data. + %%-------------------------------------------------------------------- %%% Internal functions %%-------------------------------------------------------------------- |