aboutsummaryrefslogtreecommitdiffstats
path: root/lib/crypto/src/crypto.erl
diff options
context:
space:
mode:
authorHans Nilsson <[email protected]>2017-03-13 12:20:40 +0100
committerHans Nilsson <[email protected]>2017-03-13 12:20:40 +0100
commit47e46069d01960b74cefeba648e98e6afbb79e59 (patch)
tree30edfafd54887a3ebb5eb814c298d91bcc89c7f7 /lib/crypto/src/crypto.erl
parentee1ad99648316f4dc15d872804dfa52990e0240f (diff)
parent72e126aa74b9632068d11f14f423b044a345f03f (diff)
downloadotp-47e46069d01960b74cefeba648e98e6afbb79e59.tar.gz
otp-47e46069d01960b74cefeba648e98e6afbb79e59.tar.bz2
otp-47e46069d01960b74cefeba648e98e6afbb79e59.zip
Merge branch 'wiml/crypto/rsa-generate-key/ERL-165/PR-1299/OTP-14140'
Diffstat (limited to 'lib/crypto/src/crypto.erl')
-rw-r--r--lib/crypto/src/crypto.erl14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/crypto/src/crypto.erl b/lib/crypto/src/crypto.erl
index 5a915d4233..631af62615 100644
--- a/lib/crypto/src/crypto.erl
+++ b/lib/crypto/src/crypto.erl
@@ -452,6 +452,15 @@ generate_key(srp, {user, [Generator, Prime, Version]}, PrivateArg)
end,
user_srp_gen_key(Private, Generator, Prime);
+generate_key(rsa, {ModulusSize, PublicExponent}, undefined) ->
+ case rsa_generate_key_nif(ModulusSize, ensure_int_as_bin(PublicExponent)) of
+ error ->
+ erlang:error(computation_failed,
+ [rsa,{ModulusSize,PublicExponent}]);
+ Private ->
+ {lists:sublist(Private, 2), Private}
+ end;
+
generate_key(ecdh, Curve, PrivKey) ->
ec_key_generate(nif_curve_params(Curve), ensure_int_as_bin(PrivKey)).
@@ -787,6 +796,11 @@ rsa_verify_nif(_Type, _Digest, _Signature, _Key) -> ?nif_stub.
ecdsa_verify_nif(_Type, _Digest, _Signature, _Curve, _Key) -> ?nif_stub.
%% Public Keys --------------------------------------------------------------------
+%% RSA Rivest-Shamir-Adleman functions
+%%
+
+rsa_generate_key_nif(_Bits, _Exp) -> ?nif_stub.
+
%% DH Diffie-Hellman functions
%%