summaryrefslogtreecommitdiff
path: root/lib/crypto/test
diff options
context:
space:
mode:
authorHans Nilsson <hans@erlang.org>2021-12-28 16:17:49 +0100
committerHans Nilsson <hans@erlang.org>2021-12-28 16:17:49 +0100
commit4c4ef9c97af49a598d8df2d77e21b471ed1d9ba9 (patch)
tree8638f8bd14492a231488845bff812c5f9ad01c63 /lib/crypto/test
parent485c6248f7bfad46636d4f31d5268c06e1b80711 (diff)
parent15f3c4cf9dbd467dabf17d07076fbb9f9b28b5ab (diff)
downloaderlang-4c4ef9c97af49a598d8df2d77e21b471ed1d9ba9.tar.gz
Merge branch 'hans/crypto/cuddle_tests' into maint
* hans/crypto/cuddle_tests: crypto: dsa seem to always have been given bad result. Must fix. crypto: Test crypto:privkey_to_pubkey/2
Diffstat (limited to 'lib/crypto/test')
-rw-r--r--lib/crypto/test/crypto_SUITE.erl41
1 files changed, 38 insertions, 3 deletions
diff --git a/lib/crypto/test/crypto_SUITE.erl b/lib/crypto/test/crypto_SUITE.erl
index 2bd75a59ca..a3ea7fd0a7 100644
--- a/lib/crypto/test/crypto_SUITE.erl
+++ b/lib/crypto/test/crypto_SUITE.erl
@@ -112,6 +112,7 @@
use_all_eddh_generate_compute/1,
pbkdf2_hmac/0,
pbkdf2_hmac/1,
+ privkey_to_pubkey/1,
%% Others:
aes_128_cbc/1,
@@ -346,10 +347,13 @@ groups() ->
{rsa, [], [sign_verify,
public_encrypt,
private_encrypt,
- generate
+ generate,
+ privkey_to_pubkey
]},
{dss, [], [sign_verify
%% Does not work yet: ,public_encrypt, private_encrypt
+ %% dsa seem to always have been given bad result. Must fix:
+ %% ,privkey_to_pubkey
]},
{ecdsa, [], [sign_verify, use_all_ec_sign_verify
%% Does not work yet: ,public_encrypt, private_encrypt
@@ -1072,6 +1076,23 @@ private_encrypt(Config) when is_list(Config) ->
lists:foreach(fun do_private_encrypt/1, Params).
%%--------------------------------------------------------------------
+privkey_to_pubkey(Config) ->
+ Params = proplists:get_value(privkey_to_pubkey, Config),
+ lists:foreach(fun do_privkey_to_pubkey/1, Params).
+
+do_privkey_to_pubkey({Type, Priv, Pub}) ->
+ ct:log("~p:~p~nType = ~p,~nPriv = ~p,~n Pub = ~p", [?MODULE,?LINE,Type,Priv,Pub]),
+ case crypto:privkey_to_pubkey(Type, Priv) of
+ Pub ->
+ ok;
+ Priv ->
+ ct:fail("Returned private key", []);
+ Other ->
+ ct:log("~p:~p Other = ~p", [?MODULE,?LINE,Other]),
+ ct:fail("bad", [])
+ end.
+
+%%--------------------------------------------------------------------
generate_compute() ->
[{doc, " Test crypto:genarate_key and crypto:compute_key"}].
generate_compute(Config) when is_list(Config) ->
@@ -1999,9 +2020,11 @@ group_config(rsa, Config) ->
[{rsa_padding,rsa_pkcs1_oaep_padding}, {rsa_mgf1_md,sha}, {rsa_oaep_label, <<"Hej hopp">>}],
[{rsa_padding,rsa_pkcs1_oaep_padding}, {rsa_mgf1_md,sha}, {rsa_oaep_md,sha}, {rsa_oaep_label, <<"Hej hopp">>}]
],
- [{sign_verify, rsa_sign_verify_tests(Config, Msg, Public, Private, PublicS, PrivateS, SignVerify_OptsToTry)},
+ RsaSignVerify = rsa_sign_verify_tests(Config, Msg, Public, Private, PublicS, PrivateS, SignVerify_OptsToTry),
+ [{sign_verify, RsaSignVerify},
{pub_priv_encrypt, gen_rsa_pub_priv_tests(PublicS, PrivateS, MsgPubEnc, PrivEnc_OptsToTry)},
{pub_pub_encrypt, gen_rsa_pub_priv_tests(PublicS, PrivateS, MsgPubEnc, PubEnc_OptsToTry)},
+ {privkey_to_pubkey, get_priv_pub_from_sign_verify(RsaSignVerify)},
{generate, [{rsa, 1024, 3}, {rsa, 2048, 17}, {rsa, 3072, 65537}]}
| Config];
group_config(dss = Type, Config) ->
@@ -2023,7 +2046,10 @@ group_config(dss = Type, Config) ->
lists:member(Hash, SupportedHashs)],
MsgPubEnc = <<"7896345786348 Asldi">>,
PubPrivEnc = [{dss, Public, Private, MsgPubEnc, []}],
- [{sign_verify, SignVerify}, {pub_priv_encrypt, PubPrivEnc} | Config];
+ [{sign_verify, SignVerify},
+ {pub_priv_encrypt, PubPrivEnc},
+ {privkey_to_pubkey, get_priv_pub_from_sign_verify(SignVerify)}
+ | Config];
group_config(ecdsa = Type, Config) ->
{Private, Public} = ec_key_named(),
Msg = ec_msg(),
@@ -4409,3 +4435,12 @@ pbkdf2_hmac(Config) when is_list(Config) ->
error:{notsup, _, "Unsupported CRYPTO_PKCS5_PBKDF2_HMAC"} ->
{skip, "No CRYPTO_PKCS5_PBKDF2_HMAC"}
end.
+
+
+get_priv_pub_from_sign_verify(L) ->
+ lists:foldl(fun get_priv_pub/2, [], L).
+
+get_priv_pub({Type, undefined=_Hash, Private, Public, _Msg, _Signature}, Acc) -> [{Type,Private,Public} | Acc];
+get_priv_pub({Type, _Hash, Public, Private, _Msg}, Acc) -> [{Type,Private,Public} | Acc];
+get_priv_pub({Type, _Hash, Public, Private, _Msg, _Options}, Acc) -> [{Type,Private,Public} | Acc];
+get_priv_pub(_, Acc) -> Acc.