summaryrefslogtreecommitdiff
path: root/docs/development/custom-vectors/arc4/generate_arc4.py
diff options
context:
space:
mode:
Diffstat (limited to 'docs/development/custom-vectors/arc4/generate_arc4.py')
-rw-r--r--docs/development/custom-vectors/arc4/generate_arc4.py51
1 files changed, 30 insertions, 21 deletions
diff --git a/docs/development/custom-vectors/arc4/generate_arc4.py b/docs/development/custom-vectors/arc4/generate_arc4.py
index 3dee44a30..2ca85c98d 100644
--- a/docs/development/custom-vectors/arc4/generate_arc4.py
+++ b/docs/development/custom-vectors/arc4/generate_arc4.py
@@ -12,10 +12,14 @@ from cryptography.hazmat.primitives.ciphers import algorithms
_RFC6229_KEY_MATERIALS = [
- (True,
- 8 * '0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20'),
- (False,
- 8 * '1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a')
+ (
+ True,
+ 8 * "0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20",
+ ),
+ (
+ False,
+ 8 * "1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a",
+ ),
]
@@ -37,42 +41,43 @@ _RFC6229_OFFSETS = [
3056,
3072,
4080,
- 4096
+ 4096,
]
-_SIZES_TO_GENERATE = [
- 160
-]
+_SIZES_TO_GENERATE = [160]
def _key_for_size(size, keyinfo):
msb, key = keyinfo
if msb:
- return key[:size // 4]
+ return key[: size // 4]
else:
- return key[-size // 4:]
+ return key[-size // 4 :]
def _build_vectors():
count = 0
output = []
key = None
- plaintext = binascii.unhexlify(32 * '0')
+ plaintext = binascii.unhexlify(32 * "0")
for size in _SIZES_TO_GENERATE:
for keyinfo in _RFC6229_KEY_MATERIALS:
key = _key_for_size(size, keyinfo)
cipher = ciphers.Cipher(
algorithms.ARC4(binascii.unhexlify(key)),
None,
- default_backend())
+ default_backend(),
+ )
encryptor = cipher.encryptor()
current_offset = 0
for offset in _RFC6229_OFFSETS:
if offset % 16 != 0:
raise ValueError(
- "Offset {} is not evenly divisible by 16"
- .format(offset))
+ "Offset {} is not evenly divisible by 16".format(
+ offset
+ )
+ )
while current_offset < offset:
encryptor.update(plaintext)
current_offset += len(plaintext)
@@ -80,19 +85,23 @@ def _build_vectors():
count += 1
output.append("KEY = {}".format(key))
output.append("OFFSET = {}".format(offset))
- output.append("PLAINTEXT = {}".format(
- binascii.hexlify(plaintext)))
- output.append("CIPHERTEXT = {}".format(
- binascii.hexlify(encryptor.update(plaintext))))
+ output.append(
+ "PLAINTEXT = {}".format(binascii.hexlify(plaintext))
+ )
+ output.append(
+ "CIPHERTEXT = {}".format(
+ binascii.hexlify(encryptor.update(plaintext))
+ )
+ )
current_offset += len(plaintext)
assert not encryptor.finalize()
return "\n".join(output)
def _write_file(data, filename):
- with open(filename, 'w') as f:
+ with open(filename, "w") as f:
f.write(data)
-if __name__ == '__main__':
- _write_file(_build_vectors(), 'arc4.txt')
+if __name__ == "__main__":
+ _write_file(_build_vectors(), "arc4.txt")