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