diff options
author | Ilya Etingof <etingof@gmail.com> | 2017-08-28 00:37:59 +0200 |
---|---|---|
committer | Ilya Etingof <etingof@gmail.com> | 2017-08-28 00:37:59 +0200 |
commit | 67893143133a9f76fd98b812df0982017cd05833 (patch) | |
tree | 77486af07527178d0f247dddf8d6d3619054248b /pyasn1/type | |
parent | 1395d4379e8f646839fd2bf52d8a58bc977b3b28 (diff) | |
download | pyasn1-67893143133a9f76fd98b812df0982017cd05833.tar.gz |
fixed CharType(OctetStringType()) instantiation
Diffstat (limited to 'pyasn1/type')
-rw-r--r-- | pyasn1/type/char.py | 69 | ||||
-rw-r--r-- | pyasn1/type/univ.py | 4 |
2 files changed, 32 insertions, 41 deletions
diff --git a/pyasn1/type/char.py b/pyasn1/type/char.py index b95e9a7..155af21 100644 --- a/pyasn1/type/char.py +++ b/pyasn1/type/char.py @@ -53,36 +53,29 @@ class AbstractCharacterString(univ.OctetString): return self._value.encode(self.encoding) except UnicodeEncodeError: raise error.PyAsn1Error( - 'Can\'t encode string \'%s\' with \'%s\' codec' % (self._value, self.encoding) + "Can't encode string '%s' with codec %s" % (self._value, self.encoding) ) def __unicode__(self): - return unicode(self._value) + return self._value def prettyIn(self, value): - if isinstance(value, unicode): - return value - elif isinstance(value, str): - try: + try: + if isinstance(value, unicode): + return value + elif isinstance(value, str): return value.decode(self.encoding) - except (LookupError, UnicodeDecodeError): - raise error.PyAsn1Error( - 'Can\'t decode string \'%s\' with \'%s\' codec' % (value, self.encoding) - ) - elif isinstance(value, (tuple, list)): - try: + elif isinstance(value, (tuple, list)): return self.prettyIn(''.join([chr(x) for x in value])) - except ValueError: - raise error.PyAsn1Error( - 'Bad %s initializer \'%s\'' % (self.__class__.__name__, value) - ) - else: - try: + elif isinstance(value, univ.OctetString): + return value.asOctets().decode(self.encoding) + else: return unicode(value) - except UnicodeDecodeError: - raise error.PyAsn1Error( - 'Can\'t turn object \'%s\' into unicode' % (value,) - ) + + except (UnicodeDecodeError, LookupError): + raise error.PyAsn1Error( + "Can't decode string '%s' with codec %s" % (value, self.encoding) + ) def asOctets(self, padding=True): return str(self) @@ -99,28 +92,26 @@ class AbstractCharacterString(univ.OctetString): return self._value.encode(self.encoding) except UnicodeEncodeError: raise error.PyAsn1Error( - 'Can\'t encode string \'%s\' with \'%s\' codec' % (self._value, self.encoding) + "Can't encode string '%s' with codec %s" % (self._value, self.encoding) ) def prettyIn(self, value): - if isinstance(value, str): - return value - elif isinstance(value, bytes): - try: + try: + if isinstance(value, str): + return value + elif isinstance(value, bytes): return value.decode(self.encoding) - except UnicodeDecodeError: - raise error.PyAsn1Error( - 'Can\'t decode string \'%s\' with \'%s\' codec' % (value, self.encoding) - ) - elif isinstance(value, (tuple, list)): - return self.prettyIn(bytes(value)) - else: - try: + elif isinstance(value, (tuple, list)): + return self.prettyIn(bytes(value)) + elif isinstance(value, univ.OctetString): + return value.asOctets().decode(self.encoding) + else: return str(value) - except (UnicodeDecodeError, ValueError): - raise error.PyAsn1Error( - 'Can\'t turn object \'%s\' into unicode' % (value,) - ) + + except (UnicodeDecodeError, LookupError): + raise error.PyAsn1Error( + "Can't decode string '%s' with codec %s" % (value, self.encoding) + ) def asOctets(self, padding=True): return bytes(self) diff --git a/pyasn1/type/univ.py b/pyasn1/type/univ.py index 98c6204..b9b8fa0 100644 --- a/pyasn1/type/univ.py +++ b/pyasn1/type/univ.py @@ -921,7 +921,7 @@ class OctetString(base.AbstractSimpleAsn1Item): return value.encode(self.encoding) except (LookupError, UnicodeEncodeError): raise error.PyAsn1Error( - 'Can\'t encode string \'%s\' with \'%s\' codec' % (value, self.encoding) + "Can't encode string '%s' with codec %s" % (value, self.encoding) ) elif isinstance(value, (tuple, list)): try: @@ -942,7 +942,7 @@ class OctetString(base.AbstractSimpleAsn1Item): except UnicodeDecodeError: raise error.PyAsn1Error( - 'Can\'t decode string \'%s\' with \'%s\' codec' % (self._value, self.encoding) + "Can't decode string '%s' with codec %s" % (self._value, self.encoding) ) def asOctets(self): |