]> Cypherpunks.ru repositories - pyderasn.git/blobdiff - pyderasn.py
Strict PrintableString sanitizing
[pyderasn.git] / pyderasn.py
index 1690ab087e8be7d2c69ccb22756fd42d584b1022..9a8ccddfa319df841e98a94ac4950f9b6f308c3d 100755 (executable)
@@ -542,6 +542,7 @@ from collections import OrderedDict
 from datetime import datetime
 from math import ceil
 from os import environ
+from string import ascii_letters
 from string import digits
 
 from six import add_metaclass
@@ -3511,6 +3512,13 @@ class PrintableString(CommonString):
     tag_default = tag_encode(19)
     encoding = "ascii"
     asn1_type_name = "PrintableString"
+    allowable_chars = set((ascii_letters + digits + " '()+,-./:=?").encode("ascii"))
+
+    def _value_sanitize(self, value):
+        value = super(PrintableString, self)._value_sanitize(value)
+        if not set(value) <= self.allowable_chars:
+            raise DecodeError("non-printable value")
+        return value
 
 
 class TeletexString(CommonString):