In b8facb385234ae7a2b69d6cadbb7d795f3c9c6f0: non-blocker, just an idea to simplify it:
diff --git a/test/functional/test_framework/crypto/chach
a20.py b/test/functional/test_framework/crypto/chacha20.
py
index b45acd6463..de4d898921 100644
--- a/test/functional/test_framework/crypto/chacha20.py
+++ b/test/functional/test_framework/crypto/chacha20.py
@@ -48,14 +48,11 @@ def chacha20_block(key, nonce, cnt):
Takes as input a 32-byte key, 12-byte nonce, and 32-bit integer counter.
"""
# Initial state.
- init = [0 for _ in range(16)]
- for i in range(4):
- init[i] = CHACHA20_CONSTANTS[i]
- for i in range(8):
- init[4 + i] = int.from_bytes(key[4 * i:4 * (i+1)], 'little')
- init[12] = cnt
- for i in range(3):
- init[13 + i] = int.from_bytes(nonce[4 * i:4 * (i+1)], 'little')
+ init = [0] * 16
+ state[:4] = CHACHA20_CONSTANTS[:4]
+ state[4:12] = [int.from_bytes(key[i:i+4], 'little') for i in range(0, 32, 4)]
+ state[12] = cnt
+ state[13:16] = [int.from_bytes(nonce[i:i+4], 'little') for i in range(0, 12, 4)]
# Perform 20 rounds.
state = list(init)
for _ in range(10):