aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.rst3
-rw-r--r--cryptography/hazmat/backends/commoncrypto/backend.py1
-rw-r--r--cryptography/hazmat/backends/openssl/backend.py5
-rw-r--r--docs/development/getting-started.rst7
-rw-r--r--docs/hazmat/primitives/asymmetric/ec.rst16
-rw-r--r--tests/hazmat/primitives/test_3des.py37
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(),
+ )