From be964cef343716ff80679f2bc828427bc07c5f02 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Sat, 26 May 2018 13:30:39 +0300 Subject: [PATCH] No magic 0x80 constant for length indefinite --- pyderasn.py | 1 + tests/test_pyderasn.py | 27 ++++++++++++++------------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/pyderasn.py b/pyderasn.py index 391ff9e..b668507 100755 --- a/pyderasn.py +++ b/pyderasn.py @@ -603,6 +603,7 @@ TagClassReprs = { } EOC = b"\x00\x00" EOC_LEN = len(EOC) +LENINDEF = b"\x80" # length indefinite mark ######################################################################## diff --git a/tests/test_pyderasn.py b/tests/test_pyderasn.py index c374415..125244f 100644 --- a/tests/test_pyderasn.py +++ b/tests/test_pyderasn.py @@ -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}, -- 2.44.0