1#!/usr/local/bin/perl 2 3# 4# Test that indefinite length encodings can be decoded 5# 6 7BEGIN { require './t/funcs.pl' } 8 9use Convert::ASN1; 10my @zz = ( 0, 0 ); 11 12print "1..7\n"; 13 14btest 1, $asn = Convert::ASN1->new or warn $asn->error; 15btest 2, $asn->prepare(q( 16 GroupOfThis ::= [1] OCTET STRING 17 GroupOfThat ::= [2] OCTET STRING 18 Item ::= [3] SEQUENCE { 19 aGroup GroupOfThis OPTIONAL, 20 bGroup GroupOfThat OPTIONAL 21 } 22 Items ::= [4] SEQUENCE OF Item 23 List ::= [5] SEQUENCE { list Items } 24)) or warn $asn->error; 25 26my $buf = pack( 'C*', 27 0xa5, 0x80, 28 0xa4, 0x80, 29 0xa3, 0x80, 30 0x81, 0x03, ( ord('A') ) x 3, 31 @zz, 32 0xa3, 0x80, 33 0x82, 0x03, ( ord('B') ) x 3, 34 @zz, 35 0xa3, 0x80, 36 0x81, 0x03, ( ord('C') ) x 3, 37 0x82, 0x03, ( ord('D') ) x 3, 38 @zz, 39 @zz, 40 @zz, 41); 42 43my $nl = $asn->find( 'List' ); 44my $seq = $nl->decode( $buf ) or warn $asn->error; 45btest 3, defined( $seq ) && exists( $seq->{list} ); 46stest 4, 'AAA', $seq->{list}->[0]->{aGroup}; 47stest 5, 'BBB', $seq->{list}->[1]->{bGroup}; 48stest 6, 'CCC', $seq->{list}->[2]->{aGroup}; 49stest 7, 'DDD', $seq->{list}->[2]->{bGroup}; 50