diff --git a/RSA.pm b/RSA.pm index c2d3a3f..3866c6b 100644 --- a/RSA.pm +++ b/RSA.pm @@ -58,7 +58,7 @@ sub new_private_key { croak "unrecognized key format: expected PEM-encoded key (starting with '-----BEGIN') " . "or DER-encoded key (binary ASN.1 data)" unless defined $p_key_string && length($p_key_string) > 0; - if ( $p_key_string =~ /^-----/ ) { + if ( $p_key_string =~ /-----/m ) { return $proto->_new_private_key_pem($p_key_string, @rest); } elsif ( substr($p_key_string, 0, 1) eq "\x30" ) { diff --git a/t/parse_text_key.t b/t/parse_text_key.t new file mode 100644 index 0000000..65dcc49 --- /dev/null +++ b/t/parse_text_key.t @@ -0,0 +1,21 @@ +use strict; +use warnings; + +use Crypt::OpenSSL::RSA; +use File::Temp qw/tempfile/; +use Test::More; + +diag ("Version: $Crypt::OpenSSL::RSA::VERSION"); + +my ($priv_fh, $priv_file) = tempfile(UNLINK => 1); + +my $priv = `openssl genrsa -out $priv_file 2>&1`; +my $priv_text = `openssl rsa -in $priv_file -text 2>&1`; + +my $rsa = eval { + Crypt::OpenSSL::RSA->new_private_key ($priv_text); +}; + +ok (defined ($rsa)) or diag ($@); + +done_testing;