]> Cypherpunks.ru repositories - pyderasn.git/blobdiff - pyderasn.py
Omit extra EOC for ANY with indefinite length encoded DEFINED BY
[pyderasn.git] / pyderasn.py
index ed4071d8dffc5896bd0a92719baeee52220653b4..9006462dd3f2cea556957e81e4dff5aa912208e8 100755 (executable)
@@ -958,16 +958,16 @@ class Obj(object):
         """
         raise NotImplementedError()
 
+    def _assert_ready(self):
+        if not self.ready:
+            raise ObjNotReady(self.__class__.__name__)
+
     @property
     def bered(self):
         """Is either object or any elements inside is BER encoded?
         """
         return self.expl_lenindef or self.lenindef or self.ber_encoded
 
-    def _assert_ready(self):
-        if not self.ready:
-            raise ObjNotReady(self.__class__.__name__)
-
     @property
     def decoded(self):
         """Is object decoded?
@@ -1170,7 +1170,10 @@ class Obj(object):
         return self.expl_tlvlen if self.expled else self.tlvlen
 
     def pps_lenindef(self, decode_path):
-        if self.lenindef:
+        if self.lenindef and not (
+            getattr(self, "defined", None) is not None and
+            self.defined[1].lenindef
+        ):
             yield _pp(
                 asn1_type_name="EOC",
                 obj_name="",
@@ -3998,8 +4001,6 @@ class Choice(Obj):
             _decoded=(offset, 0, value.fulllen),
         )
         obj._value = (choice, value)
-        obj.lenindef = value.lenindef
-        obj.ber_encoded = value.ber_encoded
         return obj, tail
 
     def __repr__(self):
@@ -4023,8 +4024,6 @@ class Choice(Obj):
             llen=self.llen,
             vlen=self.vlen,
             expl_lenindef=self.expl_lenindef,
-            lenindef=self.lenindef,
-            ber_encoded=self.ber_encoded,
             bered=self.bered,
         )
         if self.ready: