diff options
-rw-r--r-- | cryptography/hazmat/bindings/openssl/backend.py | 36 | ||||
-rw-r--r-- | docs/community.rst | 5 | ||||
-rw-r--r-- | docs/conf.py | 4 | ||||
-rw-r--r-- | docs/glossary.rst | 30 | ||||
-rw-r--r-- | docs/hazmat/primitives/hmac.rst | 2 | ||||
-rw-r--r-- | docs/index.rst | 1 | ||||
-rw-r--r-- | tests/hazmat/bindings/test_openssl.py | 5 | ||||
-rw-r--r-- | tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-128.txt | 254 | ||||
-rw-r--r-- | tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-192.txt | 254 | ||||
-rw-r--r-- | tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-256.txt | 254 | ||||
-rw-r--r-- | tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-40.txt | 237 | ||||
-rw-r--r-- | tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-56.txt | 254 | ||||
-rw-r--r-- | tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-64.txt | 254 | ||||
-rw-r--r-- | tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-80.txt | 254 |
14 files changed, 1828 insertions, 16 deletions
diff --git a/cryptography/hazmat/bindings/openssl/backend.py b/cryptography/hazmat/bindings/openssl/backend.py index b610caa2..ea1073b9 100644 --- a/cryptography/hazmat/bindings/openssl/backend.py +++ b/cryptography/hazmat/bindings/openssl/backend.py @@ -55,17 +55,31 @@ class Backend(object): "x509v3", ] + ffi = None + lib = None + def __init__(self): - self.ffi = cffi.FFI() + self._ensure_ffi_initialized() + + self.ciphers = Ciphers(self) + self.hashes = Hashes(self) + self.hmacs = HMACs(self) + + @classmethod + def _ensure_ffi_initialized(cls): + if cls.ffi is not None and cls.lib is not None: + return + + ffi = cffi.FFI() includes = [] functions = [] macros = [] - for name in self._modules: + for name in cls._modules: module_name = "cryptography.hazmat.bindings.openssl." + name __import__(module_name) module = sys.modules[module_name] - self.ffi.cdef(module.TYPES) + ffi.cdef(module.TYPES) macros.append(module.MACROS) functions.append(module.FUNCTIONS) @@ -75,9 +89,9 @@ class Backend(object): # so we can set interdependent types in different files and still # have them all defined before we parse the funcs & macros for func in functions: - self.ffi.cdef(func) + ffi.cdef(func) for macro in macros: - self.ffi.cdef(macro) + ffi.cdef(macro) # We include functions here so that if we got any of their definitions # wrong, the underlying C compiler will explode. In C you are allowed @@ -87,17 +101,15 @@ class Backend(object): # is legal, but the following will fail to compile: # int foo(int); # int foo(short); - self.lib = self.ffi.verify( + lib = ffi.verify( source="\n".join(includes + functions), libraries=["crypto", "ssl"], ) - self.lib.OpenSSL_add_all_algorithms() - self.lib.SSL_load_error_strings() - - self.ciphers = Ciphers(self) - self.hashes = Hashes(self) - self.hmacs = HMACs(self) + cls.ffi = ffi + cls.lib = lib + cls.lib.OpenSSL_add_all_algorithms() + cls.lib.SSL_load_error_strings() def openssl_version_text(self): """ diff --git a/docs/community.rst b/docs/community.rst index 552318da..bf1cd1c7 100644 --- a/docs/community.rst +++ b/docs/community.rst @@ -9,7 +9,12 @@ You can find ``cryptography`` all over the web: * `Documentation`_ * IRC: ``#cryptography-dev`` on ``irc.freenode.net`` +Wherever we interact, we strive to follow the `Python Community Code of +Conduct`_. + + .. _`Mailing list`: https://mail.python.org/mailman/listinfo/cryptography-dev .. _`Source code`: https://github.com/pyca/cryptography .. _`Issue tracker`: https://github.com/pyca/cryptography/issues .. _`Documentation`: https://cryptography.io/ +.. _`Python Community Code of Conduct`: http://www.python.org/psf/codeofconduct/ diff --git a/docs/conf.py b/docs/conf.py index 8e0fc7be..69be32e9 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -252,7 +252,3 @@ texinfo_documents = [ # Example configuration for intersphinx: refer to the Python standard library. intersphinx_mapping = {'http://docs.python.org/': None} - - -# Enable the new ReadTheDocs theme -RTD_NEW_THEME = True diff --git a/docs/glossary.rst b/docs/glossary.rst new file mode 100644 index 00000000..e4fc8283 --- /dev/null +++ b/docs/glossary.rst @@ -0,0 +1,30 @@ +Glossary +======== + +.. glossary:: + + plaintext + User-readable data you care about. + + ciphertext + The encoded data, it's not user readable. Potential attackers are able + to see this. + + encryption + The process of converting plaintext to ciphertext. + + decryption + The process of converting ciphertext to plaintext. + + key + Secret data is encoded with a function using this key. Sometimes + multiple keys are used. These **must** be kept secret, if a key is + exposed to an attacker, any data encrypted with it will be exposed. + + symmetric cryptography + Cryptographic operations where encryption and decryption use the same + key. + + asymmetric cryptography + Cryptographic operations where encryption and decryption use different + keys. There are seperate encryption and decryption keys. diff --git a/docs/hazmat/primitives/hmac.rst b/docs/hazmat/primitives/hmac.rst index 301d72d5..bd1a4934 100644 --- a/docs/hazmat/primitives/hmac.rst +++ b/docs/hazmat/primitives/hmac.rst @@ -23,6 +23,8 @@ message. equal in length to the ``digest_size`` of the hash function chosen. You must keep the ``key`` secret. + This is an implementation of :rfc:`2104`. + .. doctest:: >>> from cryptography.hazmat.primitives import hashes, hmac diff --git a/docs/index.rst b/docs/index.rst index eb30b5dd..1b88e24e 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -32,6 +32,7 @@ Contents architecture exceptions + glossary contributing security community diff --git a/tests/hazmat/bindings/test_openssl.py b/tests/hazmat/bindings/test_openssl.py index af9be353..3523fa4e 100644 --- a/tests/hazmat/bindings/test_openssl.py +++ b/tests/hazmat/bindings/test_openssl.py @@ -44,6 +44,11 @@ class TestOpenSSL(object): with pytest.raises(ValueError): backend.ciphers.register_cipher_adapter(AES, CBC, None) + def test_instances_share_ffi(self): + b = Backend() + assert b.ffi is backend.ffi + assert b.lib is backend.lib + def test_nonexistent_cipher(self): b = Backend() # TODO: this test assumes that 3DES-ECB doesn't exist diff --git a/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-128.txt b/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-128.txt new file mode 100644 index 00000000..0902491b --- /dev/null +++ b/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-128.txt @@ -0,0 +1,254 @@ +# Vectors from RFC 6229. Reformatted to work with the NIST loader +[ENCRYPT] + +# 128-bit key +COUNT = 0 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 0 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 9ac7cc9a609d1ef7b2932899cde41b97 + + +COUNT = 1 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 16 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 5248c4959014126a6e8a84f11d1a9e1c + + +COUNT = 2 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 240 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 065902e4b620f6cc36c8589f66432f2b + + +COUNT = 3 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 256 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = d39d566bc6bce3010768151549f3873f + + +COUNT = 4 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 496 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = b6d1e6c4a5e4771cad79538df295fb11 + + +COUNT = 5 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 512 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = c68c1d5c559a974123df1dbc52a43b89 + + +COUNT = 6 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 752 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = c5ecf88de897fd57fed301701b82a259 + + +COUNT = 7 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 768 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = eccbe13de1fcc91c11a0b26c0bc8fa4d + + +COUNT = 8 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 1008 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = e7a72574f8782ae26aabcf9ebcd66065 + + +COUNT = 9 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 1024 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = bdf0324e6083dcc6d3cedd3ca8c53c16 + + +COUNT = 10 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 1520 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = b40110c4190b5622a96116b0017ed297 + + +COUNT = 11 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 1536 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = ffa0b514647ec04f6306b892ae661181 + + +COUNT = 12 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 2032 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = d03d1bc03cd33d70dff9fa5d71963ebd + + +COUNT = 13 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 2048 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 8a44126411eaa78bd51e8d87a8879bf5 + + +COUNT = 14 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 3056 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = fabeb76028ade2d0e48722e46c4615a3 + + +COUNT = 15 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 3072 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = c05d88abd50357f935a63c59ee537623 + + +COUNT = 16 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 4080 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = ff38265c1642c1abe8d3c2fe5e572bf8 + + +COUNT = 17 +KEY = 0102030405060708090a0b0c0d0e0f10 +OFFSET = 4096 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = a36a4c301ae8ac13610ccbc12256cacc + +# key 2 +COUNT = 18 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 0 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 720c94b63edf44e131d950ca211a5a30 + + +COUNT = 19 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 16 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = c366fdeacf9ca80436be7c358424d20b + + +COUNT = 20 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 240 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = b3394a40aabf75cba42282ef25a0059f + + +COUNT = 21 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 256 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 4847d81da4942dbc249defc48c922b9f + + +COUNT = 22 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 496 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 08128c469f275342adda202b2b58da95 + + +COUNT = 23 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 512 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 970dacef40ad98723bac5d6955b81761 + + +COUNT = 24 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 752 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 3cb89993b07b0ced93de13d2a11013ac + + +COUNT = 25 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 768 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = ef2d676f1545c2c13dc680a02f4adbfe + + +COUNT = 26 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 1008 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = b60595514f24bc9fe522a6cad7393644 + + +COUNT = 27 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 1024 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = b515a8c5011754f59003058bdb81514e + + +COUNT = 28 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 1520 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 3c70047e8cbc038e3b9820db601da495 + + +COUNT = 29 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 1536 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 1175da6ee756de46a53e2b075660b770 + + +COUNT = 30 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 2032 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 00a542bba02111cc2c65b38ebdba587e + + +COUNT = 31 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 2048 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 5865fdbb5b48064104e830b380f2aede + + +COUNT = 32 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 3056 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 34b21ad2ad44e999db2d7f0863f0d9b6 + + +COUNT = 33 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 3072 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 84a9218fc36e8a5f2ccfbeae53a27d25 + + +COUNT = 34 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 4080 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = a2221a11b833ccb498a59540f0545f4a + + +COUNT = 35 +KEY = ebb46227c6cc8b37641910833222772a +OFFSET = 4096 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 5bbeb4787d59e5373fdbea6c6f75c29b diff --git a/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-192.txt b/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-192.txt new file mode 100644 index 00000000..f2fbaafe --- /dev/null +++ b/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-192.txt @@ -0,0 +1,254 @@ +# Vectors from RFC 6229. Reformatted to work with the NIST loader +[ENCRYPT] + +# 192-bit key +COUNT = 0 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 0 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 0595e57fe5f0bb3c706edac8a4b2db11 + + +COUNT = 1 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 16 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = dfde31344a1af769c74f070aee9e2326 + + +COUNT = 2 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 240 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = b06b9b1e195d13d8f4a7995c4553ac05 + + +COUNT = 3 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 256 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 6bd2378ec341c9a42f37ba79f88a32ff + + +COUNT = 4 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 496 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = e70bce1df7645adb5d2c4130215c3522 + + +COUNT = 5 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 512 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 9a5730c7fcb4c9af51ffda89c7f1ad22 + + +COUNT = 6 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 752 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 0485055fd4f6f0d963ef5ab9a5476982 + + +COUNT = 7 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 768 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 591fc66bcda10e452b03d4551f6b62ac + + +COUNT = 8 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 1008 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 2753cc83988afa3e1688a1d3b42c9a02 + + +COUNT = 9 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 1024 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 93610d523d1d3f0062b3c2a3bbc7c7f0 + + +COUNT = 10 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 1520 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 96c248610aadedfeaf8978c03de8205a + + +COUNT = 11 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 1536 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 0e317b3d1c73b9e9a4688f296d133a19 + + +COUNT = 12 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 2032 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = bdf0e6c3cca5b5b9d533b69c56ada120 + + +COUNT = 13 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 2048 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 88a218b6e2ece1e6246d44c759d19b10 + + +COUNT = 14 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 3056 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 6866397e95c140534f94263421006e40 + + +COUNT = 15 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 3072 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 32cb0a1e9542c6b3b8b398abc3b0f1d5 + + +COUNT = 16 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 4080 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 29a0b8aed54a132324c62e423f54b4c8 + + +COUNT = 17 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718 +OFFSET = 4096 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 3cb0f3b5020a98b82af9fe154484a168 + +# key 2 +COUNT = 18 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 0 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 54b64e6b5a20b5e2ec84593dc7989da7 + + +COUNT = 19 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 16 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = c135eee237a85465ff97dc03924f45ce + + +COUNT = 20 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 240 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = cfcc922fb4a14ab45d6175aabbf2d201 + + +COUNT = 21 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 256 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 837b87e2a446ad0ef798acd02b94124f + + +COUNT = 22 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 496 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 17a6dbd664926a0636b3f4c37a4f4694 + + +COUNT = 23 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 512 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 4a5f9f26aeeed4d4a25f632d305233d9 + + +COUNT = 24 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 752 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 80a3d01ef00c8e9a4209c17f4eeb358c + + +COUNT = 25 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 768 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = d15e7d5ffaaabc0207bf200a117793a2 + + +COUNT = 26 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 1008 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 349682bf588eaa52d0aa1560346aeafa + + +COUNT = 27 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 1024 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = f5854cdb76c889e3ad63354e5f7275e3 + + +COUNT = 28 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 1520 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 532c7ceccb39df3236318405a4b1279c + + +COUNT = 29 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 1536 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = baefe6d9ceb651842260e0d1e05e3b90 + + +COUNT = 30 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 2032 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = e82d8c6db54e3c633f581c952ba04207 + + +COUNT = 31 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 2048 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 4b16e50abd381bd70900a9cd9a62cb23 + + +COUNT = 32 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 3056 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 3682ee33bd148bd9f58656cd8f30d9fb + + +COUNT = 33 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 3072 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 1e5a0b8475045d9b20b2628624edfd9e + + +COUNT = 34 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 4080 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 63edd684fb826282fe528f9c0e9237bc + + +COUNT = 35 +KEY = c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 4096 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = e4dd2e98d6960fae0b43545456743391 diff --git a/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-256.txt b/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-256.txt new file mode 100644 index 00000000..35bf7863 --- /dev/null +++ b/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-256.txt @@ -0,0 +1,254 @@ +# Vectors from RFC 6229. Reformatted to work with the NIST loader +[ENCRYPT] + +# 256-bit key +COUNT = 0 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 0 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = eaa6bd25880bf93d3f5d1e4ca2611d91 + + +COUNT = 1 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 16 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = cfa45c9f7e714b54bdfa80027cb14380 + + +COUNT = 2 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 240 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 114ae344ded71b35f2e60febad727fd8 + + +COUNT = 3 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 256 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 02e1e7056b0f623900496422943e97b6 + + +COUNT = 4 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 496 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 91cb93c787964e10d9527d999c6f936b + + +COUNT = 5 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 512 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 49b18b42f8e8367cbeb5ef104ba1c7cd + + +COUNT = 6 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 752 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 87084b3ba700bade955610672745b374 + + +COUNT = 7 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 768 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = e7a7b9e9ec540d5ff43bdb12792d1b35 + + +COUNT = 8 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 1008 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = c799b596738f6b018c76c74b1759bd90 + + +COUNT = 9 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 1024 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 7fec5bfd9f9b89ce6548309092d7e958 + + +COUNT = 10 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 1520 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 40f250b26d1f096a4afd4c340a588815 + + +COUNT = 11 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 1536 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 3e34135c79db010200767651cf263073 + + +COUNT = 12 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 2032 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = f656abccf88dd827027b2ce917d464ec + + +COUNT = 13 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 2048 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 18b62503bfbc077fbabb98f20d98ab34 + + +COUNT = 14 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 3056 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 8aed95ee5b0dcbfbef4eb21d3a3f52f9 + + +COUNT = 15 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 3072 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 625a1ab00ee39a5327346bddb01a9c18 + + +COUNT = 16 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 4080 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = a13a7c79c7e119b5ab0296ab28c300b9 + + +COUNT = 17 +KEY = 0102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20 +OFFSET = 4096 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = f3e4c0a2e02d1d01f7f0a74618af2b48 + +# key 2 +COUNT = 18 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 0 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = dd5bcb0018e922d494759d7c395d02d3 + + +COUNT = 19 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 16 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = c8446f8f77abf737685353eb89a1c9eb + + +COUNT = 20 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 240 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = af3e30f9c095045938151575c3fb9098 + + +COUNT = 21 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 256 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = f8cb6274db99b80b1d2012a98ed48f0e + + +COUNT = 22 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 496 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 25c3005a1cb85de076259839ab7198ab + + +COUNT = 23 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 512 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 9dcbc183e8cb994b727b75be3180769c + + +COUNT = 24 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 752 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = a1d3078dfa9169503ed9d4491dee4eb2 + + +COUNT = 25 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 768 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 8514a5495858096f596e4bcd66b10665 + + +COUNT = 26 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 1008 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 5f40d59ec1b03b33738efa60b2255d31 + + +COUNT = 27 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 1024 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 3477c7f764a41baceff90bf14f92b7cc + + +COUNT = 28 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 1520 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = ac4e95368d99b9eb78b8da8f81ffa795 + + +COUNT = 29 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 1536 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 8c3c13f8c2388bb73f38576e65b7c446 + + +COUNT = 30 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 2032 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 13c4b9c1dfb66579eddd8a280b9f7316 + + +COUNT = 31 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 2048 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = ddd27820550126698efaadc64b64f66e + + +COUNT = 32 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 3056 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = f08f2e66d28ed143f3a237cf9de73559 + + +COUNT = 33 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 3072 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 9ea36c525531b880ba124334f57b0b70 + + +COUNT = 34 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 4080 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = d5a39e3dfcc50280bac4a6b5aa0dca7d + + +COUNT = 35 +KEY = 1ada31d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a +OFFSET = 4096 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 370b1c1fe655916d97fd0d47ca1d72b8 diff --git a/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-40.txt b/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-40.txt new file mode 100644 index 00000000..5fe7d019 --- /dev/null +++ b/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-40.txt @@ -0,0 +1,237 @@ +# Vectors from RFC 6229. Reformatted to work with the NIST loader +[ENCRYPT] + +# 40-bit key +COUNT = 0 +KEY = 0102030405 +OFFSET = 0 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = b2396305f03dc027ccc3524a0a1118a8 + +COUNT = 1 +KEY = 0102030405 +OFFSET = 16 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 6982944f18fc82d589c403a47a0d0919 + +COUNT = 2 +KEY = 0102030405 +OFFSET = 240 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 28cb1132c96ce286421dcaadb8b69eae + +COUNT = 3 +KEY = 0102030405 +OFFSET = 256 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 1cfcf62b03eddb641d77dfcf7f8d8c93 + +COUNT = 4 +KEY = 0102030405 +OFFSET = 496 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 42b7d0cdd918a8a33dd51781c81f4041 + +COUNT = 5 +KEY = 0102030405 +OFFSET = 512 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 6459844432a7da923cfb3eb4980661f6 + +COUNT = 6 +KEY = 0102030405 +OFFSET = 752 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = ec10327bde2beefd18f9277680457e22 + +COUNT = 7 +KEY = 0102030405 +OFFSET = 768 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = eb62638d4f0ba1fe9fca20e05bf8ff2b + +COUNT = 8 +KEY = 0102030405 +OFFSET = 1008 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 45129048e6a0ed0b56b490338f078da5 + +COUNT = 9 +KEY = 0102030405 +OFFSET = 1024 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 30abbcc7c20b01609f23ee2d5f6bb7df + +COUNT = 10 +KEY = 0102030405 +OFFSET = 1520 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 3294f744d8f9790507e70f62e5bbceea + +COUNT = 11 +KEY = 0102030405 +OFFSET = 1536 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = d8729db41882259bee4f825325f5a130 + +COUNT = 12 +KEY = 0102030405 +OFFSET = 2032 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 1eb14a0c13b3bf47fa2a0ba93ad45b8b + +COUNT = 13 +KEY = 0102030405 +OFFSET = 2048 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = cc582f8ba9f265e2b1be9112e975d2d7 + +COUNT = 14 +KEY = 0102030405 +OFFSET = 3056 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = f2e30f9bd102ecbf75aaade9bc35c43c + +COUNT = 15 +KEY = 0102030405 +OFFSET = 3072 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = ec0e11c479dc329dc8da7968fe965681 + +COUNT = 16 +KEY = 0102030405 +OFFSET = 4080 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 068326a2118416d21f9d04b2cd1ca050 + +COUNT = 17 +KEY = 0102030405 +OFFSET = 4096 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = ff25b58995996707e51fbdf08b34d875 + +# key 2 +COUNT = 18 +KEY = 833222772a +OFFSET = 0 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 80ad97bdc973df8a2e879e92a497efda + + +COUNT = 19 +KEY = 833222772a +OFFSET = 16 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 20f060c2f2e5126501d3d4fea10d5fc0 + + +COUNT = 20 +KEY = 833222772a +OFFSET = 240 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = faa148e99046181fec6b2085f3b20ed9 + + +COUNT = 21 +KEY = 833222772a +OFFSET = 256 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = f0daf5bab3d596839857846f73fbfe5a + + +COUNT = 22 +KEY = 833222772a +OFFSET = 496 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 1c7e2fc4639232fe297584b296996bc8 + + +COUNT = 23 +KEY = 833222772a +OFFSET = 512 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 3db9b249406cc8edffac55ccd322ba12 + + +COUNT = 24 +KEY = 833222772a +OFFSET = 752 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = e4f9f7e0066154bbd125b745569bc897 + + +COUNT = 25 +KEY = 833222772a +OFFSET = 768 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 75d5ef262b44c41a9cf63ae14568e1b9 + + +COUNT = 26 +KEY = 833222772a +OFFSET = 1008 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 6da453dbf81e82334a3d8866cb50a1e3 + + +COUNT = 27 +KEY = 833222772a +OFFSET = 1024 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 7828d074119cab5c22b294d7a9bfa0bb + + +COUNT = 28 +KEY = 833222772a +OFFSET = 1520 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = adb89cea9a15fbe617295bd04b8ca05c + + +COUNT = 29 +KEY = 833222772a +OFFSET = 1536 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 6251d87fd4aaae9a7e4ad5c217d3f300 + + +COUNT = 30 +KEY = 833222772a +OFFSET = 2032 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = e7119bd6dd9b22afe8f89585432881e2 + + +COUNT = 31 +KEY = 833222772a +OFFSET = 2048 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 785b60fd7ec4e9fcb6545f350d660fab + + +COUNT = 32 +KEY = 833222772a +OFFSET = 3056 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = afecc037fdb7b0838eb3d70bcd268382 + + +COUNT = 33 +KEY = 833222772a +OFFSET = 3072 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = dbc1a7b49d57358cc9fa6d61d73b7cf0 + + +COUNT = 34 +KEY = 833222772a +OFFSET = 4080 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 6349d126a37afcba89794f9804914fdc + + +COUNT = 35 +KEY = 833222772a +OFFSET = 4096 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = bf42c3018c2f7c66bfde524975768115 diff --git a/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-56.txt b/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-56.txt new file mode 100644 index 00000000..78bdfd40 --- /dev/null +++ b/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-56.txt @@ -0,0 +1,254 @@ +# Vectors from RFC 6229. Reformatted to work with the NIST loader +[ENCRYPT] + +# 56-bit key +COUNT = 0 +KEY = 01020304050607 +OFFSET = 0 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 293f02d47f37c9b633f2af5285feb46b + + +COUNT = 1 +KEY = 01020304050607 +OFFSET = 16 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = e620f1390d19bd84e2e0fd752031afc1 + + +COUNT = 2 +KEY = 01020304050607 +OFFSET = 240 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 914f02531c9218810df60f67e338154c + + +COUNT = 3 +KEY = 01020304050607 +OFFSET = 256 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = d0fdb583073ce85ab83917740ec011d5 + + +COUNT = 4 +KEY = 01020304050607 +OFFSET = 496 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 75f81411e871cffa70b90c74c592e454 + + +COUNT = 5 +KEY = 01020304050607 +OFFSET = 512 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 0bb87202938dad609e87a5a1b079e5e4 + + +COUNT = 6 +KEY = 01020304050607 +OFFSET = 752 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = c2911246b612e7e7b903dfeda1dad866 + + +COUNT = 7 +KEY = 01020304050607 +OFFSET = 768 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 32828f91502b6291368de8081de36fc2 + + +COUNT = 8 +KEY = 01020304050607 +OFFSET = 1008 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = f3b9a7e3b297bf9ad804512f9063eff1 + + +COUNT = 9 +KEY = 01020304050607 +OFFSET = 1024 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 8ecb67a9ba1f55a5a067e2b026a3676f + + +COUNT = 10 +KEY = 01020304050607 +OFFSET = 1520 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = d2aa902bd42d0d7cfd340cd45810529f + + +COUNT = 11 +KEY = 01020304050607 +OFFSET = 1536 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 78b272c96e42eab4c60bd914e39d06e3 + + +COUNT = 12 +KEY = 01020304050607 +OFFSET = 2032 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = f4332fd31a079396ee3cee3f2a4ff049 + + +COUNT = 13 +KEY = 01020304050607 +OFFSET = 2048 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 05459781d41fda7f30c1be7e1246c623 + + +COUNT = 14 +KEY = 01020304050607 +OFFSET = 3056 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = adfd3868b8e51485d5e610017e3dd609 + + +COUNT = 15 +KEY = 01020304050607 +OFFSET = 3072 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = ad26581c0c5be45f4cea01db2f3805d5 + + +COUNT = 16 +KEY = 01020304050607 +OFFSET = 4080 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = f3172ceffc3b3d997c85ccd5af1a950c + + +COUNT = 17 +KEY = 01020304050607 +OFFSET = 4096 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = e74b0b9731227fd37c0ec08a47ddd8b8 + +# key 2 +COUNT = 18 +KEY = 1910833222772a +OFFSET = 0 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = bc9222dbd3274d8fc66d14ccbda6690b + + +COUNT = 19 +KEY = 1910833222772a +OFFSET = 16 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 7ae627410c9a2be693df5bb7485a63e3 + + +COUNT = 20 +KEY = 1910833222772a +OFFSET = 240 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 3f0931aa03defb300f060103826f2a64 + + +COUNT = 21 +KEY = 1910833222772a +OFFSET = 256 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = beaa9ec8d59bb68129f3027c96361181 + + +COUNT = 22 +KEY = 1910833222772a +OFFSET = 496 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 74e04db46d28648d7dee8a0064b06cfe + + +COUNT = 23 +KEY = 1910833222772a +OFFSET = 512 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 9b5e81c62fe023c55be42f87bbf932b8 + + +COUNT = 24 +KEY = 1910833222772a +OFFSET = 752 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = ce178fc1826efecbc182f57999a46140 + + +COUNT = 25 +KEY = 1910833222772a +OFFSET = 768 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 8bdf55cd55061c06dba6be11de4a578a + + +COUNT = 26 +KEY = 1910833222772a +OFFSET = 1008 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 626f5f4dce652501f3087d39c92cc349 + + +COUNT = 27 +KEY = 1910833222772a +OFFSET = 1024 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 42daac6a8f9ab9a7fd137c6037825682 + + +COUNT = 28 +KEY = 1910833222772a +OFFSET = 1520 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = cc03fdb79192a207312f53f5d4dc33d9 + + +COUNT = 29 +KEY = 1910833222772a +OFFSET = 1536 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = f70f14122a1c98a3155d28b8a0a8a41d + + +COUNT = 30 +KEY = 1910833222772a +OFFSET = 2032 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 2a3a307ab2708a9c00fe0b42f9c2d6a1 + + +COUNT = 31 +KEY = 1910833222772a +OFFSET = 2048 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 862617627d2261eab0b1246597ca0ae9 + + +COUNT = 32 +KEY = 1910833222772a +OFFSET = 3056 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 55f877ce4f2e1ddbbf8e13e2cde0fdc8 + + +COUNT = 33 +KEY = 1910833222772a +OFFSET = 3072 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 1b1556cb935f173337705fbb5d501fc1 + + +COUNT = 34 +KEY = 1910833222772a +OFFSET = 4080 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = ecd0e96602be7f8d5092816cccf2c2e9 + + +COUNT = 35 +KEY = 1910833222772a +OFFSET = 4096 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 027881fab4993a1c262024a94fff3f61 diff --git a/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-64.txt b/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-64.txt new file mode 100644 index 00000000..dca652ef --- /dev/null +++ b/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-64.txt @@ -0,0 +1,254 @@ +# Vectors from RFC 6229. Reformatted to work with the NIST loader +[ENCRYPT] + +# 64-bit key +COUNT = 0 +KEY = 0102030405060708 +OFFSET = 0 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 97ab8a1bf0afb96132f2f67258da15a8 + + +COUNT = 1 +KEY = 0102030405060708 +OFFSET = 16 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 8263efdb45c4a18684ef87e6b19e5b09 + + +COUNT = 2 +KEY = 0102030405060708 +OFFSET = 240 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 9636ebc9841926f4f7d1f362bddf6e18 + + +COUNT = 3 +KEY = 0102030405060708 +OFFSET = 256 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = d0a990ff2c05fef5b90373c9ff4b870a + + +COUNT = 4 +KEY = 0102030405060708 +OFFSET = 496 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 73239f1db7f41d80b643c0c52518ec63 + + +COUNT = 5 +KEY = 0102030405060708 +OFFSET = 512 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 163b319923a6bdb4527c626126703c0f + + +COUNT = 6 +KEY = 0102030405060708 +OFFSET = 752 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 49d6c8af0f97144a87df21d91472f966 + + +COUNT = 7 +KEY = 0102030405060708 +OFFSET = 768 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 44173a103b6616c5d5ad1cee40c863d0 + + +COUNT = 8 +KEY = 0102030405060708 +OFFSET = 1008 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 273c9c4b27f322e4e716ef53a47de7a4 + + +COUNT = 9 +KEY = 0102030405060708 +OFFSET = 1024 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = c6d0e7b226259fa9023490b26167ad1d + + +COUNT = 10 +KEY = 0102030405060708 +OFFSET = 1520 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 1fe8986713f07c3d9ae1c163ff8cf9d3 + + +COUNT = 11 +KEY = 0102030405060708 +OFFSET = 1536 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 8369e1a965610be887fbd0c79162aafb + + +COUNT = 12 +KEY = 0102030405060708 +OFFSET = 2032 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 0a0127abb44484b9fbef5abcae1b579f + + +COUNT = 13 +KEY = 0102030405060708 +OFFSET = 2048 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = c2cdadc6402e8ee866e1f37bdb47e42c + + +COUNT = 14 +KEY = 0102030405060708 +OFFSET = 3056 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 26b51ea37df8e1d6f76fc3b66a7429b3 + + +COUNT = 15 +KEY = 0102030405060708 +OFFSET = 3072 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = bc7683205d4f443dc1f29dda3315c87b + + +COUNT = 16 +KEY = 0102030405060708 +OFFSET = 4080 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = d5fa5a3469d29aaaf83d23589db8c85b + + +COUNT = 17 +KEY = 0102030405060708 +OFFSET = 4096 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 3fb46e2c8f0f068edce8cdcd7dfc5862 + +# key 2 +COUNT = 18 +KEY = 641910833222772a +OFFSET = 0 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = bbf609de9413172d07660cb680716926 + + +COUNT = 19 +KEY = 641910833222772a +OFFSET = 16 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 46101a6dab43115d6c522b4fe93604a9 + + +COUNT = 20 +KEY = 641910833222772a +OFFSET = 240 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = cbe1fff21c96f3eef61e8fe0542cbdf0 + + +COUNT = 21 +KEY = 641910833222772a +OFFSET = 256 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 347938bffa4009c512cfb4034b0dd1a7 + + +COUNT = 22 +KEY = 641910833222772a +OFFSET = 496 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 7867a786d00a7147904d76ddf1e520e3 + + +COUNT = 23 +KEY = 641910833222772a +OFFSET = 512 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 8d3e9e1caefcccb3fbf8d18f64120b32 + + +COUNT = 24 +KEY = 641910833222772a +OFFSET = 752 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 942337f8fd76f0fae8c52d7954810672 + + +COUNT = 25 +KEY = 641910833222772a +OFFSET = 768 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = b8548c10f51667f6e60e182fa19b30f7 + + +COUNT = 26 +KEY = 641910833222772a +OFFSET = 1008 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 0211c7c6190c9efd1237c34c8f2e06c4 + + +COUNT = 27 +KEY = 641910833222772a +OFFSET = 1024 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = bda64f65276d2aacb8f90212203a808e + + +COUNT = 28 +KEY = 641910833222772a +OFFSET = 1520 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = bd3820f732ffb53ec193e79d33e27c73 + + +COUNT = 29 +KEY = 641910833222772a +OFFSET = 1536 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = d0168616861907d482e36cdac8cf5749 + + +COUNT = 30 +KEY = 641910833222772a +OFFSET = 2032 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 97b0f0f224b2d2317114808fb03af7a0 + + +COUNT = 31 +KEY = 641910833222772a +OFFSET = 2048 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = e59616e469787939a063ceea9af956d1 + + +COUNT = 32 +KEY = 641910833222772a +OFFSET = 3056 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = c47e0dc1660919c11101208f9e69aa1f + + +COUNT = 33 +KEY = 641910833222772a +OFFSET = 3072 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 5ae4f12896b8379a2aad89b5b553d6b0 + + +COUNT = 34 +KEY = 641910833222772a +OFFSET = 4080 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 6b6b098d0c293bc2993d80bf0518b6d9 + + +COUNT = 35 +KEY = 641910833222772a +OFFSET = 4096 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 8170cc3ccd92a698621b939dd38fe7b9 diff --git a/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-80.txt b/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-80.txt new file mode 100644 index 00000000..18a9efe4 --- /dev/null +++ b/tests/hazmat/primitives/vectors/ciphers/ARC4/rfc-6229-80.txt @@ -0,0 +1,254 @@ +# Vectors from RFC 6229. Reformatted to work with the NIST loader +[ENCRYPT] + +# 80-bit key +COUNT = 0 +KEY = 0102030405060708090a +OFFSET = 0 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = ede3b04643e586cc907dc21851709902 + + +COUNT = 1 +KEY = 0102030405060708090a +OFFSET = 16 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 03516ba78f413beb223aa5d4d2df6711 + + +COUNT = 2 +KEY = 0102030405060708090a +OFFSET = 240 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 3cfd6cb58ee0fdde640176ad0000044d + + +COUNT = 3 +KEY = 0102030405060708090a +OFFSET = 256 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 48532b21fb6079c9114c0ffd9c04a1ad + + +COUNT = 4 +KEY = 0102030405060708090a +OFFSET = 496 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 3e8cea98017109979084b1ef92f99d86 + + +COUNT = 5 +KEY = 0102030405060708090a +OFFSET = 512 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = e20fb49bdb337ee48b8d8dc0f4afeffe + + +COUNT = 6 +KEY = 0102030405060708090a +OFFSET = 752 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 5c2521eacd7966f15e056544bea0d315 + + +COUNT = 7 +KEY = 0102030405060708090a +OFFSET = 768 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = e067a7031931a246a6c3875d2f678acb + + +COUNT = 8 +KEY = 0102030405060708090a +OFFSET = 1008 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = a64f70af88ae56b6f87581c0e23e6b08 + + +COUNT = 9 +KEY = 0102030405060708090a +OFFSET = 1024 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = f449031de312814ec6f319291f4a0516 + + +COUNT = 10 +KEY = 0102030405060708090a +OFFSET = 1520 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = bdae85924b3cb1d0a2e33a30c6d79599 + + +COUNT = 11 +KEY = 0102030405060708090a +OFFSET = 1536 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 8a0feddbac865a09bcd127fb562ed60a + + +COUNT = 12 +KEY = 0102030405060708090a +OFFSET = 2032 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = b55a0a5b51a12a8be34899c3e047511a + + +COUNT = 13 +KEY = 0102030405060708090a +OFFSET = 2048 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = d9a09cea3ce75fe39698070317a71339 + + +COUNT = 14 +KEY = 0102030405060708090a +OFFSET = 3056 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 552225ed1177f44584ac8cfa6c4eb5fc + + +COUNT = 15 +KEY = 0102030405060708090a +OFFSET = 3072 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 7e82cbabfc95381b080998442129c2f8 + + +COUNT = 16 +KEY = 0102030405060708090a +OFFSET = 4080 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 1f135ed14ce60a91369d2322bef25e3c + + +COUNT = 17 +KEY = 0102030405060708090a +OFFSET = 4096 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 08b6be45124a43e2eb77953f84dc8553 + +# key 2 +COUNT = 18 +KEY = 8b37641910833222772a +OFFSET = 0 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = ab65c26eddb287600db2fda10d1e605c + + +COUNT = 19 +KEY = 8b37641910833222772a +OFFSET = 16 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = bb759010c29658f2c72d93a2d16d2930 + + +COUNT = 20 +KEY = 8b37641910833222772a +OFFSET = 240 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = b901e8036ed1c383cd3c4c4dd0a6ab05 + + +COUNT = 21 +KEY = 8b37641910833222772a +OFFSET = 256 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 3d25ce4922924c55f064943353d78a6c + + +COUNT = 22 +KEY = 8b37641910833222772a +OFFSET = 496 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 12c1aa44bbf87e75e611f69b2c38f49b + + +COUNT = 23 +KEY = 8b37641910833222772a +OFFSET = 512 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 28f2b3434b65c09877470044c6ea170d + + +COUNT = 24 +KEY = 8b37641910833222772a +OFFSET = 752 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = bd9ef822de5288196134cf8af7839304 + + +COUNT = 25 +KEY = 8b37641910833222772a +OFFSET = 768 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 67559c23f052158470a296f725735a32 + + +COUNT = 26 +KEY = 8b37641910833222772a +OFFSET = 1008 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 8bab26fbc2c12b0f13e2ab185eabf241 + + +COUNT = 27 +KEY = 8b37641910833222772a +OFFSET = 1024 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 31185a6d696f0cfa9b42808b38e132a2 + + +COUNT = 28 +KEY = 8b37641910833222772a +OFFSET = 1520 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 564d3dae183c5234c8af1e51061c44b5 + + +COUNT = 29 +KEY = 8b37641910833222772a +OFFSET = 1536 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 3c0778a7b5f72d3c23a3135c7d67b9f4 + + +COUNT = 30 +KEY = 8b37641910833222772a +OFFSET = 2032 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = f34369890fcf16fb517dcaae4463b2dd + + +COUNT = 31 +KEY = 8b37641910833222772a +OFFSET = 2048 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 02f31c81e8200731b899b028e791bfa7 + + +COUNT = 32 +KEY = 8b37641910833222772a +OFFSET = 3056 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 72da646283228c14300853701795616f + + +COUNT = 33 +KEY = 8b37641910833222772a +OFFSET = 3072 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 4e0a8c6f7934a788e2265e81d6d0c8f4 + + +COUNT = 34 +KEY = 8b37641910833222772a +OFFSET = 4080 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 438dd5eafea0111b6f36b4b938da2a68 + + +COUNT = 35 +KEY = 8b37641910833222772a +OFFSET = 4096 +PLAINTEXT = 00000000000000000000000000000000 +CIPHERTEXT = 5f6bfc73815874d97100f086979357d8 |