]> Cypherpunks.ru repositories - pyderasn.git/blobdiff - pyderasn.py
BER Boolean support
[pyderasn.git] / pyderasn.py
index 68d67d07e91a746886d22bb629d19a8ae6000f43..a560eda9b8c0d5fc2ac1346230dc12622de28206 100755 (executable)
@@ -843,6 +843,7 @@ class Obj(object):
         "offset",
         "llen",
         "vlen",
+        "bered",
     )
 
     def __init__(
@@ -864,6 +865,7 @@ class Obj(object):
         self.optional = optional
         self.offset, self.llen, self.vlen = _decoded
         self.default = None
+        self.bered = False
 
     @property
     def ready(self):  # pragma: no cover
@@ -1398,10 +1400,14 @@ class Boolean(Obj):
                 offset=offset,
             )
         first_octet = byte2int(v)
+        bered = False
         if first_octet == 0:
             value = False
         elif first_octet == 0xFF:
             value = True
+        elif ctx.get("bered", False):
+            value = True
+            bered = True
         else:
             raise DecodeError(
                 "unacceptable Boolean value",
@@ -1417,6 +1423,7 @@ class Boolean(Obj):
             optional=self.optional,
             _decoded=(offset, 1, 1),
         )
+        obj.bered = bered
         return obj, v[1:]
 
     def __repr__(self):