@@ -20,6 +20,7 @@ my @oaep_digests = qw/sha1 sha224 sha256 sha384 sha512/;
2020
2121my $xmlsec = get_xmlsec_features();
2222my $lax_key_search = $xmlsec -> {lax_key_search } ? ' --lax-key-search' : ' ' ;
23+ my $cryptx = get_cryptx_features();
2324
2425foreach my $km (@key_methods ) {
2526 foreach my $dm (@data_methods ) {
@@ -54,35 +55,41 @@ foreach my $km (@key_methods) {
5455
5556foreach my $om (@oaep_mgf_algs ) {
5657 foreach my $omdig (@oaep_digests ) {
57- foreach my $dm (@data_methods ) {
58- my $encrypter = XML::Enc-> new(
59- {
60- key => ' t/sign-private.pem' ,
61- cert => ' t/sign-certonly.pem' ,
62- data_enc_method => $dm ,
63- key_transport => ' rsa-oaep' ,
64- oaep_mgf_alg => $om ,
65- oaep_digest => $omdig ,
66- no_xml_declaration => 1,
58+ SKIP: {
59+ if (! $cryptx -> {oaem_mgf_digest } & ($om ne $omdig )) {
60+ my $skip = (scalar @data_methods ) * 4;
61+ skip " CryptX $cryptx ->{version} does not support rsa-oaep MGF: $om and digest $omdig " , $skip ;
6762 }
68- );
63+ foreach my $dm (@data_methods ) {
64+ my $encrypter = XML::Enc-> new(
65+ {
66+ key => ' t/sign-private.pem' ,
67+ cert => ' t/sign-certonly.pem' ,
68+ data_enc_method => $dm ,
69+ key_transport => ' rsa-oaep' ,
70+ oaep_mgf_alg => $om ,
71+ oaep_digest => $omdig ,
72+ no_xml_declaration => 1,
73+ }
74+ );
6975
70- my $encrypted = $encrypter -> encrypt($xml );
71- ok($encrypted =~ / EncryptedData/ , " Successful Encrypted: Key Method:rsa-oaep MGF:$om , param:$omdig Data Method:$dm " );
76+ my $encrypted = $encrypter -> encrypt($xml );
77+ ok($encrypted =~ / EncryptedData/ , " Successful Encrypted: Key Method:rsa-oaep MGF:$om , param:$omdig Data Method:$dm " );
7278
73- SKIP: {
74- skip " xmlsec1 not installed" , 2 unless $xmlsec -> {installed };
75- skip " xmlsec version 1.2.27 minimum for GCM" , 2 if ! $xmlsec -> {aes_gcm };
76- ok( open XML, ' >' , " $om -$omdig -$dm -tmp.xml" );
77- print XML $encrypted ;
78- close XML;
79- my $verify_response = ` xmlsec1 --decrypt $lax_key_search --privkey-pem t/sign-private.pem $om -$omdig -$dm -tmp.xml 2>&1` ;
80- ok( $verify_response =~ m / XML-SIG_1/ , " Successfully decrypted with xmlsec1" )
81- or warn " calling xmlsec1 failed: '$verify_response '\n " ;
82- unlink " $om -$omdig -$dm -tmp.xml" ;
79+ SKIP: {
80+ skip " xmlsec1 not installed" , 2 unless $xmlsec -> {installed };
81+ skip " xmlsec version 1.2.27 minimum for GCM" , 2 if ! $xmlsec -> {aes_gcm };
82+ ok( open XML, ' >' , " $om -$omdig -$dm -tmp.xml" );
83+ print XML $encrypted ;
84+ close XML;
85+ my $verify_response = ` xmlsec1 --decrypt $lax_key_search --privkey-pem t/sign-private.pem $om -$omdig -$dm -tmp.xml 2>&1` ;
86+ ok( $verify_response =~ m / XML-SIG_1/ , " Successfully decrypted with xmlsec1" )
87+ or warn " calling xmlsec1 failed: '$verify_response '\n " ;
88+ unlink " $om -$omdig -$dm -tmp.xml" ;
89+ }
90+ ok($encrypter -> decrypt($encrypted ) =~ / XML-SIG_1/ , " Successfully Decrypted with XML::Enc" );
91+ }
8392 }
84- ok($encrypter -> decrypt($encrypted ) =~ / XML-SIG_1/ , " Successfully Decrypted with XML::Enc" );
85- }
8693 }
8794}
8895done_testing;
0 commit comments