On 30/9/03 8:01 pm, Paul Bearer <[EMAIL PROTECTED]> wrote:
> Friends,
>
> I am trying to decode a sample subjectAltName extension provided to me in
> base64.
> Here it is:
>
> MDUwMwYDVR0RBCwwKoIMdGVzdDEuaHAuY29tggx0ZXN0Mi5ocC5jb22CDHRlc3QzLmhwLmNvbQ==
>
> Using the x509decode sample script that came with Convert::ASN1, I tried to
> build some
> code to parse this data, but I get the following error:
>
> Modification of a read-only value attempted at
> /opt/perl/lib/site_perl/5.6.1/Convert/ASN1/_decode.pm line 319.
>
> Here is a snippet of code that I am using, any thoughts would be greatly
> appreciated!
>
> -----BEGIN SAMPLE CODE-----
> use Data::Dumper;
> $Data::Dumper::Indent=1;
> $Data::Dumper::Quotekeys=1;
> $Data::Dumper::Useqq=1;
> use MIME::Base64;
> use Math::BigInt;
>
> use Convert::ASN1 qw(:io :debug);
>
> my
> $sanBase64="MDUwMwYDVR0RBCwwKoIMdGVzdDEuaHAuY29tggx0ZXN0Mi5ocC5jb22CDHRlc3QzL
> mhwLmNvbQ==";
>
> my $asn_san = $asn->find('SubjectAltName');
> $binSan = decode_base64($sanBase64);
> decodeSan($binSan);
>
> sub decodeSan() {
> my $der_san = shift;
> my $san = $asn_san->decode($der_san) or die $asn_san->error;
> print Dumper($san);
> }
> -----END SAMPLE CODE-----
One problem might be that the X.509 module is using explicit tagging, and
Convert::ASN1 uses implicit tagging. You'll need to hack the ASN.1
definitions you feed into Convert::ASN1 if this is the case. (I didn't know
about the x509decode script; it might do this already..)
However, if I just try calling Convert::ASN1::asn_dump() on $binSan, which
should just do a dump of the ASN.1 structure, I get a runtime error from
perl: Argument "opTYPE" isn't numeric in array element at
/Library/Perl/Convert/ASN1/Debug.pm line 129.
Passing the same data into dumpasn1 decodes OK, so this might be a bug in
Convert::ASN1.
0 53: SEQUENCE {
2 51: SEQUENCE {
4 3: OBJECT IDENTIFIER '2 5 29 17'
9 44: OCTET STRING, encapsulates {
11 42: SEQUENCE {
13 12: [2] 'test1.hp.com'
27 12: [2] 'test2.hp.com'
41 12: [2] 'test3.hp.com'
: }
: }
: }
: }
(I'm not sure that it really is an octet string encapsulating stuff, so
dumpasn1 could be broken too :-)
Cheers,
Chris