aboutsummaryrefslogtreecommitdiff
path: root/test/functional/test_framework
diff options
context:
space:
mode:
authorWladimir J. van der Laan <laanwj@gmail.com>2018-12-04 11:28:43 +0100
committerWladimir J. van der Laan <laanwj@gmail.com>2018-12-04 11:28:53 +0100
commit0257062e50ca223b4a097ebfdbe1efabbd361d76 (patch)
tree2d252bf0c0f3ffad74c1a441c7b9a872b8524220 /test/functional/test_framework
parent64fc7c0c1b17a64e81c629254a1384919eb7a1fb (diff)
parent2012d4df23b7b065ccc1dbe596073d98e428fd3d (diff)
downloadbitcoin-0257062e50ca223b4a097ebfdbe1efabbd361d76.tar.xz
Merge #14816: Add CScriptNum decode python implementation in functional suite
2012d4df2 Add CScriptNum decode python implementation in functional suite (Gregory Sanders) Pull request description: I needed this for reasons and thought it'd be good to upsteam it. Tree-SHA512: 6ea89fa2a5f5a7759ba722f2b4ed5cd6423ebfff4e83ac8b8b5c935e6aa479684e626c5f41fa020816d2a9079a99af5564e30808594d5c13e3b51ec9b474926d
Diffstat (limited to 'test/functional/test_framework')
-rw-r--r--test/functional/test_framework/script.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/test/functional/test_framework/script.py b/test/functional/test_framework/script.py
index 2fe44010ba..2c5ba24a6a 100644
--- a/test/functional/test_framework/script.py
+++ b/test/functional/test_framework/script.py
@@ -385,6 +385,22 @@ class CScriptNum:
r[-1] |= 0x80
return bytes([len(r)]) + r
+ @staticmethod
+ def decode(vch):
+ result = 0
+ # We assume valid push_size and minimal encoding
+ value = vch[1:]
+ if len(value) == 0:
+ return result
+ for i, byte in enumerate(value):
+ result |= int(byte) << 8*i
+ if value[-1] >= 0x80:
+ # Mask for all but the highest result bit
+ num_mask = (2**(len(value)*8) - 1) >> 1
+ result &= num_mask
+ result *= -1
+ return result
+
class CScript(bytes):
"""Serialized script