diff options
author | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-02-12 00:01:53 -0600 |
---|---|---|
committer | Paul Kehrer <paul.l.kehrer@gmail.com> | 2015-02-12 00:01:53 -0600 |
commit | 3bc87ab21f7b599bfc18fc53966de3c521a25435 (patch) | |
tree | caf4bc23e6f3cc0e991804bfc04056cfc40e0465 /src | |
parent | c39abdbca387fe923a410478af1abb37561a7220 (diff) | |
download | cryptography-3bc87ab21f7b599bfc18fc53966de3c521a25435.tar.gz cryptography-3bc87ab21f7b599bfc18fc53966de3c521a25435.tar.bz2 cryptography-3bc87ab21f7b599bfc18fc53966de3c521a25435.zip |
move EC interfaces
Diffstat (limited to 'src')
5 files changed, 167 insertions, 125 deletions
diff --git a/src/cryptography/hazmat/backends/openssl/ec.py b/src/cryptography/hazmat/backends/openssl/ec.py index 33d5b498..d050c6b2 100644 --- a/src/cryptography/hazmat/backends/openssl/ec.py +++ b/src/cryptography/hazmat/backends/openssl/ec.py @@ -146,7 +146,7 @@ class _ECDSAVerificationContext(object): return True -@utils.register_interface(interfaces.EllipticCurvePrivateKeyWithNumbers) +@utils.register_interface(ec.EllipticCurvePrivateKeyWithNumbers) class _EllipticCurvePrivateKey(object): def __init__(self, backend, ec_key_cdata): self._backend = backend @@ -199,7 +199,7 @@ class _EllipticCurvePrivateKey(object): ) -@utils.register_interface(interfaces.EllipticCurvePublicKeyWithNumbers) +@utils.register_interface(ec.EllipticCurvePublicKeyWithNumbers) class _EllipticCurvePublicKey(object): def __init__(self, backend, ec_key_cdata): self._backend = backend diff --git a/src/cryptography/hazmat/primitives/asymmetric/ec.py b/src/cryptography/hazmat/primitives/asymmetric/ec.py index c9124249..c7749ca5 100644 --- a/src/cryptography/hazmat/primitives/asymmetric/ec.py +++ b/src/cryptography/hazmat/primitives/asymmetric/ec.py @@ -4,97 +4,176 @@ from __future__ import absolute_import, division, print_function +import abc + import six from cryptography import utils -from cryptography.hazmat.primitives import interfaces -@utils.register_interface(interfaces.EllipticCurve) +@six.add_metaclass(abc.ABCMeta) +class EllipticCurve(object): + @abc.abstractproperty + def name(self): + """ + The name of the curve. e.g. secp256r1. + """ + + @abc.abstractproperty + def key_size(self): + """ + The bit length of the base point of the curve. + """ + + +@six.add_metaclass(abc.ABCMeta) +class EllipticCurveSignatureAlgorithm(object): + @abc.abstractproperty + def algorithm(self): + """ + The digest algorithm used with this signature. + """ + + +@six.add_metaclass(abc.ABCMeta) +class EllipticCurvePrivateKey(object): + @abc.abstractmethod + def signer(self, signature_algorithm): + """ + Returns an AsymmetricSignatureContext used for signing data. + """ + + @abc.abstractmethod + def public_key(self): + """ + The EllipticCurvePublicKey for this private key. + """ + + @abc.abstractproperty + def curve(self): + """ + The EllipticCurve that this key is on. + """ + + +@six.add_metaclass(abc.ABCMeta) +class EllipticCurvePrivateKeyWithNumbers(EllipticCurvePrivateKey): + @abc.abstractmethod + def private_numbers(self): + """ + Returns an EllipticCurvePrivateNumbers. + """ + + +@six.add_metaclass(abc.ABCMeta) +class EllipticCurvePublicKey(object): + @abc.abstractmethod + def verifier(self, signature, signature_algorithm): + """ + Returns an AsymmetricVerificationContext used for signing data. + """ + + @abc.abstractproperty + def curve(self): + """ + The EllipticCurve that this key is on. + """ + + +@six.add_metaclass(abc.ABCMeta) +class EllipticCurvePublicKeyWithNumbers(EllipticCurvePublicKey): + @abc.abstractmethod + def public_numbers(self): + """ + Returns an EllipticCurvePublicNumbers. + """ + + +@utils.register_interface(EllipticCurve) class SECT571R1(object): name = "sect571r1" key_size = 571 -@utils.register_interface(interfaces.EllipticCurve) +@utils.register_interface(EllipticCurve) class SECT409R1(object): name = "sect409r1" key_size = 409 -@utils.register_interface(interfaces.EllipticCurve) +@utils.register_interface(EllipticCurve) class SECT283R1(object): name = "sect283r1" key_size = 283 -@utils.register_interface(interfaces.EllipticCurve) +@utils.register_interface(EllipticCurve) class SECT233R1(object): name = "sect233r1" key_size = 233 -@utils.register_interface(interfaces.EllipticCurve) +@utils.register_interface(EllipticCurve) class SECT163R2(object): name = "sect163r2" key_size = 163 -@utils.register_interface(interfaces.EllipticCurve) +@utils.register_interface(EllipticCurve) class SECT571K1(object): name = "sect571k1" key_size = 571 -@utils.register_interface(interfaces.EllipticCurve) +@utils.register_interface(EllipticCurve) class SECT409K1(object): name = "sect409k1" key_size = 409 -@utils.register_interface(interfaces.EllipticCurve) +@utils.register_interface(EllipticCurve) class SECT283K1(object): name = "sect283k1" key_size = 283 -@utils.register_interface(interfaces.EllipticCurve) +@utils.register_interface(EllipticCurve) class SECT233K1(object): name = "sect233k1" key_size = 233 -@utils.register_interface(interfaces.EllipticCurve) +@utils.register_interface(EllipticCurve) class SECT163K1(object): name = "sect163k1" key_size = 163 -@utils.register_interface(interfaces.EllipticCurve) +@utils.register_interface(EllipticCurve) class SECP521R1(object): name = "secp521r1" key_size = 521 -@utils.register_interface(interfaces.EllipticCurve) +@utils.register_interface(EllipticCurve) class SECP384R1(object): name = "secp384r1" key_size = 384 -@utils.register_interface(interfaces.EllipticCurve) +@utils.register_interface(EllipticCurve) class SECP256R1(object): name = "secp256r1" key_size = 256 -@utils.register_interface(interfaces.EllipticCurve) +@utils.register_interface(EllipticCurve) class SECP224R1(object): name = "secp224r1" key_size = 224 -@utils.register_interface(interfaces.EllipticCurve) +@utils.register_interface(EllipticCurve) class SECP192R1(object): name = "secp192r1" key_size = 192 @@ -124,7 +203,7 @@ _CURVE_TYPES = { } -@utils.register_interface(interfaces.EllipticCurveSignatureAlgorithm) +@utils.register_interface(EllipticCurveSignatureAlgorithm) class ECDSA(object): def __init__(self, algorithm): self._algorithm = algorithm @@ -144,7 +223,7 @@ class EllipticCurvePublicNumbers(object): ): raise TypeError("x and y must be integers.") - if not isinstance(curve, interfaces.EllipticCurve): + if not isinstance(curve, EllipticCurve): raise TypeError("curve must provide the EllipticCurve interface.") self._y = y diff --git a/src/cryptography/hazmat/primitives/interfaces/__init__.py b/src/cryptography/hazmat/primitives/interfaces/__init__.py index e0bcb8f5..69593b4c 100644 --- a/src/cryptography/hazmat/primitives/interfaces/__init__.py +++ b/src/cryptography/hazmat/primitives/interfaces/__init__.py @@ -9,13 +9,7 @@ import abc import six from cryptography import utils -from cryptography.hazmat.primitives.asymmetric import dsa -from cryptography.hazmat.primitives.asymmetric import rsa -from cryptography.hazmat.primitives.interfaces.asymmetric.ec import ( - EllipticCurve, EllipticCurvePrivateKey, EllipticCurvePrivateKeyWithNumbers, - EllipticCurvePublicKey, EllipticCurvePublicKeyWithNumbers, - EllipticCurveSignatureAlgorithm -) +from cryptography.hazmat.primitives.asymmetric import dsa, ec, rsa from cryptography.hazmat.primitives.interfaces.ciphers import ( BlockCipherAlgorithm, CipherAlgorithm, Mode, ModeWithAuthenticationTag, ModeWithInitializationVector, ModeWithNonce @@ -24,18 +18,79 @@ from cryptography.hazmat.primitives.interfaces.ciphers import ( __all__ = [ "BlockCipherAlgorithm", "CipherAlgorithm", - "EllipticCurve", - "EllipticCurvePrivateKey", - "EllipticCurvePrivateKeyWithNumbers", - "EllipticCurvePublicKey", - "EllipticCurvePublicKeyWithNumbers", - "EllipticCurveSignatureAlgorithm", "Mode", "ModeWithAuthenticationTag", "ModeWithInitializationVector", "ModeWithNonce" ] + +EllipticCurve = utils.deprecated( + ec.EllipticCurve, + __name__, + ( + "The EllipticCurve interface has moved to the " + "cryptography.hazmat.primitives.asymmetric.ec module" + ), + utils.DeprecatedIn08 +) + + +EllipticCurvePrivateKey = utils.deprecated( + ec.EllipticCurvePrivateKey, + __name__, + ( + "The EllipticCurvePrivateKey interface has moved to the " + "cryptography.hazmat.primitives.asymmetric.ec module" + ), + utils.DeprecatedIn08 +) + + +EllipticCurvePrivateKeyWithNumbers = utils.deprecated( + ec.EllipticCurvePrivateKeyWithNumbers, + __name__, + ( + "The EllipticCurvePrivateKeyWithNumbers interface has moved to the " + "cryptography.hazmat.primitives.asymmetric.ec module" + ), + utils.DeprecatedIn08 +) + + +EllipticCurvePublicKey = utils.deprecated( + ec.EllipticCurvePublicKey, + __name__, + ( + "The EllipticCurvePublicKey interface has moved to the " + "cryptography.hazmat.primitives.asymmetric.ec module" + ), + utils.DeprecatedIn08 +) + + +EllipticCurvePublicKeyWithNumbers = utils.deprecated( + ec.EllipticCurvePublicKeyWithNumbers, + __name__, + ( + "The EllipticCurvePublicKeyWithNumbers interface has moved to the " + "cryptography.hazmat.primitives.asymmetric.ec module" + ), + utils.DeprecatedIn08 +) + + +EllipticCurveSignatureAlgorithm = utils.deprecated( + ec.EllipticCurveSignatureAlgorithm, + __name__, + ( + "The EllipticCurveSignatureAlgorithm interface has moved to the " + "cryptography.hazmat.primitives.asymmetric.ec module" + ), + utils.DeprecatedIn08 +) + + DSAParameters = utils.deprecated( dsa.DSAParameters, __name__, diff --git a/src/cryptography/hazmat/primitives/interfaces/asymmetric/__init__.py b/src/cryptography/hazmat/primitives/interfaces/asymmetric/__init__.py deleted file mode 100644 index 4b540884..00000000 --- a/src/cryptography/hazmat/primitives/interfaces/asymmetric/__init__.py +++ /dev/null @@ -1,5 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import absolute_import, division, print_function diff --git a/src/cryptography/hazmat/primitives/interfaces/asymmetric/ec.py b/src/cryptography/hazmat/primitives/interfaces/asymmetric/ec.py deleted file mode 100644 index 2a624576..00000000 --- a/src/cryptography/hazmat/primitives/interfaces/asymmetric/ec.py +++ /dev/null @@ -1,87 +0,0 @@ -# This file is dual licensed under the terms of the Apache License, Version -# 2.0, and the BSD License. See the LICENSE file in the root of this repository -# for complete details. - -from __future__ import absolute_import, division, print_function - -import abc - -import six - - -@six.add_metaclass(abc.ABCMeta) -class EllipticCurve(object): - @abc.abstractproperty - def name(self): - """ - The name of the curve. e.g. secp256r1. - """ - - @abc.abstractproperty - def key_size(self): - """ - The bit length of the base point of the curve. - """ - - -@six.add_metaclass(abc.ABCMeta) -class EllipticCurveSignatureAlgorithm(object): - @abc.abstractproperty - def algorithm(self): - """ - The digest algorithm used with this signature. - """ - - -@six.add_metaclass(abc.ABCMeta) -class EllipticCurvePrivateKey(object): - @abc.abstractmethod - def signer(self, signature_algorithm): - """ - Returns an AsymmetricSignatureContext used for signing data. - """ - - @abc.abstractmethod - def public_key(self): - """ - The EllipticCurvePublicKey for this private key. - """ - - @abc.abstractproperty - def curve(self): - """ - The EllipticCurve that this key is on. - """ - - -@six.add_metaclass(abc.ABCMeta) -class EllipticCurvePrivateKeyWithNumbers(EllipticCurvePrivateKey): - @abc.abstractmethod - def private_numbers(self): - """ - Returns an EllipticCurvePrivateNumbers. - """ - - -@six.add_metaclass(abc.ABCMeta) -class EllipticCurvePublicKey(object): - @abc.abstractmethod - def verifier(self, signature, signature_algorithm): - """ - Returns an AsymmetricVerificationContext used for signing data. - """ - - @abc.abstractproperty - def curve(self): - """ - The EllipticCurve that this key is on. - """ - - -@six.add_metaclass(abc.ABCMeta) -class EllipticCurvePublicKeyWithNumbers(EllipticCurvePublicKey): - @abc.abstractmethod - def public_numbers(self): - """ - Returns an EllipticCurvePublicNumbers. - """ |