aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ssl
diff options
context:
space:
mode:
authorPéter Dimitrov <[email protected]>2018-12-13 16:02:57 +0100
committerPéter Dimitrov <[email protected]>2019-01-11 09:59:12 +0100
commit0f35bb7eeb4360ac3b0a0c2ded3e5e8e2e4255d4 (patch)
treea634b9717701caa2c7e5c281d22500c1dfa49c69 /lib/ssl
parent8724ebf1e13fe4ebec73aaa9285011d9aa99e9cc (diff)
downloadotp-0f35bb7eeb4360ac3b0a0c2ded3e5e8e2e4255d4.tar.gz
otp-0f35bb7eeb4360ac3b0a0c2ded3e5e8e2e4255d4.tar.bz2
otp-0f35bb7eeb4360ac3b0a0c2ded3e5e8e2e4255d4.zip
ssl: Implement transcript_hash for TLS 1.3
Change-Id: I03be63e9f436f60cdaee6583c930f235fd5eb24c
Diffstat (limited to 'lib/ssl')
-rw-r--r--lib/ssl/src/tls_v1.erl9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/ssl/src/tls_v1.erl b/lib/ssl/src/tls_v1.erl
index 66baa47c9b..16b24c4a5d 100644
--- a/lib/ssl/src/tls_v1.erl
+++ b/lib/ssl/src/tls_v1.erl
@@ -43,7 +43,8 @@
client_handshake_traffic_secret/3, server_handshake_traffic_secret/3,
client_application_traffic_secret_0/3, server_application_traffic_secret_0/3,
exporter_master_secret/3, resumption_master_secret/3,
- update_traffic_secret/2, calculate_traffic_keys/3]).
+ update_traffic_secret/2, calculate_traffic_keys/3,
+ transcript_hash/2]).
-type named_curve() :: sect571r1 | sect571k1 | secp521r1 | brainpoolP512r1 |
sect409k1 | sect409r1 | brainpoolP384r1 | secp384r1 |
@@ -99,6 +100,12 @@ hkdf_extract(MacAlg, Salt, KeyingMaterial) ->
hkdf_expand(PseudoRandKey, ContextInfo, Length, Algo) ->
Iterations = erlang:ceil(Length / ssl_cipher:hash_size(Algo)),
hkdf_expand(Algo, PseudoRandKey, ContextInfo, Length, 1, Iterations, <<>>, <<>>).
+
+
+-spec transcript_hash(Messages::iodata(), Algo::ssl_cipher_format:hash()) -> Hash::binary().
+
+transcript_hash(Messages, Algo) ->
+ crypto:hash(mac_algo(Algo), Messages).
%% TLS 1.3 ---------------------------------------------------
%% TLS 1.0 -1.2 ---------------------------------------------------