|
Packit |
ef9df4 |
#!/usr/local/bin/perl
|
|
Packit |
ef9df4 |
|
|
Packit |
ef9df4 |
#
|
|
Packit |
ef9df4 |
# Misc tests from github reported issues
|
|
Packit |
ef9df4 |
#
|
|
Packit |
ef9df4 |
|
|
Packit |
ef9df4 |
use Convert::ASN1;
|
|
Packit |
ef9df4 |
BEGIN { require 't/funcs.pl' }
|
|
Packit |
ef9df4 |
|
|
Packit |
ef9df4 |
print "1..2\n";
|
|
Packit |
ef9df4 |
|
|
Packit |
ef9df4 |
{ # github issue 8
|
|
Packit |
ef9df4 |
|
|
Packit |
ef9df4 |
my $hexdata = "30 53 30 51 30 4f 30 4d 30 4b 30 09 06 05 2b 0e
|
|
Packit |
ef9df4 |
03 02 1a 05 00 04 14 a0 72 0e a0 6a 7c 62 02 54
|
|
Packit |
ef9df4 |
f2 a8 f5 9d d2 7b a4 f3 b7 2f a4 04 14 b0 b0 4a
|
|
Packit |
ef9df4 |
fd 1c 75 28 f8 1c 61 aa 13 f6 fa c1 90 3d 6b 16
|
|
Packit |
ef9df4 |
a3 02 12 11 21 bc 57 28 6f 30 08 db 49 63 f6 ae
|
|
Packit |
ef9df4 |
89 3a de f6 d1 ff e0";
|
|
Packit |
ef9df4 |
$hexdata =~ s/ //g;
|
|
Packit |
ef9df4 |
$hexdata =~ s/\n//g;
|
|
Packit |
ef9df4 |
|
|
Packit |
ef9df4 |
# parse ASN.1 descriptions
|
|
Packit |
ef9df4 |
my $asn = Convert::ASN1->new;
|
|
Packit |
ef9df4 |
$asn->prepare(<<ASN1) or die "prepare: ", $asn->error;
|
|
Packit |
ef9df4 |
OCSPRequest ::= SEQUENCE {
|
|
Packit |
ef9df4 |
tbsRequest TBSRequest,
|
|
Packit |
ef9df4 |
optionalSignature [0] EXPLICIT ANY OPTIONAL }
|
|
Packit |
ef9df4 |
|
|
Packit |
ef9df4 |
TBSRequest ::= SEQUENCE {
|
|
Packit |
ef9df4 |
version [0] EXPLICIT INTEGER OPTIONAL,
|
|
Packit |
ef9df4 |
requestorName [1] EXPLICIT ANY OPTIONAL,
|
|
Packit |
ef9df4 |
requestList SEQUENCE OF Request,
|
|
Packit |
ef9df4 |
requestExtensions [2] EXPLICIT ANY OPTIONAL }
|
|
Packit |
ef9df4 |
|
|
Packit |
ef9df4 |
Request ::= SEQUENCE {
|
|
Packit |
ef9df4 |
reqCert CertID,
|
|
Packit |
ef9df4 |
singleRequestExtensions [0] EXPLICIT ANY OPTIONAL }
|
|
Packit |
ef9df4 |
|
|
Packit |
ef9df4 |
CertID ::= SEQUENCE {
|
|
Packit |
ef9df4 |
hashAlgorithm ANY,
|
|
Packit |
ef9df4 |
issuerNameHash OCTET STRING, -- Hash of Issuer's DN
|
|
Packit |
ef9df4 |
issuerKeyHash OCTET STRING, -- Hash of Issuers public key
|
|
Packit |
ef9df4 |
serialNumber INTEGER }
|
|
Packit |
ef9df4 |
ASN1
|
|
Packit |
ef9df4 |
|
|
Packit |
ef9df4 |
my $asn_ocspreq = $asn->find('OCSPRequest');
|
|
Packit |
ef9df4 |
|
|
Packit |
ef9df4 |
my $OCSPREQDER = pack("H*", $hexdata);
|
|
Packit |
ef9df4 |
|
|
Packit |
ef9df4 |
my $ocspreq = $asn_ocspreq->decode($OCSPREQDER);
|
|
Packit |
ef9df4 |
my $err = $asn_ocspreq->error;
|
|
Packit |
ef9df4 |
$err =~ s/ at .*line \d.*//s if $err;
|
|
Packit |
ef9df4 |
stest 1, "decode error 85 87", $err;
|
|
Packit |
ef9df4 |
|
|
Packit |
ef9df4 |
btest 2, !!$asn_ocspreq->decode(substr($OCSPREQDER, 0, -2));
|
|
Packit |
ef9df4 |
|
|
Packit |
ef9df4 |
}
|
|
Packit |
ef9df4 |
|
|
Packit |
ef9df4 |
|