diff options
author | elie <elie> | 2012-12-21 15:04:26 +0000 |
---|---|---|
committer | elie <elie> | 2012-12-21 15:04:26 +0000 |
commit | 72f0854b76d97bca07a28ad90b402373a9b622a6 (patch) | |
tree | a68f092a8180fbf1eefdc744cc2d0becbbb078fb /pyasn1/codec/ber/encoder.py | |
parent | 842d0732adccbd5b78d92d151a34cb3f6a4d878c (diff) | |
download | pyasn1-72f0854b76d97bca07a28ad90b402373a9b622a6.tar.gz |
The compact (valueless) way of encoding zero INTEGERs introduced inrelease_0_1_6_tag
0.1.5 seems to fail miserably as the world is filled with broken
BER decoders. So we had to back off the *encoder* for a while.
There's still the IntegerEncoder.supportCompactZero flag which
enables compact encoding form whenever it evaluates to True.
Diffstat (limited to 'pyasn1/codec/ber/encoder.py')
-rw-r--r-- | pyasn1/codec/ber/encoder.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/pyasn1/codec/ber/encoder.py b/pyasn1/codec/ber/encoder.py index cc0d731..ae26130 100644 --- a/pyasn1/codec/ber/encoder.py +++ b/pyasn1/codec/ber/encoder.py @@ -87,9 +87,15 @@ class BooleanEncoder(AbstractItemEncoder): class IntegerEncoder(AbstractItemEncoder): supportIndefLenMode = 0 + supportCompactZero = False def encodeValue(self, encodeFun, value, defMode, maxChunkSize): if value == 0: # shortcut for zero value - return null, 0 + if self.supportCompactZero: + # this seems to be a correct way for encoding zeros + return null, 0 + else: + # this seems to be a widespread way for encoding zeros + return ints2octs((0,)), 0 octets = [] value = int(value) # to save on ops on asn1 type while 1: |