summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorelie <elie>2015-09-10 19:59:23 +0000
committerelie <elie>2015-09-10 19:59:23 +0000
commit8b721d294ab99f55b9ff670b53bc1e5d1920b37c (patch)
tree7b0ac84aa482f319f4122ebeb8124380b523786e
parent3796e0b2b2678be1ad9b40ed0c06c6e19800ce66 (diff)
downloadpyasn1-8b721d294ab99f55b9ff670b53bc1e5d1920b37c.tar.gz
fix to ObjectIdentifier initialization from unicode string
-rw-r--r--CHANGES.txt1
-rw-r--r--pyasn1/compat/octets.py2
-rw-r--r--pyasn1/type/univ.py2
-rw-r--r--test/type/test_univ.py2
4 files changed, 6 insertions, 1 deletions
diff --git a/CHANGES.txt b/CHANGES.txt
index 7a8e0a0..90bd1fc 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -4,6 +4,7 @@ Revision 0.1.9
- Wheel distribution format now supported.
- Extensions added to text files, CVS attic flushed.
- Fix to make uninitilaized pyasn1 objects failing properly on hash().
+- Fix to ObjectIdentifier initialization from unicode string.
Revision 0.1.8, released 22-06-2015
-----------------------------------
diff --git a/pyasn1/compat/octets.py b/pyasn1/compat/octets.py
index f7f2a29..e812737 100644
--- a/pyasn1/compat/octets.py
+++ b/pyasn1/compat/octets.py
@@ -9,6 +9,7 @@ if version_info[0] <= 2:
str2octs = lambda x: x
octs2str = lambda x: x
isOctetsType = lambda s: isinstance(s, str)
+ isStringType = lambda s: isinstance(s, (str, unicode))
else:
ints2octs = bytes
int2oct = lambda x: ints2octs((x,))
@@ -18,3 +19,4 @@ else:
str2octs = lambda x: x.encode()
octs2str = lambda x: x.decode()
isOctetsType = lambda s: isinstance(s, bytes)
+ isStringType = lambda s: isinstance(s, str)
diff --git a/pyasn1/type/univ.py b/pyasn1/type/univ.py
index f4bff81..4ed640f 100644
--- a/pyasn1/type/univ.py
+++ b/pyasn1/type/univ.py
@@ -533,7 +533,7 @@ class ObjectIdentifier(base.AbstractSimpleAsn1Item):
pass
elif isinstance(value, ObjectIdentifier):
return tuple(value)
- elif isinstance(value, str):
+ elif octets.isStringType(value):
r = []
for element in [ x for x in value.split('.') if x != '' ]:
try:
diff --git a/test/type/test_univ.py b/test/type/test_univ.py
index b973164..e8d0a4f 100644
--- a/test/type/test_univ.py
+++ b/test/type/test_univ.py
@@ -284,6 +284,8 @@ class ObjectIdentifier(unittest.TestCase):
assert univ.ObjectIdentifier((1,3,6))==(1,3,6),'prettyIn() fails'
def testInput3(self):
assert univ.ObjectIdentifier(univ.ObjectIdentifier('1.3') + (6,))==(1,3,6),'prettyIn() fails'
+ def testUnicode(self):
+ assert univ.ObjectIdentifier(u'1.3.6') == (1,3,6), 'unicode init fails'
def testTag(self):
assert univ.ObjectIdentifier().getTagSet() == tag.TagSet(
(),