diff options
author | Hans Nilsson <hans@erlang.org> | 2021-12-28 16:17:49 +0100 |
---|---|---|
committer | Hans Nilsson <hans@erlang.org> | 2021-12-28 16:17:49 +0100 |
commit | 4c4ef9c97af49a598d8df2d77e21b471ed1d9ba9 (patch) | |
tree | 8638f8bd14492a231488845bff812c5f9ad01c63 | |
parent | 485c6248f7bfad46636d4f31d5268c06e1b80711 (diff) | |
parent | 15f3c4cf9dbd467dabf17d07076fbb9f9b28b5ab (diff) | |
download | erlang-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
-rw-r--r-- | lib/crypto/test/crypto_SUITE.erl | 41 |
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. |