1 | BEGIN { $| = 1; print "1..114\n"; } |
1 | BEGIN { $| = 1; print "1..120\n"; } |
2 | |
2 | |
3 | use common::sense; |
3 | use common::sense; |
4 | use Convert::BER::XS ':all'; |
4 | use Convert::BER::XS ':all'; |
5 | |
5 | |
6 | our $test; |
6 | our $test; |
… | |
… | |
33 | ok ($@ =~ $match, "# $@ =~ $match"); |
33 | ok ($@ =~ $match, "# $@ =~ $match"); |
34 | } |
34 | } |
35 | |
35 | |
36 | # extended tags |
36 | # extended tags |
37 | roundtrip "1f020105", [ASN_UNIVERSAL, ASN_INTEGER, 0, 5], "020105"; |
37 | roundtrip "1f020105", [ASN_UNIVERSAL, ASN_INTEGER, 0, 5], "020105"; |
|
|
38 | |
|
|
39 | # padding |
38 | roundtrip "1f80020105", [ASN_UNIVERSAL, ASN_INTEGER, 0, 5], "020105"; |
40 | roundtrip "020100", [ASN_UNIVERSAL, ASN_INTEGER, 0, 0]; |
|
|
41 | roundtrip "0201ff", [ASN_UNIVERSAL, ASN_INTEGER, 0, -1]; |
|
|
42 | fail "0202ffff", "X.690 8.3.2"; |
|
|
43 | fail "02020001", "X.690 8.3.2"; |
|
|
44 | fail "0208ffffffffffffffff", "X.690 8.3.2"; |
39 | |
45 | |
40 | # types |
46 | # types |
41 | roundtrip "020105", [ASN_UNIVERSAL, ASN_INTEGER, 0, 5]; |
47 | roundtrip "020105", [ASN_UNIVERSAL, ASN_INTEGER, 0, 5]; |
42 | roundtrip "0201ff", [ASN_UNIVERSAL, ASN_INTEGER, 0, -1]; |
48 | roundtrip "0201ff", [ASN_UNIVERSAL, ASN_INTEGER, 0, -1]; |
43 | roundtrip "020200ff", [ASN_UNIVERSAL, ASN_INTEGER, 0, 255]; |
49 | roundtrip "020200ff", [ASN_UNIVERSAL, ASN_INTEGER, 0, 255]; |
44 | roundtrip "0204ffffffff", [ASN_UNIVERSAL, ASN_INTEGER, 0, -1], "0201ff"; |
|
|
45 | roundtrip "020500ffffffff", [ASN_UNIVERSAL, ASN_INTEGER, 0, 4294967295]; |
50 | roundtrip "020500ffffffff", [ASN_UNIVERSAL, ASN_INTEGER, 0, 4294967295]; |
46 | roundtrip "020488776655", [ASN_UNIVERSAL, ASN_INTEGER, 0, -2005440939]; |
51 | roundtrip "020488776655", [ASN_UNIVERSAL, ASN_INTEGER, 0, -2005440939]; |
47 | roundtrip "02050088776655", [ASN_UNIVERSAL, ASN_INTEGER, 0, 2289526357]; |
52 | roundtrip "02050088776655", [ASN_UNIVERSAL, ASN_INTEGER, 0, 2289526357]; |
48 | |
53 | |
49 | # 64 bit tests, clunky |
54 | # 64 bit tests, clunky |
50 | if (8 == length pack "j", 0) { |
55 | if (8 == length pack "j", 0) { |
51 | roundtrip "0208ffffffffffffffff", [ASN_UNIVERSAL, ASN_INTEGER, 0, -1], "0201ff"; |
56 | roundtrip "0208feffffffffffffff", [ASN_UNIVERSAL, ASN_INTEGER, 0, -72057594037927937]; |
52 | roundtrip "020900ffffffffffffffff", [ASN_UNIVERSAL, ASN_INTEGER, 0, 18446744073709551615]; |
57 | roundtrip "020900ffffffffffffffff", [ASN_UNIVERSAL, ASN_INTEGER, 0, 18446744073709551615]; |
53 | roundtrip "0209007fffffffffffffff", [ASN_UNIVERSAL, ASN_INTEGER, 0, 9223372036854775807], "02087fffffffffffffff"; |
58 | roundtrip "02087fffffffffffffff", [ASN_UNIVERSAL, ASN_INTEGER, 0, 9223372036854775807]; |
54 | roundtrip "0209008fffffffffffffff", [ASN_UNIVERSAL, ASN_INTEGER, 0, 10376293541461622783], "0209008fffffffffffffff"; |
59 | roundtrip "0209008fffffffffffffff", [ASN_UNIVERSAL, ASN_INTEGER, 0, 10376293541461622783]; |
55 | } else { |
60 | } else { |
56 | ok (1) for 1 .. 2 * 3; |
61 | ok (1) for 1 .. 2 * 3; |
57 | } |
62 | } |
58 | |
63 | |
59 | roundtrip "010100", [ASN_UNIVERSAL, ASN_BOOLEAN, 0, 0]; |
64 | roundtrip "010100", [ASN_UNIVERSAL, ASN_BOOLEAN, 0, 0]; |