summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2017-09-10 17:57:08 +0200
committerIlya Etingof <etingof@gmail.com>2017-09-10 17:57:08 +0200
commit9ca6884c92d68e15942539c6126c0e5b00643c41 (patch)
tree9e86864806013068d7278f20039055ae9fe98848
parentc550820832cc8593eed2398e87d27d323dfc39a3 (diff)
downloadpyasn1-git-9ca6884c92d68e15942539c6126c0e5b00643c41.tar.gz
refer to open types by open types, not hole types
-rw-r--r--pyasn1/codec/ber/decoder.py14
-rw-r--r--pyasn1/type/namedtype.py8
-rw-r--r--pyasn1/type/opentype.py (renamed from pyasn1/type/definedby.py)4
-rw-r--r--tests/codec/ber/test_decoder.py54
4 files changed, 38 insertions, 42 deletions
diff --git a/pyasn1/codec/ber/decoder.py b/pyasn1/codec/ber/decoder.py
index f8f0587..73167a2 100644
--- a/pyasn1/codec/ber/decoder.py
+++ b/pyasn1/codec/ber/decoder.py
@@ -511,21 +511,21 @@ class UniversalConstructedTypeDecoder(AbstractConstructedDecoder):
seenIndices.add(idx)
idx += 1
- if namedTypes:
+ if namedTypes and options.get('decodeOpenTypes', False):
if not namedTypes.requiredComponents.issubset(seenIndices):
raise error.PyAsn1Error('ASN.1 object %s has uninitialized components' % asn1Object.__class__.__name__)
for idx, namedType in enumerate(namedTypes.namedTypes):
- if not namedType.definedBy:
+ if not namedType.openType:
continue
governingValue = asn1Object.getComponentByName(
- namedType.definedBy.name
+ namedType.openType.name
)
try:
- asn1Spec = namedType.definedBy[governingValue]
+ asn1Spec = namedType.openType[governingValue]
except KeyError:
continue
@@ -638,15 +638,15 @@ class UniversalConstructedTypeDecoder(AbstractConstructedDecoder):
raise error.PyAsn1Error('ASN.1 object %s has uninitialized components' % asn1Object.__class__.__name__)
for idx, namedType in enumerate(namedTypes.namedTypes):
- if not namedType.definedBy:
+ if not namedType.openType:
continue
governingValue = asn1Object.getComponentByName(
- namedType.definedBy.name
+ namedType.openType.name
)
try:
- asn1Spec = namedType.definedBy[governingValue]
+ asn1Spec = namedType.openType[governingValue]
except KeyError:
continue
diff --git a/pyasn1/type/namedtype.py b/pyasn1/type/namedtype.py
index 69b4422..cba9524 100644
--- a/pyasn1/type/namedtype.py
+++ b/pyasn1/type/namedtype.py
@@ -30,11 +30,11 @@ class NamedType(object):
isOptional = False
isDefaulted = False
- def __init__(self, name, asn1Object, definedBy=None):
+ def __init__(self, name, asn1Object, openType=None):
self.__name = name
self.__type = asn1Object
self.__nameAndType = name, asn1Object
- self.__definedBy = definedBy
+ self.__openType = openType
def __repr__(self):
return '%s(%r, %r)' % (self.__class__.__name__, self.__name, self.__type)
@@ -75,8 +75,8 @@ class NamedType(object):
return self.__type
@property
- def definedBy(self):
- return self.__definedBy
+ def openType(self):
+ return self.__openType
# Backward compatibility
diff --git a/pyasn1/type/definedby.py b/pyasn1/type/opentype.py
index e22d394..9788a56 100644
--- a/pyasn1/type/definedby.py
+++ b/pyasn1/type/opentype.py
@@ -5,10 +5,10 @@
# License: http://pyasn1.sf.net/license.html
#
-__all__ = ['DefinedBy']
+__all__ = ['OpenType']
-class DefinedBy(object):
+class OpenType(object):
"""Create ASN.1 type map indexed by a value
The *DefinedBy* object models the ASN.1 *DEFINED BY* clause which maps
diff --git a/tests/codec/ber/test_decoder.py b/tests/codec/ber/test_decoder.py
index 45cd530..85c71fb 100644
--- a/tests/codec/ber/test_decoder.py
+++ b/tests/codec/ber/test_decoder.py
@@ -10,7 +10,7 @@ try:
except ImportError:
import unittest
-from pyasn1.type import tag, namedtype, univ, char, definedby
+from pyasn1.type import tag, namedtype, opentype, univ, char
from pyasn1.codec.ber import decoder, eoo
from pyasn1.compat.octets import ints2octs, str2octs, null
from pyasn1.error import PyAsn1Error
@@ -825,7 +825,7 @@ class SequenceDecoderWithSchemaTestCase(unittest.TestCase):
class SequenceDecoderWithIntegerHoleTypesTestCase(unittest.TestCase):
def setUp(self):
- definedBy = definedby.DefinedBy(
+ openType = opentype.OpenType(
'id',
[(1, univ.Integer()),
(2, univ.OctetString())]
@@ -833,48 +833,44 @@ class SequenceDecoderWithIntegerHoleTypesTestCase(unittest.TestCase):
self.s = univ.Sequence(
componentType=namedtype.NamedTypes(
namedtype.NamedType('id', univ.Integer()),
- namedtype.NamedType('blob', univ.Any(), definedBy=definedBy)
+ namedtype.NamedType('blob', univ.Any(), openType=openType)
)
)
- # def testChoiceOne(self):
- # s, r = decoder.decode(
- # ints2octs((48, 6, 2, 1, 1, 2, 1, 12)),
- # asn1Spec=self.s
- # )
- # assert not r
- # assert s[0] == 1
- # assert s[1] == ints2octs((2, 1, 12))
- #
- # def testChoiceTwo(self):
- # s, r = decoder.decode(
- # ints2octs((48, 16, 2, 1, 2, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110)),
- # asn1Spec=self.s
- # )
- # assert not r
- # assert s[0] == 1
- # assert s[1] == ints2octs((4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110))
-
- def testChoiceOneResolveHoles(self):
+ def testChoiceOneDecodeHoles(self):
s, r = decoder.decode(
- ints2octs((48, 6, 2, 1, 1, 2, 1, 12)), asn1Spec=self.s
-# TODO
-# resolveHoleTypes=True
+ ints2octs((48, 6, 2, 1, 1, 2, 1, 12)), asn1Spec=self.s,
+ decodeOpenTypes=True
)
assert not r
assert s[0] == 1
assert s[1] == 12
- def testChoiceTwoResolveHoles(self):
+ def testChoiceTwoDecodeHoles(self):
s, r = decoder.decode(
- ints2octs((48, 16, 2, 1, 2, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110)), asn1Spec=self.s
-# TODO
-# resolveHoleTypes = True
+ ints2octs((48, 16, 2, 1, 2, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110)), asn1Spec=self.s,
+ decodeOpenTypes = True
)
assert not r
assert s[0] == 2
assert s[1] == univ.OctetString('quick brown')
+ def testChoiceOneDontDecodeHoles(self):
+ s, r = decoder.decode(
+ ints2octs((48, 6, 2, 1, 1, 2, 1, 12)), asn1Spec=self.s
+ )
+ assert not r
+ assert s[0] == 1
+ assert s[1] == ints2octs((2, 1, 12))
+
+ def testChoiceTwoDontDecodeHoles(self):
+ s, r = decoder.decode(
+ ints2octs((48, 16, 2, 1, 2, 4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110)), asn1Spec=self.s
+ )
+ assert not r
+ assert s[0] == 2
+ assert s[1] == ints2octs((4, 11, 113, 117, 105, 99, 107, 32, 98, 114, 111, 119, 110))
+
class SetDecoderTestCase(unittest.TestCase):
def setUp(self):