示例#1
0
    def test_long_object_identifier(self) -> None:
        enc = asn1.Encoder()
        enc.write("39.2.3", asn1.Number.ObjectIdentifier)
        res = enc.output()
        assert res == b"\x06\x03\x8c\x1a\x03"

        enc = asn1.Encoder()
        enc.write("1.39.3", asn1.Number.ObjectIdentifier)
        res = enc.output()
        assert res == b"\x06\x02\x4f\x03"

        enc = asn1.Encoder()
        enc.write("1.2.300000", asn1.Number.ObjectIdentifier)
        res = enc.output()
        assert res == b"\x06\x04\x2a\x92\xa7\x60"
示例#2
0
 def test_set_of(self) -> None:
     enc = asn1.Encoder()
     with enc.enter(asn1.Number.Set):
         enc.write(1)
         enc.write(2)
     res = enc.output()
     assert res == b"\x31\x06\x02\x01\x01\x02\x01\x02"
示例#3
0
 def test_big_negative_numbers(self, value: int) -> None:
     encoder = asn1.Encoder()
     encoder.write(value, asn1.Number.Integer)
     encoded_bytes = encoder.output()
     decoder = asn1.Decoder(encoded_bytes)
     tag, val = decoder.read()
     assert val == value
示例#4
0
 def test_set(self) -> None:
     enc = asn1.Encoder()
     with enc.enter(asn1.Number.Set):
         enc.write(1)
         enc.write(b"foo")
     res = enc.output()
     assert res == b"\x31\x08\x02\x01\x01\x04\x03foo"
示例#5
0
 def test_long_integer(self) -> None:
     enc = asn1.Encoder()
     enc.write(0x0102030405060708090A0B0C0D0E0F)
     res = enc.output()
     assert (
         res
         == b"\x02\x0f\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
     )
示例#6
0
 def test_long_negative_integer(self) -> None:
     enc = asn1.Encoder()
     enc.write(-0x0102030405060708090A0B0C0D0E0F)
     res = enc.output()
     assert (
         res
         == b"\x02\x0f\xfe\xfd\xfc\xfb\xfa\xf9\xf8\xf7\xf6\xf5\xf4\xf3\xf2\xf1\xf1"
     )
示例#7
0
 def test_negative_integer(self) -> None:
     enc = asn1.Encoder()
     enc.write(-1)
     res = enc.output()
     assert res == b"\x02\x01\xff"
示例#8
0
 def test_error_object_identifier(self, value) -> None:
     enc = asn1.Encoder()
     with pytest.raises(asn1.Error):
         enc.write(value, asn1.Number.ObjectIdentifier)
示例#9
0
 def test_error_stack(self) -> None:
     enc = asn1.Encoder()
     with enc.enter(asn1.Number.Sequence):
         with pytest.raises(asn1.Error):
             enc.output()
示例#10
0
 def test_long_tag_length(self) -> None:
     enc = asn1.Encoder()
     enc.write(b"x" * 0xFFFF)
     res = enc.output()
     assert res == b"\x04\x82\xff\xff" + b"x" * 0xFFFF
示例#11
0
 def test_unicode_printable_string(self) -> None:
     enc = asn1.Encoder()
     enc.write("fooé", nr=asn1.Number.PrintableString)
     res = enc.output()
     assert res == b"\x13\x05\x66\x6f\x6f\xc3\xa9"
示例#12
0
 def test_printable_string(self) -> None:
     enc = asn1.Encoder()
     enc.write("foo", nr=asn1.Number.PrintableString)
     res = enc.output()
     assert res == b"\x13\x03foo"
示例#13
0
 def test_twos_complement_boundaries(self, number: int,
                                     result: bytes) -> None:
     enc = asn1.Encoder()
     enc.write(number)
     assert enc.output() == result
示例#14
0
 def test_boolean(self) -> None:
     enc = asn1.Encoder()
     enc.write(True, asn1.Number.Boolean)
     res = enc.output()
     assert res == b"\x01\x01\xff"
示例#15
0
 def test_enumerated(self) -> None:
     enc = asn1.Encoder()
     enc.write(1, asn1.Number.Enumerated)
     res = enc.output()
     assert res == b"\x0a\x01\x01"
示例#16
0
 def test_ipaddress(self) -> None:
     enc = asn1.Encoder()
     enc.write(ipaddress.IPv4Address("127.0.0.1"), asn1.Number.IPAddress)
     res = enc.output()
     assert res == b"\x40\x04\x7f\x00\x00\x01"
示例#17
0
 def test_real_object_identifier(self) -> None:
     enc = asn1.Encoder()
     enc.write("1.2.840.113554.1.2.1.1", asn1.Number.ObjectIdentifier)
     res = enc.output()
     assert res == b"\x06\x0a\x2a\x86\x48\x86\xf7\x12\x01\x02\x01\x01"
示例#18
0
 def test_object_identifier(self) -> None:
     enc = asn1.Encoder()
     enc.write("1.2.3", asn1.Number.ObjectIdentifier)
     res = enc.output()
     assert res == b"\x06\x02\x2a\x03"
示例#19
0
 def test_octet_string(self) -> None:
     enc = asn1.Encoder()
     enc.write(b"foo")
     res = enc.output()
     assert res == b"\x04\x03foo"
示例#20
0
 def test_context(self) -> None:
     enc = asn1.Encoder()
     with enc.enter(1, asn1.Class.Context):
         enc.write(1)
     res = enc.output()
     assert res == b"\xa1\x03\x02\x01\x01"
示例#21
0
 def test_unicode_octet_string(self) -> None:
     enc = asn1.Encoder()
     enc.write("fooé")
     res = enc.output()
     assert res == b"\x04\x05\x66\x6f\x6f\xc3\xa9"
示例#22
0
 def test_application(self) -> None:
     enc = asn1.Encoder()
     with enc.enter(1, asn1.Class.Application):
         enc.write(1)
     res = enc.output()
     assert res == b"\x61\x03\x02\x01\x01"
示例#23
0
 def test_null(self) -> None:
     enc = asn1.Encoder()
     enc.write(None)
     res = enc.output()
     assert res == b"\x05\x00"
示例#24
0
 def test_private(self) -> None:
     enc = asn1.Encoder()
     with enc.enter(1, asn1.Class.Private):
         enc.write(1)
     res = enc.output()
     assert res == b"\xe1\x03\x02\x01\x01"