]> Cypherpunks.ru repositories - pyderasn.git/commitdiff
No magic 0x80 constant for length indefinite
authorSergey Matveev <stargrave@stargrave.org>
Sat, 26 May 2018 10:30:39 +0000 (13:30 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Sat, 26 May 2018 10:30:39 +0000 (13:30 +0300)
pyderasn.py
tests/test_pyderasn.py

index 391ff9ea1b456f68d5f761b5be60089220b9d83b..b668507f3a46f9cccdf8d1cfbe3f97ae1cde9826 100755 (executable)
@@ -603,6 +603,7 @@ TagClassReprs = {
 }
 EOC = b"\x00\x00"
 EOC_LEN = len(EOC)
+LENINDEF = b"\x80"  # length indefinite mark
 
 
 ########################################################################
index c3744157344f2db548adb2fada8e5ef36700d904..125244f4aad58d351ab590f57a5551f071541143 100644 (file)
@@ -77,6 +77,7 @@ from pyderasn import InvalidOID
 from pyderasn import InvalidValueType
 from pyderasn import len_decode
 from pyderasn import len_encode
+from pyderasn import LENINDEF
 from pyderasn import NotEnoughData
 from pyderasn import Null
 from pyderasn import NumericString
@@ -613,7 +614,7 @@ class TestBoolean(CommonMixin, TestCase):
         binary().filter(lambda x: not x.startswith(EOC)),
     )
     def test_ber_expl_no_eoc(self, expl, junk):
-        encoded = expl + b"\x80" + Boolean(False).encode()
+        encoded = expl + LENINDEF + Boolean(False).encode()
         with assertRaisesRegex(self, DecodeError, "no EOC"):
             Boolean(expl=expl).decode(encoded + junk, ctx={"bered": True})
         obj, tail = Boolean(expl=expl).decode(
@@ -636,7 +637,7 @@ class TestBoolean(CommonMixin, TestCase):
         for value in values:
             encoded += (
                 expl +
-                b"\x80" +
+                LENINDEF +
                 Boolean(value).encode() +
                 EOC
             )
@@ -1477,7 +1478,7 @@ class TestBitString(CommonMixin, TestCase):
         def chunk_constructed(contents):
             return (
                 tag_encode(form=TagFormConstructed, num=3) +
-                b"\x80" +
+                LENINDEF +
                 b"".join(BitString(content).encode() for content in contents) +
                 EOC
             )
@@ -1501,7 +1502,7 @@ class TestBitString(CommonMixin, TestCase):
         bit_len_expected += chunk_last.bit_len
         encoded_indefinite = (
             tag_encode(form=TagFormConstructed, num=impl) +
-            b"\x80" +
+            LENINDEF +
             b"".join(chunks) +
             chunk_last.encode() +
             EOC
@@ -1568,7 +1569,7 @@ class TestBitString(CommonMixin, TestCase):
         bs = BitString(b"data").encode()
         with self.assertRaises(NotEnoughData) as err:
             BitString().decode(
-                tag_encode(3, form=TagFormConstructed) + b"\x80" + chunks * bs,
+                tag_encode(3, form=TagFormConstructed) + LENINDEF + chunks * bs,
                 offset=offset,
                 decode_path=decode_path,
                 ctx={"bered": True},
@@ -1606,7 +1607,7 @@ class TestBitString(CommonMixin, TestCase):
     def test_ber_indefinite_no_chunks(self, offset, decode_path):
         with assertRaisesRegex(self, DecodeError, "no chunks") as err:
             BitString().decode(
-                tag_encode(3, form=TagFormConstructed) + b"\x80" + EOC,
+                tag_encode(3, form=TagFormConstructed) + LENINDEF + EOC,
                 offset=offset,
                 decode_path=decode_path,
                 ctx={"bered": True},
@@ -1628,7 +1629,7 @@ class TestBitString(CommonMixin, TestCase):
             BitString().decode(
                 (
                     tag_encode(3, form=TagFormConstructed) +
-                    b"\x80" +
+                    LENINDEF +
                     b"".join(chunks) +
                     EOC
                 ),
@@ -1987,7 +1988,7 @@ class TestOctetString(CommonMixin, TestCase):
         def chunk_constructed(contents):
             return (
                 tag_encode(form=TagFormConstructed, num=4) +
-                b"\x80" +
+                LENINDEF +
                 b"".join(OctetString(content).encode() for content in contents) +
                 EOC
             )
@@ -2003,7 +2004,7 @@ class TestOctetString(CommonMixin, TestCase):
                 payload_expected += payload
         encoded_indefinite = (
             tag_encode(form=TagFormConstructed, num=impl) +
-            b"\x80" +
+            LENINDEF +
             b"".join(chunks) +
             EOC
         )
@@ -2052,7 +2053,7 @@ class TestOctetString(CommonMixin, TestCase):
         bs = OctetString(b"data").encode()
         with self.assertRaises(NotEnoughData) as err:
             OctetString().decode(
-                tag_encode(4, form=TagFormConstructed) + b"\x80" + chunks * bs,
+                tag_encode(4, form=TagFormConstructed) + LENINDEF + chunks * bs,
                 offset=offset,
                 decode_path=decode_path,
                 ctx={"bered": True},
@@ -3900,7 +3901,7 @@ class TestAny(CommonMixin, TestCase):
         chunk = Boolean(False, expl=expl).encode()
         encoded = (
             OctetString.tag_default +
-            b"\x80" +
+            LENINDEF +
             b"".join([chunk] * chunks) +
             EOC
         )
@@ -4650,7 +4651,7 @@ class SeqMixing(object):
 
         t, _, lv = tag_strip(seq_encoded)
         _, _, v = len_decode(lv)
-        seq_encoded_lenindef = t + b"\x80" + v + EOC
+        seq_encoded_lenindef = t + LENINDEF + v + EOC
         seq_decoded_lenindef, tail_lenindef = seq.decode(
             seq_encoded_lenindef + tail_junk,
             ctx={"bered": True},
@@ -5260,7 +5261,7 @@ class SeqOfMixing(object):
 
         t, _, lv = tag_strip(obj_encoded)
         _, _, v = len_decode(lv)
-        obj_encoded_lenindef = t + b"\x80" + v + EOC
+        obj_encoded_lenindef = t + LENINDEF + v + EOC
         obj_decoded_lenindef, tail_lenindef = obj.decode(
             obj_encoded_lenindef + tail_junk,
             ctx={"bered": True},