aboutsummaryrefslogtreecommitdiff
path: root/scripts/xml-parse-test.pl
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/xml-parse-test.pl')
-rwxr-xr-xscripts/xml-parse-test.pl157
1 files changed, 56 insertions, 101 deletions
diff --git a/scripts/xml-parse-test.pl b/scripts/xml-parse-test.pl
index 713359f6..4811177a 100755
--- a/scripts/xml-parse-test.pl
+++ b/scripts/xml-parse-test.pl
@@ -1,15 +1,6 @@
# $Id$
#
# Test of XML::Simple as a tool for encoding and decoding
-#
-# http://mirin.apnic.net/resourcecerts/wiki/index.php/IR-ISP_Definition
-
-# CMS wrapper for this (not yet written) would look something like:
-#
-# openssl smime -sign -nodetach -outform DER -in foo.xml -out foo.cms \
-# -signer foo.cer -inkey foo.key
-#
-# openssl smime -verify -CApath . -inform DER -in foo.cms -out foo.xml
eval 'exec perl -w -S $0 ${1+"$@"}'
if 0;
@@ -17,6 +8,50 @@ eval 'exec perl -w -S $0 ${1+"$@"}'
use strict;
use XML::Simple;
use Data::Dumper;
+use IPC::Open2;
+
+sub run2 {
+ my $arg = shift;
+ my $i;
+ my $o;
+ my $pid = open2($o, $i, @_)
+ or die("Couldn't run @_");
+ print($i $arg)
+ or die("Couldn't write to @_");
+ close($i)
+ or die("Couldn't close @_");
+ my @res = <$o>;
+ waitpid($pid, 0)
+ or die("Couldn't reap @_");
+ return @res;
+}
+
+my $p7b = "-----BEGIN PKCS7-----\n";
+my $p7e = "-----END PKCS7-----\n";
+
+sub encode {
+ my $arg = shift;
+ my $cer = shift;
+ my $key = shift;
+ my @res = run2($arg, qw(openssl smime -sign -nodetach -outform PEM -signer), $cer, q(-inkey), $key);
+ die("Missing PKCS7 markers")
+ unless $res[0] eq $p7b && $res[@res-1] eq $p7e;
+ return join('', @res[1..@res-2]);
+}
+
+sub decode {
+ my $arg = shift;
+ my $dir = shift;
+ my @res = run2($p7b . $arg . $p7e, qw(openssl smime -verify -inform PEM -CApath), $dir);
+ return join('', @res);
+}
+
+my $xs = XML::Simple->new(KeepRoot => 1,
+ ForceArray => [qw(list_class)],
+ KeyAttr => [qw(header)],
+ NormalizeSpace => 2);
+
+
my @xml = ('
<message version="1">
@@ -91,98 +126,18 @@ my @xml = ('
[Readable text]
</status>
</message>
-');
-
-my $xs = XML::Simple->new(KeepRoot => 1,
- ForceArray => [qw(list_class)],
- KeyAttr => [qw(header)],
- NormalizeSpace => 2);
+');
for my $xml (@xml) {
- my $x = $xs->XMLin($xml);
- my $t = $xs->XMLout($x);
- print("\n###\n", $xml, "\n", Dumper($x), "\n", $t);
+ print("1: ", $xml, "\n");
+ print("2: ", Dumper($xs->XMLin($xml)), "\n");
+ my $cms = encode($xml, "biz-certs/Alice-EE.cer", "biz-certs/Alice-EE.key");
+ print("3: ", $cms, "\n");
+ $xml = decode($cms, "biz-certs");
+ print("4: ", $xml, "\n");
+ print("5: ", Dumper($xs->XMLin($xml)), "\n");
+
+# my $x = $xs->XMLin($xml);
+# my $t = $xs->XMLout($x);
+# print("\n###\n", $xml, "\n", Dumper($x), "\n", $t);
}
-
-__END__
-
-# Test of IPC::Open2
-
-# CMS wrapper for this (not yet written) would look something like:
-#
-# openssl smime -sign -nodetach -outform DER -in foo.xml -out foo.cms \
-# -signer foo.cer -inkey foo.key
-#
-# openssl smime -verify -CApath . -inform DER -in foo.cms -out foo.xml
-
-eval 'exec perl -w -S $0 ${1+"$@"}'
- if 0;
-
-use strict;
-use IPC::Open2;
-
-my $xml = '
- <message version="1">
- <header sender="sender name"
- recipient = "recipient name"
- msg_ref="reference" />
- <list_class ca="ca_name"
- cert_url="url"
- cert_ski="g(ski)"
- cert_serial="serial"
- cert_aki="g(aki)"
- status="keyword" />
- <list_class ca="ca_name"
- cert_url="url"
- cert_ski="g(ski)"
- cert_serial="serial"
- cert_aki="g(aki)"
- status="keyword" />
- <!-- [repeated for each active class where the ISP has resources] -->
- </message>
-';
-
-sub run2 {
- my $arg = shift;
- my $i;
- my $o;
- my $pid = open2($o, $i, @_)
- or die("Couldn't run @_");
- print($i $arg)
- or die("Couldn't write to @_");
- close($i)
- or die("Couldn't close @_");
- my @res = <$o>;
- waitpid($pid, 0)
- or die("Couldn't reap @_");
- return @res;
-}
-
-my $p7b = "-----BEGIN PKCS7-----\n";
-my $p7e = "-----END PKCS7-----\n";
-
-my $dir = "apacheca";
-my $cer = "$dir/ISP4-EE.cer";
-my $key = "$dir/ISP4-EE.key";
-
-sub encode {
- my $arg = shift;
- my @res = run2($arg, qw(openssl smime -sign -nodetach -outform PEM -signer), $cer, q(-inkey), $key);
- die("Missing PKCS7 markers")
- unless $res[0] eq $p7b && $res[@res-1] eq $p7e;
- return join('', @res[1..@res-2]);
-}
-
-sub decode {
- my $arg = shift;
- my @res = run2($p7b . $arg . $p7e, qw(openssl smime -verify -inform PEM -CApath), $dir);
- return join('', @res);
-}
-
-print("1:\n", $xml, "\n");
-
-my $cms = encode($xml);
-
-print("2:\n", $cms, "\n");
-
-print("3:\n", decode($cms), "\n");