1
1
use strict;
2
2
use warnings;
3
3
use Test::More tests => 70;
4
+ use Test::Lib;
5
+ use Test::XML::Enc;
4
6
use XML::Enc;
5
7
use MIME::Base64 qw/ decode_base64/ ;
6
- use File::Which;
7
8
use File::Slurper qw/ read_text/ ;
8
9
9
10
my $plaintext = <<'UNENCRYPTED' ;
@@ -41,6 +42,9 @@ my %sesskey = (
41
42
' aes256-gcm' => ' aes-256-GCM' ,
42
43
);
43
44
45
+ my $xmlsec = get_xmlsec_features();
46
+ my $lax_key_search = $xmlsec -> {lax_key_search } ? ' --lax-key-search' : ' ' ;
47
+
44
48
foreach my $km (@key_methods ) {
45
49
foreach my $dm (@data_methods ) {
46
50
@@ -103,13 +107,9 @@ XML Security Library example: Original XML
103
107
CONTENT
104
108
105
109
SKIP: {
106
- skip " xmlsec1 not installed" , 5 unless which( ' xmlsec1 ' ) ;
110
+ skip " xmlsec1 not installed" , 5 unless $xmlsec -> { installed } ;
107
111
skip " xmlsec1 no support for MGF element" , 5 if $km eq ' rsa-oaep' ;
108
- my $version ;
109
- if (` xmlsec1 version` =~ m / (\d +\.\d +\.\d +)/ ) {
110
- $version = $1 ;
111
- };
112
- skip " xmlsec version 1.2.27 minimum for GCM" , 5 if $version lt ' 1.2.27' ;
112
+ skip " xmlsec version 1.2.27 minimum for GCM" , 5 if ! $xmlsec -> {aes_gcm };
113
113
114
114
ok( open XML, ' >' , ' plaintext.xml' );
115
115
print XML $plaintext ;
@@ -120,7 +120,7 @@ SKIP: {
120
120
close ELEMENT;
121
121
122
122
# Encrypt using xmlsec
123
- my $encrypt_response = ` xmlsec1 encrypt --pubkey-cert-pem t/sign-certonly.pem --session-key $sesskey {$dm } --xml-data plaintext.xml --output encrypted-element.xml element_tmpl.xml 2>&1` ;
123
+ my $encrypt_response = ` xmlsec1 encrypt $lax_key_search --pubkey-cert-pem t/sign-certonly.pem --session-key $sesskey {$dm } --xml-data plaintext.xml --output encrypted-element.xml element_tmpl.xml 2>&1` ;
124
124
125
125
my $encrypted = read_text(' encrypted-element.xml' );
126
126
@@ -143,7 +143,7 @@ SKIP: {
143
143
print CONTENT $content_tmpl ;
144
144
close CONTENT;
145
145
146
- $encrypt_response = ` xmlsec1 encrypt --pubkey-cert-pem t/sign-certonly.pem --session-key $sesskey {$dm } --xml-data plaintext.xml --output encrypted-content.xml --node-xpath '/PayInfo/CreditCard/Number' content-template.xml 2>&1` ;
146
+ $encrypt_response = ` xmlsec1 encrypt $lax_key_search --pubkey-cert-pem t/sign-certonly.pem --session-key $sesskey {$dm } --xml-data plaintext.xml --output encrypted-content.xml --node-xpath '/PayInfo/CreditCard/Number' content-template.xml 2>&1` ;
147
147
148
148
$encrypted = read_text(' encrypted-content.xml' );
149
149
0 commit comments