summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2017-09-07 23:10:25 +0200
committerIlya Etingof <etingof@gmail.com>2017-09-07 23:10:25 +0200
commit5a741f4aa9af1bddf47d7a5a7d46dea443a80319 (patch)
treeecb66298f10ca620b6101efa13822c5ad3c13708
parentfd581c9becc475760314703760dbf06777b11d43 (diff)
parent0f143f8e59e656e05cd480613330732336ca9ef3 (diff)
downloadpyasn1-git-5a741f4aa9af1bddf47d7a5a7d46dea443a80319.tar.gz
Merge branch 'open-types-support' of github.com:etingof/pyasn1 into open-types-support
-rw-r--r--CHANGES.rst5
-rw-r--r--pyasn1/codec/ber/decoder.py12
2 files changed, 17 insertions, 0 deletions
diff --git a/CHANGES.rst b/CHANGES.rst
index 065ac18..a569c5d 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -4,6 +4,11 @@ Revision 0.4.1, released XX-09-2017
- ANY DEFINED BY clause support implemented
+Revision 0.3.3, released XX-08-2017
+-----------------------------------
+
+- ANY DEFINED BY clause support implemented
+
Revision 0.3.4, released 07-09-2017
-----------------------------------
diff --git a/pyasn1/codec/ber/decoder.py b/pyasn1/codec/ber/decoder.py
index 58c45aa..a599bef 100644
--- a/pyasn1/codec/ber/decoder.py
+++ b/pyasn1/codec/ber/decoder.py
@@ -505,6 +505,18 @@ class UniversalConstructedTypeDecoder(AbstractConstructedDecoder):
)
asn1Object.setComponentByName(holeName, component, matchTags=False, matchConstraints=False)
+ if namedTypes:
+ for holeName, governingName, typesMap in namedTypes.holes:
+ holeComponent = asn1Object[holeName]
+ if holeComponent.isValue:
+ governingComponent = asn1Object[governingName]
+ if governingComponent in typesMap:
+ component, rest = decodeFun(
+ holeComponent.asOctets(),
+ asn1Spec=typesMap[governingComponent]
+ )
+ asn1Object.setComponentByName(holeName, component, matchTags=False, matchConstraints=False)
+
else:
asn1Object.verifySizeSpec()