diff options
-rw-r--r-- | CHANGELOG.rst | 3 | ||||
-rw-r--r-- | cryptography/hazmat/backends/commoncrypto/backend.py | 1 | ||||
-rw-r--r-- | cryptography/hazmat/backends/openssl/backend.py | 5 | ||||
-rw-r--r-- | docs/development/getting-started.rst | 7 | ||||
-rw-r--r-- | docs/hazmat/primitives/asymmetric/ec.rst | 16 | ||||
-rw-r--r-- | tests/hazmat/primitives/test_3des.py | 37 |
6 files changed, 66 insertions, 3 deletions
diff --git a/CHANGELOG.rst b/CHANGELOG.rst index a38534d4..7a654546 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -19,6 +19,9 @@ Changelog :class:`~cryptography.hazmat.backends.interfaces.TraditionalOpenSSLSerializationBackend` support to the :doc:`/hazmat/backends/openssl`. * Added :class:`~cryptography.hazmat.backends.interfaces.EllipticCurveBackend`. +* Added :class:`~cryptography.hazmat.primitives.ciphers.modes.ECB` support + for :class:`~cryptography.hazmat.primitives.ciphers.algorithms.TripleDES` on + :doc:`/hazmat/backends/commoncrypto` and :doc:`/hazmat/backends/openssl`. 0.4 - 2014-05-03 ~~~~~~~~~~~~~~~~ diff --git a/cryptography/hazmat/backends/commoncrypto/backend.py b/cryptography/hazmat/backends/commoncrypto/backend.py index 213cbd8c..41be11f9 100644 --- a/cryptography/hazmat/backends/commoncrypto/backend.py +++ b/cryptography/hazmat/backends/commoncrypto/backend.py @@ -178,6 +178,7 @@ class Backend(object): ) for mode_cls, mode_const in [ (CBC, self._lib.kCCModeCBC), + (ECB, self._lib.kCCModeECB), (CFB, self._lib.kCCModeCFB), (CFB8, self._lib.kCCModeCFB8), (OFB, self._lib.kCCModeOFB), diff --git a/cryptography/hazmat/backends/openssl/backend.py b/cryptography/hazmat/backends/openssl/backend.py index bf372a1a..0a7a28b4 100644 --- a/cryptography/hazmat/backends/openssl/backend.py +++ b/cryptography/hazmat/backends/openssl/backend.py @@ -184,6 +184,11 @@ class Backend(object): mode_cls, GetCipherByName("des-ede3-{mode.name}") ) + self.register_cipher_adapter( + TripleDES, + ECB, + GetCipherByName("des-ede3") + ) for mode_cls in [CBC, CFB, OFB, ECB]: self.register_cipher_adapter( Blowfish, diff --git a/docs/development/getting-started.rst b/docs/development/getting-started.rst index 3d9012eb..4337b47c 100644 --- a/docs/development/getting-started.rst +++ b/docs/development/getting-started.rst @@ -2,9 +2,10 @@ Getting started =============== Working on ``cryptography`` requires the installation of a small number of -development dependencies. These are listed in ``dev-requirements.txt`` and they -can be installed in a `virtualenv`_ using `pip`_. Once you've installed the -dependencies, install ``cryptography`` in ``editable`` mode. For example: +development dependencies in addition to the dependencies for :doc:`/installation`. +These are listed in ``dev-requirements.txt`` and they can be installed in a +`virtualenv`_ using `pip`_. Once you've installed the dependencies, install +``cryptography`` in ``editable`` mode. For example: .. code-block:: console diff --git a/docs/hazmat/primitives/asymmetric/ec.rst b/docs/hazmat/primitives/asymmetric/ec.rst index 2c91b5a2..5dc7e2f0 100644 --- a/docs/hazmat/primitives/asymmetric/ec.rst +++ b/docs/hazmat/primitives/asymmetric/ec.rst @@ -100,6 +100,7 @@ Elliptic Curve Signature Algorithms ----------------------------------- .. class:: ECDSA(algorithm) + .. versionadded:: 0.5 The ECDSA signature algorithm first standardized in NIST publication @@ -134,90 +135,105 @@ generation process. .. class:: SECT571K1 + .. versionadded:: 0.5 SECG curve ``sect571k1``. Also called NIST K-571. .. class:: SECT409K1 + .. versionadded:: 0.5 SECG curve ``sect409k1``. Also called NIST K-409. .. class:: SECT283K1 + .. versionadded:: 0.5 SECG curve ``sect283k1``. Also called NIST K-283. .. class:: SECT233K1 + .. versionadded:: 0.5 SECG curve ``sect233k1``. Also called NIST K-233. .. class:: SECT163K1 + .. versionadded:: 0.5 SECG curve ``sect163k1``. Also called NIST K-163. .. class:: SECT571R1 + .. versionadded:: 0.5 SECG curve ``sect571r1``. Also called NIST B-571. .. class:: SECT409R1 + .. versionadded:: 0.5 SECG curve ``sect409r1``. Also called NIST B-409. .. class:: SECT283R1 + .. versionadded:: 0.5 SECG curve ``sect283r1``. Also called NIST B-283. .. class:: SECT233R1 + .. versionadded:: 0.5 SECG curve ``sect233r1``. Also called NIST B-233. .. class:: SECT163R2 + .. versionadded:: 0.5 SECG curve ``sect163r2``. Also called NIST B-163. .. class:: SECP521R1 + .. versionadded:: 0.5 SECG curve ``secp521r1``. Also called NIST P-521. .. class:: SECP384R1 + .. versionadded:: 0.5 SECG curve ``secp384r1``. Also called NIST P-384. .. class:: SECP256R1 + .. versionadded:: 0.5 SECG curve ``secp256r1``. Also called NIST P-256. .. class:: SECT224R1 + .. versionadded:: 0.5 SECG curve ``secp224r1``. Also called NIST P-224. .. class:: SECP192R1 + .. versionadded:: 0.5 SECG curve ``secp192r1``. Also called NIST P-192. diff --git a/tests/hazmat/primitives/test_3des.py b/tests/hazmat/primitives/test_3des.py index b9354f0e..65660386 100644 --- a/tests/hazmat/primitives/test_3des.py +++ b/tests/hazmat/primitives/test_3des.py @@ -174,3 +174,40 @@ class TestTripleDESModeCFB8(object): ), lambda iv, **kwargs: modes.CFB8(binascii.unhexlify(iv)), ) + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + algorithms.TripleDES("\x00" * 8), modes.ECB() + ), + skip_message="Does not support TripleDES ECB", +) +@pytest.mark.cipher +class TestTripleDESModeECB(object): + test_KAT = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "3DES", "ECB"), + [ + "TECBinvperm.rsp", + "TECBpermop.rsp", + "TECBsubtab.rsp", + "TECBvarkey.rsp", + "TECBvartext.rsp", + ], + lambda keys, **kwargs: algorithms.TripleDES(binascii.unhexlify(keys)), + lambda **kwargs: modes.ECB(), + ) + + test_MMT = generate_encrypt_test( + load_nist_vectors, + os.path.join("ciphers", "3DES", "ECB"), + [ + "TECBMMT1.rsp", + "TECBMMT2.rsp", + "TECBMMT3.rsp", + ], + lambda key1, key2, key3, **kwargs: algorithms.TripleDES( + binascii.unhexlify(key1 + key2 + key3) + ), + lambda **kwargs: modes.ECB(), + ) |