diff options
author | elie <elie> | 2013-08-03 19:52:22 +0000 |
---|---|---|
committer | elie <elie> | 2013-08-03 19:52:22 +0000 |
commit | ea6cda4014d4db683ee42c0d101bbf93ff678cf0 (patch) | |
tree | 809c915cd624a0cc51a7203515cac69c253bcc2d /pyasn1 | |
parent | da66cd7d7da700019f3e057c76e5e5034451f0e2 (diff) | |
download | pyasn1-ea6cda4014d4db683ee42c0d101bbf93ff678cf0.tar.gz |
unicode initializer support added to OctetString type and derivatives
Diffstat (limited to 'pyasn1')
-rw-r--r-- | pyasn1/type/univ.py | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/pyasn1/type/univ.py b/pyasn1/type/univ.py index 58548b4..0ae98be 100644 --- a/pyasn1/type/univ.py +++ b/pyasn1/type/univ.py @@ -304,19 +304,33 @@ class OctetString(base.AbstractSimpleAsn1Item): def prettyIn(self, value): if isinstance(value, str): return value + elif isinstance(value, unicode): + try: + return value.encode(self._encoding) + except UnicodeEncodeError: + raise error.PyAsn1Error( + 'Can\'t encode string \'%s\' with \'%s\' codec' % (value, self._encoding) + ) elif isinstance(value, (tuple, list)): try: return ''.join([ chr(x) for x in value ]) except ValueError: raise error.PyAsn1Error( 'Bad OctetString initializer \'%s\'' % (value,) - ) + ) else: return str(value) else: def prettyIn(self, value): if isinstance(value, bytes): return value + elif isinstance(value, str): + try: + return value.encode(self._encoding) + except UnicodeEncodeError: + raise error.PyAsn1Error( + 'Can\'t encode string \'%s\' with \'%s\' codec' % (value, self._encoding) + ) elif isinstance(value, OctetString): return value.asOctets() elif isinstance(value, (tuple, list, map)): @@ -325,14 +339,14 @@ class OctetString(base.AbstractSimpleAsn1Item): except ValueError: raise error.PyAsn1Error( 'Bad OctetString initializer \'%s\'' % (value,) - ) + ) else: try: return str(value).encode(self._encoding) except UnicodeEncodeError: raise error.PyAsn1Error( 'Can\'t encode string \'%s\' with \'%s\' codec' % (value, self._encoding) - ) + ) def fromBinaryString(self, value): |