#!perl -w
dumpasn1_available run_dumpasn1
certificate_chain_ok)
;
my
$stdout
=
""
;
run_perl_script_ok(catfile(
"examples"
,
"make-crls.pl"
),
\
$stdout
,
"make-cert-chain.pl runs without errors"
);
my
@crls
=
$stdout
=~ m/(-+BEGIN\ X509\ CRL-+$
.*?
^-+END\ X509\ CRL-+$)/gmsx;
is(
scalar
(
@crls
), 2,
"make-crls.pl produced 2 CRLs on standard output"
)
or
die
"No point in testing anything else..."
;
my
(
$crlv2
,
$deltacrl
) =
@crls
;
my
$crlnumber_decimal
=
"1271270613000041655817448348132275889066893754095"
;
{
my
(
$crldump
,
$err
) =
run_thru_openssl(
$crlv2
,
qw(crl -noout -text)
);
is($?, 0,
"``openssl crl'' ran successfully"
)
or
die
$err
;
like(
$crldump
,
qr/last update:.*2007/
i);
like(
$crldump
,
qr/next update:.*2057/
i);
like(
$crldump
,
qr/$crlnumber_decimal/
);
like(
$crldump
,
qr/CRL Number.*critical/
i);
like(
$crldump
,
qr/deltacrl\.crl/
);
my
%crlentries
= parse_crl_entries(
$crldump
);
like(
$crlentries
{
"10"
},
qr/Feb 12/
,
"revocation dates"
);
like(
$crlentries
{
"11"
},
qr/unspecified/
i);
like(
$crlentries
{
"12"
},
qr/key.*compromise/
i);
like(
$crlentries
{
"12"
},
qr/Invalidity Date/
i);
like(
$crlentries
{
"42"
},
qr/hold/
i);
}
{
my
(
$crldump
,
$err
) =
run_thru_openssl(
$deltacrl
,
qw(crl -noout -text)
);
is($?, 0,
"``openssl crl'' ran successfully on delta-CRL"
)
or
die
$err
;
like(
$crldump
,
qr/last update:.*2007/
i);
like(
$crldump
,
qr/next update:.*2057/
i);
like(
$crldump
,
qr/delta CRL.*critical.*\n.*$crlnumber_decimal/
i);
my
%crlentries
= parse_crl_entries(
$crldump
);
like(
$crlentries
{
"42"
},
qr/remove|8/
i);
like(
$crlentries
{
"DEADBEEFDEAFF00F"
},
qr/2007/
i);
}
sub
parse_crl_entries {
my
(
$crldump
) =
@_
;
my
@crlentries
=
split
m/Serial Number: /,
$crldump
;
shift
(
@crlentries
);
my
%crlentries
;
for
(
@crlentries
) {
if
(! m/^([0-9A-F]+)(.*)$/si) {
fail(
"Incorrect CRL entry\n$_\n"
);
next
;
}
$crlentries
{
uc
($1)} = $2;
}
return
%crlentries
;
}