diff --git a/t/padding.t b/t/padding.t index 3106d1b..a4b0f99 100644 --- a/t/padding.t +++ b/t/padding.t @@ -3,9 +3,10 @@ use Test::More; use Crypt::OpenSSL::Random; use Crypt::OpenSSL::RSA; -use Crypt::OpenSSL::Guess qw(openssl_version); +use Crypt::OpenSSL::Guess qw(openssl_version find_openssl_prefix find_openssl_exec); my ($major, $minor, $patch) = openssl_version; +my $is_libressl = (`"@{[find_openssl_exec(find_openssl_prefix())]}" version` =~ /LibreSSL/); BEGIN { plan tests => 124 + ( UNIVERSAL::can( "Crypt::OpenSSL::RSA", "use_sha512_hash" ) ? 4 * 5 : 0 ); @@ -82,10 +83,10 @@ is( $rsa_priv->decrypt( $rsa_priv->encrypt($plaintext) ), $plaintext, "private k my $rsa_pub = Crypt::OpenSSL::RSA->new_public_key($public_key_string); $plaintext .= $plaintext x 5; -# sslv23 is unsupported on OpenSSL 3.x +# sslv23 is unsupported on OpenSSL 3.x but LibreSSL still supports it SKIP: { - skip "OpenSSL version less than 3.0 supports sslv23", 2 - if $major lt '3.0'; + skip "sslv23 is available on OpenSSL < 3.0 and LibreSSL", 2 + if $major lt '3.0' || $is_libressl; eval { $rsa->use_sslv23_padding; }; diff --git a/t/pkcs1_sign.t b/t/pkcs1_sign.t index 4032a62..584d255 100644 --- a/t/pkcs1_sign.t +++ b/t/pkcs1_sign.t @@ -4,9 +4,10 @@ use Test::More; use Crypt::OpenSSL::Random; use Crypt::OpenSSL::RSA; -use Crypt::OpenSSL::Guess qw(openssl_version); +use Crypt::OpenSSL::Guess qw(openssl_version find_openssl_prefix find_openssl_exec); my ($major, $minor, $patch) = openssl_version(); +my $is_libressl = (`"@{[find_openssl_exec(find_openssl_prefix())]}" version` =~ /LibreSSL/); # Regression tests for PKCS#1 v1.5 signing (RSASSA-PKCS1-v1_5). # Issue #146: PKCS#1 v1.5 was disabled entirely in v0.35 to mitigate @@ -62,9 +63,10 @@ SKIP: { } # --- Cross-padding: sign with PKCS1, verify with PSS must fail --- +# On pre-3.x and LibreSSL, RSA_verify ignores the padding mode setting SKIP: { - skip "sign uses pkcs1_padding only on OpenSSL < 3.x", 1 - if $major < 3; + skip "cross-padding test requires OpenSSL 3.x (not LibreSSL)", 1 + if $major < 3 || $is_libressl; $rsa->use_pkcs1_padding(); $rsa->use_sha256_hash(); my $sig = $rsa->sign("cross-padding test");