@@ -6,7 +6,7 @@ use Crypt::OpenSSL::RSA;
66use Crypt::OpenSSL::Guess qw( openssl_version) ;
77
88BEGIN {
9- plan tests => 37 + ( UNIVERSAL::can( " Crypt::OpenSSL::RSA" , " use_sha512_hash" ) ? 4 * 5 : 0 ) + ( UNIVERSAL::can( " Crypt::OpenSSL::RSA" , " use_whirlpool_hash" ) ? 1 * 5 : 0 );
9+ plan tests => 97 + ( UNIVERSAL::can( " Crypt::OpenSSL::RSA" , " use_sha512_hash" ) ? 4 * 5 : 0 ) + ( UNIVERSAL::can( " Crypt::OpenSSL::RSA" , " use_whirlpool_hash" ) ? 1 * 5 : 0 );
1010}
1111
1212sub _Test_Encrypt_And_Decrypt {
@@ -37,16 +37,16 @@ sub _Test_Sign_And_Verify {
3737 my $sig = eval { $rsa -> sign($plaintext ) };
3838 SKIP: {
3939 skip " OpenSSL error: illegal or unsupported padding mode - $hash " , 5 if $@ =~ / illegal or unsupported padding mode/i ;
40- ok( $rsa_pub -> verify( $plaintext , $sig ) );
40+ ok( $rsa_pub -> verify( $plaintext , $sig ), " rsa_pub verify $hash " );
4141
4242 my $false_sig = unpack " H*" , $sig ;
4343 $false_sig =~ tr / [a-f]/ [0a-d]/ ;
44- ok( !$rsa_pub -> verify( $plaintext , pack ( " H*" , $false_sig ) ) );
45- ok( !$rsa -> verify( $plaintext , pack ( " H*" , $false_sig ) ) );
44+ ok( !$rsa_pub -> verify( $plaintext , pack ( " H*" , $false_sig ) ), " rsa_pub do not verify invalid $hash " );
45+ ok( !$rsa -> verify( $plaintext , pack ( " H*" , $false_sig ) ), " rsa do not verify invalid $hash " );
4646
4747 my $sig_of_other = $rsa -> sign(" different" );
48- ok( !$rsa_pub -> verify( $plaintext , $sig_of_other ) );
49- ok( !$rsa -> verify( $plaintext , $sig_of_other ) );
48+ ok( !$rsa_pub -> verify( $plaintext , $sig_of_other ), " rsa_pub do not verify unmatching message " );
49+ ok( !$rsa -> verify( $plaintext , $sig_of_other ), " rsa do not verify unmatching message " );
5050 }
5151}
5252
@@ -69,8 +69,8 @@ Crypt::OpenSSL::RSA->import_random_seed();
6969
7070ok( Crypt::OpenSSL::RSA-> generate_key(512)-> size() * 8 == 512 );
7171
72- my $rsa = Crypt::OpenSSL::RSA-> generate_key(1024 );
73- ok( $rsa -> size() * 8 == 1024 );
72+ my $rsa = Crypt::OpenSSL::RSA-> generate_key(2048 );
73+ ok( $rsa -> size() * 8 == 2048 );
7474ok( $rsa -> check_key() );
7575
7676$rsa -> use_no_padding();
@@ -121,31 +121,38 @@ _check_for_croak(
121121
122122$plaintext .= $plaintext x 5 ;
123123
124- # check signature algorithms
125- $rsa -> use_md5_hash();
126- $rsa_pub -> use_md5_hash();
127- _Test_Sign_And_Verify( $plaintext , $rsa , $rsa_pub , " md5" );
124+ my @paddings = qw/ pkcs1 pkcs1_oaep pkcs1_pss/ ;
125+ foreach my $padding (@paddings ) {
126+ my $p = " use_$padding \_ padding" ;
128127
129- $rsa -> use_sha1_hash();
130- $rsa_pub -> use_sha1_hash();
131- _Test_Sign_And_Verify( $plaintext , $rsa , $rsa_pub , " sha1" );
128+ $rsa -> $p ;
129+ $rsa_pub -> $p ;
130+ # check signature algorithms
131+ $rsa -> use_md5_hash();
132+ $rsa_pub -> use_md5_hash();
133+ _Test_Sign_And_Verify( $plaintext , $rsa , $rsa_pub , " md5 with $padding padding" );
132134
133- if ( UNIVERSAL::can( " Crypt::OpenSSL::RSA" , " use_sha512_hash" ) ) {
135+ $rsa -> use_sha1_hash();
136+ $rsa_pub -> use_sha1_hash();
137+ _Test_Sign_And_Verify( $plaintext , $rsa , $rsa_pub , " sha1 with $padding padding" );
138+
139+ if ( UNIVERSAL::can( " Crypt::OpenSSL::RSA" , " use_sha512_hash" ) ) {
134140 $rsa -> use_sha224_hash();
135141 $rsa_pub -> use_sha224_hash();
136- _Test_Sign_And_Verify( $plaintext , $rsa , $rsa_pub , " sha224" );
142+ _Test_Sign_And_Verify( $plaintext , $rsa , $rsa_pub , " sha224 with $padding padding " );
137143
138144 $rsa -> use_sha256_hash();
139145 $rsa_pub -> use_sha256_hash();
140- _Test_Sign_And_Verify( $plaintext , $rsa , $rsa_pub , " sha256" );
146+ _Test_Sign_And_Verify( $plaintext , $rsa , $rsa_pub , " sha256 with $padding padding " );
141147
142148 $rsa -> use_sha384_hash();
143149 $rsa_pub -> use_sha384_hash();
144- _Test_Sign_And_Verify( $plaintext , $rsa , $rsa_pub , " sha384" );
150+ _Test_Sign_And_Verify( $plaintext , $rsa , $rsa_pub , " sha384 with $padding padding " );
145151
146152 $rsa -> use_sha512_hash();
147153 $rsa_pub -> use_sha512_hash();
148- _Test_Sign_And_Verify( $plaintext , $rsa , $rsa_pub , " sha512" );
154+ _Test_Sign_And_Verify( $plaintext , $rsa , $rsa_pub , " sha512 with $padding padding" );
155+ }
149156}
150157
151158my ( $major , $minor , $patch ) = openssl_version();
0 commit comments