aboutsummaryrefslogtreecommitdiff
path: root/pyasn1/type
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2017-08-28 00:37:59 +0200
committerIlya Etingof <etingof@gmail.com>2017-08-28 00:37:59 +0200
commit67893143133a9f76fd98b812df0982017cd05833 (patch)
tree77486af07527178d0f247dddf8d6d3619054248b /pyasn1/type
parent1395d4379e8f646839fd2bf52d8a58bc977b3b28 (diff)
downloadpyasn1-67893143133a9f76fd98b812df0982017cd05833.tar.gz
fixed CharType(OctetStringType()) instantiation
Diffstat (limited to 'pyasn1/type')
-rw-r--r--pyasn1/type/char.py69
-rw-r--r--pyasn1/type/univ.py4
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):