summaryrefslogtreecommitdiff
path: root/pyasn1
diff options
context:
space:
mode:
authorelie <elie>2013-08-03 19:52:22 +0000
committerelie <elie>2013-08-03 19:52:22 +0000
commitea6cda4014d4db683ee42c0d101bbf93ff678cf0 (patch)
tree809c915cd624a0cc51a7203515cac69c253bcc2d /pyasn1
parentda66cd7d7da700019f3e057c76e5e5034451f0e2 (diff)
downloadpyasn1-ea6cda4014d4db683ee42c0d101bbf93ff678cf0.tar.gz
unicode initializer support added to OctetString type and derivatives
Diffstat (limited to 'pyasn1')
-rw-r--r--pyasn1/type/univ.py20
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):