Convert-ASN1
view release on metacpan or search on metacpan
examples/ldap-search view on Meta::CPAN
use Convert::ASN1;
use Data::Dumper;
my %scope = qw(base 0 one 1 single 1 sub 2 subtree 2);
my %deref = qw(never 0 search 1 find 2 always 3);
my $search_pdu = Convert::ASN1->new;
$search_pdu->prepare(q(
SEQUENCE {
mesgid INTEGER,
[APPLICATION 3] SEQUENCE {
base STRING,
scope ENUM,
deref ENUM,
sizeLimit INTEGER,
timeLimit INTEGER,
typesOnly BOOLEAN,
filter STRING, -- for test, should be ANY and the var should hold
-- a pre-encoded filter
attrs SEQUENCE OF STRING
}
control [0] SEQUENCE OF SEQUENCE { -- this should be optional but we cannot do that inline
type STRING,
critical BOOLEAN,
value STRING OPTIONAL
}
}
)) or die $search_pdu->error;
$buf = $search_pdu->encode(
mesgid => 3,
base => "cn=base",
scope => $scope{one},
deref => $deref{find},
sizeLimit => 0,
timeLimit => 0,
typesOnly => 0,
filter => "A filter",
attrs => [qw(cn postalAddress)],
control => [
{
examples/tsa3161 view on Meta::CPAN
&dieif(!$ENV{'TSAPolicy'});
my $asn_policyid=&asnfind('TSAPolicyId');
$asn_policyid->encode($ENV{'TSAPolicy'});
&dieif($asn_policyid->error(),"Invalid TSAPolicy syntax");
}
my $tsa_cert;
my $tsa_cert_asn;
my $certDigest;
{ # get certificate
my $filename = $ENV{'TSACertificateFile'} or &dieif(1, "Missing environment variable 'TSACertificateFile'");
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks) = stat $filename;
open TSACERT, "<$filename" or &dieif(1, "cannot open TSACertificateFile '$filename'");
binmode TSACERT;
read TSACERT, $tsa_cert_asn, $size;
close TSACERT;
$certDigest=sha1($tsa_cert_asn);
my $asn_cert=&asnfind('Certificate');
$tsa_cert = $asn_cert->decode( $tsa_cert_asn) or &dieif(1, $asn_cert->error());
}
my $tsa_key;
{ # get key
my $filename = $ENV{'TSAKeyFile'} or &dieif(1, "Missing environment variable 'TSAKeyFile'");;
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks) = stat $filename;
open TSAKEY, "<$filename" or &dieif(1,"cannot open TSAKeyFile '$filename'");
binmode TSAKEY;
my $tsa_key_pem;
read TSAKEY, $tsa_key_pem, $size;
close TSAKEY;
$tsa_key = Crypt::OpenSSL::RSA->new_private_key($tsa_key_pem) or &dieif(1,"TSAKeyFile '$filename' cannot be decoded");
}
# some magic
examples/x509decode view on Meta::CPAN
'2.16.840.1.113730.1.4' => $asn->find('DirectoryString'), # netscape-ca-revocation-url
'2.16.840.1.113730.1.7' => $asn->find('DirectoryString'), # netscape-cert-renewal-url
'2.16.840.1.113730.1.8' => $asn->find('DirectoryString'), # netscape-ca-policy-url
'2.16.840.1.113730.1.12' => $asn->find('DirectoryString'), # netscape-ssl-server-name
'2.16.840.1.113730.1.13' => $asn->find('DirectoryString'), # netscape-comment
);
my $asn_cert = $asn->find('Certificate');
while ( my $filename = shift ) {
my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks) = stat $filename;
open FILE, "<$filename" or die "no such file";
binmode FILE;
my $der_cert;
read FILE, $der_cert, $size;
close FILE;
decodeCert( $der_cert );
}
sub decodeCert {
( run in 2.607 seconds using v1.01-cache-2.11-cpan-5735350b133 )