@@ -4,7 +4,7 @@ use Moose;
44# VERSION
55
66use Carp qw( croak) ;
7- use Crypt::OpenSSL ::RSA;
7+ use Crypt::PK ::RSA;
88use Crypt::OpenSSL::X509;
99use File::Slurper qw/ read_text / ;
1010use IO::Compress::RawDeflate qw/ rawdeflate / ;
@@ -197,18 +197,16 @@ sub _sign_redirect_uri {
197197 my $uri = shift ;
198198
199199 my $key_string = read_text($self -> key);
200- my $rsa_priv = Crypt::OpenSSL::RSA-> new_private_key($key_string );
201-
202- my $method = " use_" . $self -> sig_hash . " _hash" ;
203- $rsa_priv -> $method ;
200+ my $pk = Crypt::PK::RSA-> new();
201+ my $rsa_priv = $pk -> import_key(\$key_string );
204202
205203 $uri -> query_param(' SigAlg' ,
206204 $self -> sig_hash eq ' sha1'
207205 ? ' http://www.w3.org/2000/09/xmldsig#rsa-sha1'
208206 : ' http://www.w3.org/2001/04/xmldsig-more#rsa-' . $self -> sig_hash);
209207
210208 my $to_sign = $uri -> query;
211- my $sig = encode_base64($rsa_priv -> sign ($to_sign ), ' ' );
209+ my $sig = encode_base64($rsa_priv -> sign_message ($to_sign , uc ( $self -> sig_hash), ' v1.5 ' ), ' ' );
212210 $uri -> query_param(' Signature' , $sig );
213211 return $uri -> as_string;
214212}
@@ -289,24 +287,26 @@ sub _verify {
289287
290288 foreach my $crt (@{$self -> cert}) {
291289 my $cert = Crypt::OpenSSL::X509-> new_from_string($crt );
292- my $rsa_pub = Crypt::OpenSSL::RSA-> new_public_key($cert -> pubkey);
290+ my $pk = Crypt::PK::RSA-> new();
291+ my $rsa_pub = $pk -> import_key(\$cert -> pubkey);
293292
293+ my $hash_name ;
294294 if ($sigalg eq ' http://www.w3.org/2001/04/xmldsig-more#rsa-sha256' ) {
295- $rsa_pub -> use_sha256_hash ;
295+ $hash_name = ' SHA256 ' ;
296296 } elsif ($sigalg eq ' http://www.w3.org/2001/04/xmldsig-more#rsa-sha224' ) {
297- $rsa_pub -> use_sha224_hash ;
297+ $hash_name = ' SHA224 ' ;
298298 } elsif ($sigalg eq ' http://www.w3.org/2001/04/xmldsig-more#rsa-sha384' ) {
299- $rsa_pub -> use_sha384_hash ;
299+ $hash_name = ' SHA384 ' ;
300300 } elsif ($sigalg eq ' http://www.w3.org/2001/04/xmldsig-more#rsa-sha512' ) {
301- $rsa_pub -> use_sha512_hash ;
301+ $hash_name = ' SHA512 ' ;
302302 } elsif ($sigalg eq ' http://www.w3.org/2000/09/xmldsig#rsa-sha1' ) {
303- $rsa_pub -> use_sha1_hash ;
303+ $hash_name = ' SHA1 ' ;
304304 }
305305 else {
306306 warn " Unsupported Signature Algorithim: $sigalg , defaulting to sha256" if $self -> debug;
307307 }
308308
309- return 1 if $rsa_pub -> verify( $ signed , $sig );
309+ return 1 if $rsa_pub -> verify_message( $sig , $ signed , $hash_name , ' v1.5 ' );
310310
311311 warn " Unable to verify with " . $cert -> subject if $self -> debug;
312312 }
0 commit comments