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 )