diff options
author | Erlang/OTP <[email protected]> | 2017-02-01 18:32:33 +0100 |
---|---|---|
committer | Erlang/OTP <[email protected]> | 2017-02-01 18:32:33 +0100 |
commit | c25ee54a0ba1a875a714f9f3e52071846c655982 (patch) | |
tree | 903de6b13057897af77db039f30bd90f734480f3 /lib/crypto/src | |
parent | cd545daf6a88ebebef6de1fb631cb47e91b05ca5 (diff) | |
parent | 62f9bd09023da0b318e57b6454bd4b346816a27b (diff) | |
download | otp-c25ee54a0ba1a875a714f9f3e52071846c655982.tar.gz otp-c25ee54a0ba1a875a714f9f3e52071846c655982.tar.bz2 otp-c25ee54a0ba1a875a714f9f3e52071846c655982.zip |
Merge branch 'hans/ssh/dh_group_exc_optimize/OTP-14169' into maint-18
* hans/ssh/dh_group_exc_optimize/OTP-14169:
ssh: optimize kex dh_gex using new crypto functionality
crypto: Added optional length to paramlist in generate_key
ssh,crypto: prepare for release
# Conflicts:
# lib/ssh/src/ssh_transport.erl
Diffstat (limited to 'lib/crypto/src')
-rw-r--r-- | lib/crypto/src/crypto.erl | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lib/crypto/src/crypto.erl b/lib/crypto/src/crypto.erl index 38e71591f3..1150fd60e0 100644 --- a/lib/crypto/src/crypto.erl +++ b/lib/crypto/src/crypto.erl @@ -574,9 +574,15 @@ exor(Bin1, Bin2) -> generate_key(Type, Params) -> generate_key(Type, Params, undefined). -generate_key(dh, DHParameters, PrivateKey) -> +generate_key(dh, DHParameters0, PrivateKey) -> + {DHParameters, Len} = + case DHParameters0 of + [P,G,L] -> {[P,G], L}; + [P,G] -> {[P,G], 0} + end, dh_generate_key_nif(ensure_int_as_bin(PrivateKey), - map_ensure_int_as_bin(DHParameters), 0); + map_ensure_int_as_bin(DHParameters), + 0, Len); generate_key(srp, {host, [Verifier, Generator, Prime, Version]}, PrivArg) when is_binary(Verifier), is_binary(Generator), is_binary(Prime), is_atom(Version) -> @@ -1555,11 +1561,11 @@ dh_check([_Prime,_Gen]) -> ?nif_stub. {binary(),binary()}. dh_generate_key(DHParameters) -> - dh_generate_key_nif(undefined, map_mpint_to_bin(DHParameters), 4). + dh_generate_key_nif(undefined, map_mpint_to_bin(DHParameters), 4, 0). dh_generate_key(PrivateKey, DHParameters) -> - dh_generate_key_nif(mpint_to_bin(PrivateKey), map_mpint_to_bin(DHParameters), 4). + dh_generate_key_nif(mpint_to_bin(PrivateKey), map_mpint_to_bin(DHParameters), 4, 0). -dh_generate_key_nif(_PrivateKey, _DHParameters, _Mpint) -> ?nif_stub. +dh_generate_key_nif(_PrivateKey, _DHParameters, _Mpint, _Length) -> ?nif_stub. %% DHParameters = [P (Prime)= mpint(), G(Generator) = mpint()] %% MyPrivKey, OthersPublicKey = mpint() |