]> Cypherpunks.ru repositories - pyderasn.git/commitdiff
fulllen and fulloffset useful properties
authorSergey Matveev <stargrave@stargrave.org>
Thu, 12 Jul 2018 20:37:35 +0000 (23:37 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Thu, 12 Jul 2018 20:37:35 +0000 (23:37 +0300)
VERSION
doc/news.rst
pyderasn.py

diff --git a/VERSION b/VERSION
index bd28b9c5c27e0dfa60da94179ec9b23f2be8be0c..c8cfe3959183f8e9a50f83f54cd723f2dc9c252d 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-3.9
+3.10
index aaffcd81dbd5643c6f37cead7292533e9fcd964a..d414284864787e157684ca0c2367fd8285e2025f 100644 (file)
@@ -1,6 +1,12 @@
 News
 ====
 
+.. _release3.10:
+
+3.10
+----
+* Add ``.fulllen`` and ``.fulloffset`` properties for all objects
+
 .. _release3.9:
 
 3.9
index 188e2ac49e1ca06582d2fba6270515461f158940..b15af8d0bbb502b80c2ff1e1d5deaf521279623a 100755 (executable)
@@ -189,9 +189,16 @@ use following properties:
 
 Pay attention that those values do **not** include anything related to
 explicit tag. If you want to know information about it, then use:
-``expled`` (to know if explicit tag is set), ``expl_offset`` (it is
-lesser than ``offset``), ``expl_tlen``, ``expl_llen``, ``expl_vlen``
-(that actually equals to ordinary ``tlvlen``).
+
+* ``expled`` -- to know if explicit tag is set
+* ``expl_offset`` (it is lesser than ``offset``)
+* ``expl_tlen``,
+* ``expl_llen``
+* ``expl_vlen`` (that actually equals to ordinary ``tlvlen``)
+* ``fulloffset`` -- it equals to ``expl_offset`` if explicit tag is set,
+  ``offset`` otherwise
+* ``fulllen`` -- it equals to ``expl_len`` if explicit tag is set,
+  ``tlvlen`` otherwise
 
 When error occurs, :py:exc:`pyderasn.DecodeError` is raised.
 
@@ -1118,6 +1125,14 @@ class Obj(object):
     def expl_tlvlen(self):
         return self.expl_tlen + self.expl_llen + self.expl_vlen
 
+    @property
+    def fulloffset(self):
+        return self.expl_offset if self.expled else self.offset
+
+    @property
+    def fulllen(self):
+        return self.expl_tlvlen if self.expled else self.tlvlen
+
     def pps_lenindef(self, decode_path):
         if self.lenindef:
             yield _pp(
@@ -4530,7 +4545,7 @@ class Sequence(Obj):
                         )
                     value.defined = (defined_by, defined_value)
 
-            value_len = value.expl_tlvlen if value.expled else value.tlvlen
+            value_len = value.fulllen
             vlen += value_len
             sub_offset += value_len
             v = v_tail
@@ -4722,7 +4737,7 @@ class Set(Sequence):
                 decode_path=sub_decode_path,
                 ctx=ctx,
             )
-            value_len = value.expl_tlvlen if value.expled else value.tlvlen
+            value_len = value.fulllen
             sub_offset += value_len
             vlen += value_len
             v = v_tail
@@ -4999,7 +5014,7 @@ class SequenceOf(Obj):
                 decode_path=decode_path + (str(len(_value)),),
                 ctx=ctx,
             )
-            value_len = value.expl_tlvlen if value.expled else value.tlvlen
+            value_len = value.fulllen
             sub_offset += value_len
             vlen += value_len
             v = v_tail