summaryrefslogtreecommitdiff
path: root/pyasn1/codec/cer
diff options
context:
space:
mode:
authorelie <elie>2012-06-09 07:48:38 +0000
committerelie <elie>2012-06-09 07:48:38 +0000
commitddb52ae4b68d0c75768de8a3230df70280ffadb3 (patch)
tree0d4f229c18a6b85bf3660e39306e387741a98b79 /pyasn1/codec/cer
parent16c058a0f4e8f2e644269bb938005a06574c32cf (diff)
downloadpyasn1-git-ddb52ae4b68d0c75768de8a3230df70280ffadb3.tar.gz
decoder's recursiveFlag feature generalized as a user callback function
which is passed an uninitialized object recovered from substrate and its uninterpreted payload.
Diffstat (limited to 'pyasn1/codec/cer')
-rw-r--r--pyasn1/codec/cer/decoder.py26
1 files changed, 13 insertions, 13 deletions
diff --git a/pyasn1/codec/cer/decoder.py b/pyasn1/codec/cer/decoder.py
index 44a001d..367feac 100644
--- a/pyasn1/codec/cer/decoder.py
+++ b/pyasn1/codec/cer/decoder.py
@@ -7,35 +7,35 @@ from pyasn1 import error
class BooleanDecoder(decoder.AbstractSimpleDecoder):
protoComponent = univ.Boolean(0)
def valueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length,
- state, decodeFun):
- substrate, rest = substrate[:length], substrate[length:]
- if not substrate:
+ state, decodeFun, substrateFun):
+ head, tail = substrate[:length], substrate[length:]
+ if not head:
raise error.PyAsn1Error('Empty substrate')
- byte = oct2int(substrate[0])
+ byte = oct2int(head[0])
if byte == 0xff:
value = 1
elif byte == 0x00:
value = 0
else:
raise error.PyAsn1Error('Boolean CER violation: %s' % byte)
- return self._createComponent(asn1Spec, tagSet, value), rest
+ return self._createComponent(asn1Spec, tagSet, value), tail
class ObjectIdentifierDecoder(decoder.AbstractSimpleDecoder):
protoComponent = univ.ObjectIdentifier(())
def valueDecoder(self, fullSubstrate, substrate, asn1Spec, tagSet, length,
- state, decodeFun):
- substrate, rest = substrate[:length], substrate[length:]
- if not substrate:
+ state, decodeFun, substrateFun):
+ head, tail = substrate[:length], substrate[length:]
+ if not head:
raise error.PyAsn1Error('Empty substrate')
# Get the first subid
- subId = oct2int(substrate[0])
+ subId = oct2int(head[0])
oid = divmod(subId, 40)
index = 1
- substrateLen = len(substrate)
+ substrateLen = len(head)
while index < substrateLen:
- subId = oct2int(substrate[index])
+ subId = oct2int(head[index])
index = index + 1
if subId == 128:
# ASN.1 spec forbids leading zeros (0x80) in sub-ID OID
@@ -52,11 +52,11 @@ class ObjectIdentifierDecoder(decoder.AbstractSimpleDecoder):
raise error.SubstrateUnderrunError(
'Short substrate for sub-OID past %s' % (oid,)
)
- nextSubId = oct2int(substrate[index])
+ nextSubId = oct2int(head[index])
index = index + 1
subId = (subId << 7) + nextSubId
oid = oid + (subId,)
- return self._createComponent(asn1Spec, tagSet, oid), rest
+ return self._createComponent(asn1Spec, tagSet, oid), tail
tagMap = decoder.tagMap.copy()
tagMap.update({