Lines Matching refs:cursor
121 my ($cursor, $expected_tag, $optional) = @_;
124 if ($cursor->[1] == 0 && $optional);
126 die $x509, ": ", $cursor->[0], ": ASN.1 data underrun (elem ", $cursor->[1], ")\n"
127 if ($cursor->[1] < 2);
129 my ($tag, $len) = unpack("CC", substr(${$cursor->[2]}, $cursor->[0], 2));
134 die $x509, ": ", $cursor->[0], ": ASN.1 unexpected tag (", $tag,
138 $cursor->[0] += 2;
139 $cursor->[1] -= 2;
141 die $x509, ": ", $cursor->[0], ": ASN.1 long tag\n"
143 die $x509, ": ", $cursor->[0], ": ASN.1 indefinite length\n"
148 die $x509, ": ", $cursor->[0], ": ASN.1 data underrun (len len $l)\n"
149 if ($cursor->[1] < $l);
152 $len = unpack("C", substr(${$cursor->[2]}, $cursor->[0], 1));
154 $len = unpack("n", substr(${$cursor->[2]}, $cursor->[0], 2));
156 $len = unpack("C", substr(${$cursor->[2]}, $cursor->[0], 1)) << 16;
157 $len = unpack("n", substr(${$cursor->[2]}, $cursor->[0] + 1, 2));
159 $len = unpack("N", substr(${$cursor->[2]}, $cursor->[0], 4));
161 die $x509, ": ", $cursor->[0], ": ASN.1 element too long (", $l, ")\n";
164 $cursor->[0] += $l;
165 $cursor->[1] -= $l;
168 die $x509, ": ", $cursor->[0], ": ASN.1 data underrun (", $len, ")\n"
169 if ($cursor->[1] < $len);
171 my $ret = [ $tag, [ $cursor->[0], $len, $cursor->[2] ] ];
172 $cursor->[0] += $len;
173 $cursor->[1] -= $len;
185 my ($cursor) = @_;
186 my ($offset, $len, $data) = @$cursor;
195 my $cursor = [ 0, length($x509_certificate), \$x509_certificate ];
197 my $cert = asn1_extract($cursor, $UNIV | $CONS | $SEQUENCE);