aboutsummaryrefslogtreecommitdiff
path: root/pyasn1/codec/ber/encoder.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyasn1/codec/ber/encoder.py')
-rw-r--r--pyasn1/codec/ber/encoder.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/pyasn1/codec/ber/encoder.py b/pyasn1/codec/ber/encoder.py
index ef12bb4..838d446 100644
--- a/pyasn1/codec/ber/encoder.py
+++ b/pyasn1/codec/ber/encoder.py
@@ -16,6 +16,10 @@ __all__ = ['encode']
class AbstractItemEncoder(object):
supportIndefLenMode = 1
+ # An outcome of otherwise legit call `encodeFun(eoo.endOfOctets)`
+ eooIntegerSubstrate = (0, 0)
+ eooOctetsSubstrate = ints2octs(eooIntegerSubstrate)
+
# noinspection PyMethodMayBeStatic
def encodeTag(self, singleTag, isConstructed):
tagClass, tagFormat, tagId = singleTag
@@ -88,11 +92,18 @@ class AbstractItemEncoder(object):
if isOctets:
substrate = ints2octs(header) + substrate
+
+ if not defModeOverride:
+ substrate += self.eooOctetsSubstrate
+
else:
- substrate = ints2octs(header + substrate)
+ substrate = header + substrate
+
+ if not defModeOverride:
+ substrate += self.eooIntegerSubstrate
- if not defModeOverride:
- substrate += encodeFun(eoo.endOfOctets, defMode=defModeOverride)
+ if not isOctets:
+ substrate = ints2octs(substrate)
return substrate