X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=pyderasn.py;h=9006462dd3f2cea556957e81e4dff5aa912208e8;hb=d60aaac3ba56405102d013dc4758667839a8e5ee;hp=ed4071d8dffc5896bd0a92719baeee52220653b4;hpb=529183bf80e4796b3970d18e0fac490cd5865781;p=pyderasn.git diff --git a/pyderasn.py b/pyderasn.py index ed4071d..9006462 100755 --- a/pyderasn.py +++ b/pyderasn.py @@ -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: