aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/functional/README.md3
-rw-r--r--test/functional/test_framework/bignum.py44
-rw-r--r--test/functional/test_framework/script.py35
3 files changed, 34 insertions, 48 deletions
diff --git a/test/functional/README.md b/test/functional/README.md
index a9b83076eb..92a2bf36f7 100644
--- a/test/functional/README.md
+++ b/test/functional/README.md
@@ -121,9 +121,6 @@ Utilities for manipulating transaction scripts (originally from python-bitcoinli
#### [key.py](test_framework/key.py)
Test-only secp256k1 elliptic curve implementation
-#### [bignum.py](test_framework/bignum.py)
-Helpers for script.py
-
#### [blocktools.py](test_framework/blocktools.py)
Helper functions for creating blocks and transactions.
diff --git a/test/functional/test_framework/bignum.py b/test/functional/test_framework/bignum.py
deleted file mode 100644
index 529d39c420..0000000000
--- a/test/functional/test_framework/bignum.py
+++ /dev/null
@@ -1,44 +0,0 @@
-#!/usr/bin/env python3
-#
-# Distributed under the MIT software license, see the accompanying
-# file COPYING or http://www.opensource.org/licenses/mit-license.php.
-"""Big number routines.
-
-Functions for converting numbers to MPI format and Bitcoin-specific little
-endian format.
-
-This file is copied from python-bitcoinlib.
-"""
-def bn2mpi(v):
- """Convert number to MPI format, without the sign byte."""
- # The top bit is used to indicate the sign of the number. If there
- # isn't a spare bit in the bit length, add an extension byte.
- have_ext = False
- ext = bytearray()
- if v.bit_length() > 0:
- have_ext = (v.bit_length() & 0x07) == 0
- ext.append(0)
-
- # Is the number negative?
- neg = False
- if v < 0:
- neg = True
- v = -v
-
- # Convert the int to bytes
- v_bin = bytearray()
- bytes_len = (v.bit_length() + 7) // 8
- for i in range(bytes_len, 0, -1):
- v_bin.append((v >> ((i - 1) * 8)) & 0xff)
-
- # Add the sign bit if necessary
- if neg:
- if have_ext:
- ext[0] |= 0x80
- else:
- v_bin[0] |= 0x80
- return ext + v_bin
-
-def bn2vch(v):
- """Convert number to bitcoin-specific little endian format."""
- return bytes(reversed(bn2mpi(v)))
diff --git a/test/functional/test_framework/script.py b/test/functional/test_framework/script.py
index 0dbd521433..f14191fe51 100644
--- a/test/functional/test_framework/script.py
+++ b/test/functional/test_framework/script.py
@@ -9,7 +9,6 @@ This file is modified from python-bitcoinlib.
import hashlib
import struct
-from .bignum import bn2vch
from .messages import (
CTransaction,
CTxOut,
@@ -26,6 +25,40 @@ OPCODE_NAMES = {}
def hash160(s):
return hashlib.new('ripemd160', sha256(s)).digest()
+def bn2vch(v):
+ """Convert number to bitcoin-specific little endian format."""
+ # The top bit is used to indicate the sign of the number. If there
+ # isn't a spare bit in the bit length, add an extension byte.
+ have_ext = False
+ ext = bytearray()
+ if v.bit_length() > 0:
+ have_ext = (v.bit_length() & 0x07) == 0
+ ext.append(0)
+
+ # Is the number negative?
+ neg = False
+ if v < 0:
+ neg = True
+ v = -v
+
+ # Convert the int to bytes
+ v_bin = bytearray()
+ bytes_len = (v.bit_length() + 7) // 8
+ for i in range(bytes_len, 0, -1):
+ v_bin.append((v >> ((i - 1) * 8)) & 0xff)
+
+ # Add the sign bit if necessary
+ if neg:
+ if have_ext:
+ ext[0] |= 0x80
+ else:
+ v_bin[0] |= 0x80
+
+ v_bytes = ext + v_bin
+ # Reverse bytes ordering for LE
+ v_bytes.reverse()
+
+ return bytes(v_bytes)
_opcode_instances = []
class CScriptOp(int):