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

Reply via email to