]> Cypherpunks.ru repositories - pyderasn.git/blobdiff - pyderasn.py
Fix browser style breakage
[pyderasn.git] / pyderasn.py
index 4b690f72b1ed1ec2c1c20e59b6f3acdd7620f262..e08f6bad3a090204af25441d78c285fec6521034 100755 (executable)
@@ -4,7 +4,7 @@
 # pylint: disable=line-too-long,superfluous-parens,protected-access,too-many-lines
 # pylint: disable=too-many-return-statements,too-many-branches,too-many-statements
 # PyDERASN -- Python ASN.1 DER/CER/BER codec with abstract structures
-# Copyright (C) 2017-2020 Sergey Matveev <stargrave@stargrave.org>
+# Copyright (C) 2017-2021 Sergey Matveev <stargrave@stargrave.org>
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU Lesser General Public License as
@@ -17,9 +17,9 @@
 #
 # You should have received a copy of the GNU Lesser General Public
 # License along with this program.  If not, see <http://www.gnu.org/licenses/>.
-"""Python ASN.1 DER/BER codec with abstract structures
+"""Python ASN.1 DER/CER/BER codec with abstract structures
 
-This library allows you to marshal various structures in ASN.1 DER
+This library allows you to marshal various structures in ASN.1 DER/CER
 format, unmarshal BER/CER/DER ones.
 
     >>> i = Integer(123)
@@ -355,6 +355,11 @@ Let's parse that output, human::
  (and its derivatives), ``SET``, ``SET OF``, ``UTCTime``, ``GeneralizedTime``
  could be BERed.
 
+Also it could be helpful to add quick ASN.1 pprinting command in your
+pdb's configuration file::
+
+    alias pp1 import pyderasn ;; print(pyderasn.pprint(%1, oid_maps=(locals().get("OID_STR_TO_NAME", {}),)))
+
 .. _definedby:
 
 DEFINED BY
@@ -765,7 +770,7 @@ forcefully encoded in DER during CER encoding, by specifying
 
     class SignedAttributes(SetOf):
         schema = Attribute()
-        bounds = (1, 32)
+        bounds = (1, float("+inf"))
         der_forced = True
 
 .. _agg_octet_string:
@@ -1199,7 +1204,7 @@ except ImportError:  # pragma: no cover
     def colored(what, *args, **kwargs):
         return what
 
-__version__ = "8.1"
+__version__ = "8.4"
 
 __all__ = (
     "agg_octet_string",
@@ -7670,7 +7675,7 @@ def browse(raw, obj, oid_maps=()):
                 self._state_update()
             return super(TW, self).selectable()
 
-        def get_display_text(self):
+        def _get_display_text_without_offset(self):
             pp, constructed = self._get_pp()
             style = "constructed" if constructed else ""
             if len(pp.decode_path) == 0:
@@ -7688,6 +7693,11 @@ def browse(raw, obj, oid_maps=()):
                 ))
             return (style, ent)
 
+        def get_display_text(self):
+            pp, _ = self._get_pp()
+            style, ent = self._get_display_text_without_offset()
+            return [(style, ent), " [%d]" % pp.offset]
+
         def _scroll(self, what, step):
             self.state[what]._invalidate()
             pos = self.state[what].focus_position