#!/usr/bin/perl
use Convert::ASN1 qw(:tag);
use Digest::MD5 qw(md5);
use MIME::Base64;
use Data::Dumper;
$oid=shift;
my $asn=Convert::ASN1->new;
$asn->prepare("oid OBJECT IDENTIFIER");
$encoded=$asn->encode(oid => $oid);
Convert::ASN1::asn_dump($encoded);
print Dumper($asn->decode($encoded));
@entries=unpack("C*",$encoded);
print "DER representation: ";
foreach $entry (@entries) {
print "\\x";
printf "%02X",$entry;
}
print "\n";
$digest = md5($encoded);
# We only want the first 10 characters;
# Conversations with the authors suggest that we want to use all of the
# characters of the digest.
#$digest = substr($digest,0,10);
print "gsskeyex representation: ",encode_base64($digest),"\n";
sub encode_object_id {
$string="";
my @data = ($_[0] =~ /(\d+)/g);
if(@data < 2) {
@data = (0);
}
else {
my $first = $data[1] + ($data[0] * 40);
splice(@data,0,2,$first);
}
# my $l = length $string;
$string .= pack("cw*", 0, @data);
# substr($string,$l,1) = asn_encode_length(length($string) - $l - 1);
return $string;
}
syntax highlighted by Code2HTML, v. 0.9.1