#!/usr/bin/perl
#
# Test that indefinite length encodings can be decoded
#
BEGIN { require 't/funcs.pl' }
use Convert::ASN1;
my @zz = ( 0, 0 );
print "1..7\n";
btest 1, $asn = Convert::ASN1->new or warn $asn->error;
btest 2, $asn->prepare(q(
GroupOfThis ::= [1] OCTET STRING
GroupOfThat ::= [2] OCTET STRING
Item ::= [3] SEQUENCE {
aGroup GroupOfThis OPTIONAL,
bGroup GroupOfThat OPTIONAL
}
Items ::= [4] SEQUENCE OF Item
List ::= [5] SEQUENCE { list Items }
)) or warn $asn->error;
my $buf = pack( 'C*',
0xa5, 0x80,
0xa4, 0x80,
0xa3, 0x80,
0x81, 0x03, ( ord('A') ) x 3,
@zz,
0xa3, 0x80,
0x82, 0x03, ( ord('B') ) x 3,
@zz,
0xa3, 0x80,
0x81, 0x03, ( ord('C') ) x 3,
0x82, 0x03, ( ord('D') ) x 3,
@zz,
@zz,
@zz,
);
my $nl = $asn->find( 'List' );
my $seq = $nl->decode( $buf ) or warn $asn->error;
btest 3, defined( $seq ) && exists( $seq->{list} );
stest 4, 'AAA', $seq->{list}->[0]->{aGroup};
stest 5, 'BBB', $seq->{list}->[1]->{bGroup};
stest 6, 'CCC', $seq->{list}->[2]->{aGroup};
stest 7, 'DDD', $seq->{list}->[2]->{bGroup};