diff options
Diffstat (limited to 'docs/development/custom-vectors/arc4/generate_arc4.py')
-rw-r--r-- | docs/development/custom-vectors/arc4/generate_arc4.py | 51 |
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") |