From e9e6827445528caf1d9d6647953fbe67a0c78716 Mon Sep 17 00:00:00 2001 From: Tomas Mraz Date: Fri, 4 Nov 2022 12:31:16 +0100 Subject: Test that signatures using hash name commands work properly Reviewed-by: Dmitry Belyavskiy Reviewed-by: Todd Short (Merged from https://github.com/openssl/openssl/pull/19606) --- test/recipes/20-test_dgst.t | 45 ++++++++++++++++++++++++++++++++++++++++++++- test/testrsa2048pub.pem | 9 +++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 test/testrsa2048pub.pem diff --git a/test/recipes/20-test_dgst.t b/test/recipes/20-test_dgst.t index f5895747ca..96744b3741 100644 --- a/test/recipes/20-test_dgst.t +++ b/test/recipes/20-test_dgst.t @@ -17,7 +17,7 @@ use OpenSSL::Test::Utils; setup("test_dgst"); -plan tests => 12; +plan tests => 13; sub tsignverify { my $testtext = shift; @@ -51,6 +51,43 @@ sub tsignverify { $testtext.": Expect failure verifying mismatching data"); } +sub tsignverify_sha512 { + my $testtext = shift; + my $privkey = shift; + my $pubkey = shift; + + my $data_to_sign = srctop_file('test', 'data.bin'); + my $other_data = srctop_file('test', 'data2.bin'); + + my $sigfile = basename($privkey, '.pem') . '.sig'; + plan tests => 5; + + ok(run(app(['openssl', 'sha512', '-sign', $privkey, + '-out', $sigfile, + $data_to_sign])), + $testtext.": Generating signature using sha512 command"); + + ok(run(app(['openssl', 'sha512', '-verify', $pubkey, + '-signature', $sigfile, + $data_to_sign])), + $testtext.": Verify signature with public key using sha512 command"); + + ok(run(app(['openssl', 'dgst', '-sha512', '-prverify', $privkey, + '-signature', $sigfile, + $data_to_sign])), + $testtext.": Verify signature with private key"); + + ok(run(app(['openssl', 'dgst', '-sha512', '-verify', $pubkey, + '-signature', $sigfile, + $data_to_sign])), + $testtext.": Verify signature with public key"); + + ok(!run(app(['openssl', 'dgst', '-sha512', '-verify', $pubkey, + '-signature', $sigfile, + $other_data])), + $testtext.": Expect failure verifying mismatching data"); +} + SKIP: { skip "RSA is not supported by this OpenSSL build", 1 if disabled("rsa"); @@ -60,6 +97,12 @@ SKIP: { srctop_file("test","testrsa.pem"), srctop_file("test","testrsapub.pem")); }; + + subtest "RSA signature generation and verification with `sha512` CLI" => sub { + tsignverify_sha512("RSA", + srctop_file("test","testrsa2048.pem"), + srctop_file("test","testrsa2048pub.pem")); + }; } SKIP: { diff --git a/test/testrsa2048pub.pem b/test/testrsa2048pub.pem new file mode 100644 index 0000000000..64406a88ca --- /dev/null +++ b/test/testrsa2048pub.pem @@ -0,0 +1,9 @@ +-----BEGIN PUBLIC KEY----- +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzQCB6nsq4eoG1Z98c9n/ +uUoJYVwuS6fGNs7wjdNTPsMYVSWwFcdpuZp31nJb+cNTKptuX2Yn1fuFFgdo092p +y9NZdFEXF9w9MJ0vxH7kH5fjKtt/ndhkocR2emZuzXG8Gqz151F/SzhZT+qbBeQt +WtqZEgCAE+RTFqTZu47QhriNKHWLrK+SLUaoaLSF0jnJuusOK2RZJxD0Ky0eoKS0 +gCwL7Ksyj4posAc721Rv7qmAnShJkSs5DBUyvH4px2WPgXX65G80My/4e8qz5AZJ +uYV3hp2g6nGDU/ByJ1SIaRNkh2DRIr5nbg/Eg90g/8Mb2pajGWbJqi51rQPeR+HE +TwIDAQAB +-----END PUBLIC KEY----- -- cgit v1.2.3