Crypt-OpenSSL-CA

 view release on metacpan or  search on metacpan

t/example-make-crls.t  view on Meta::CPAN


=cut

{
  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_bigint($crldump, $crl_serial);
  like($crldump, qr/CRL Number.*critical/i);
  # Right now OpenSSL cannot parse freshest CRL indicator:
  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);
}

=pod

=head2 Delta CRL tests

=cut

{
  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);

  fail "CRL Number not found" unless $crldump =~ qr/CRL Number:.*critical.*\n\s*([0-9a-fx:]+)/i;
  like_bigint($1, $crl_serial + 1);
  fail "delta CRL not found" unless $crldump =~ qr/delta CRL.*critical.*\n\s*([0-9a-fx:]+)/i;
  like_bigint($1, $crl_serial);

  my %crlentries = parse_crl_entries($crldump);

  # As of version 0.9.8c, OpenSSL doesn't know about
  # reason "remove" (which is 8 in RFC3280 section 5.3.1):
  like($crlentries{"42"}, qr/remove|8/i);
  like($crlentries{"DEADBEEFDEAFF00F"}, qr/2007/i);
}

done_testing;

=head1 HELPER FUNCTIONS

=cut

sub parse_crl_entries {
  my ($crldump) = @_;
  my @crlentries = split m/Serial Number: /, $crldump;
  shift(@crlentries); # Leading garbage
  my %crlentries;
  for(@crlentries) {
    if (! m/^([0-9A-F]+)(.*)$/si) {
      fail("Incorrect CRL entry\n$_\n");
      next;
    }
    $crlentries{uc($1)} = $2;
  }
  return %crlentries;
}



( run in 0.674 second using v1.01-cache-2.11-cpan-71847e10f99 )