diff options
author | Alex Gaynor <alex.gaynor@gmail.com> | 2015-01-17 13:57:41 -0500 |
---|---|---|
committer | Alex Gaynor <alex.gaynor@gmail.com> | 2015-01-17 13:57:41 -0500 |
commit | 2dcdf87195b9bbe3be8abd5439ebc14a4e8bfe36 (patch) | |
tree | e09dda9d096e5b6a1d922a793780480fc45601ac | |
parent | ec8a4cdfbd074d606e506f23eca5b75cc904923b (diff) | |
parent | e788fa9866494aed36436a6c1eaeb8a33409b770 (diff) | |
download | cryptography-2dcdf87195b9bbe3be8abd5439ebc14a4e8bfe36.tar.gz cryptography-2dcdf87195b9bbe3be8abd5439ebc14a4e8bfe36.tar.bz2 cryptography-2dcdf87195b9bbe3be8abd5439ebc14a4e8bfe36.zip |
Merge pull request #1608 from reaperhulk/der-backend-interfaces
add DER backend interfaces
-rw-r--r-- | docs/hazmat/backends/interfaces.rst | 24 | ||||
-rw-r--r-- | src/cryptography/hazmat/backends/interfaces.py | 16 |
2 files changed, 40 insertions, 0 deletions
diff --git a/docs/hazmat/backends/interfaces.rst b/docs/hazmat/backends/interfaces.rst index 052e397f..8efe2ce9 100644 --- a/docs/hazmat/backends/interfaces.rst +++ b/docs/hazmat/backends/interfaces.rst @@ -468,6 +468,30 @@ A specific ``backend`` may provide one or more of these interfaces. serialized data contains. :raises ValueError: If the data could not be deserialized. +.. class:: DERSerializationBackend + + .. versionadded:: 0.8 + + A backend with methods for working with DER encoded keys. + + .. method:: load_der_private_key(data, password) + + :param bytes data: DER data to load. + :param bytes password: The password to use if the data is encrypted. + Should be ``None`` if the data is not encrypted. + :return: A new instance of the appropriate type of private key that the + serialized data contains. + :raises ValueError: If the data could not be deserialized. + :raises cryptography.exceptions.UnsupportedAlgorithm: If the data is + encrypted with an unsupported algorithm. + + .. method:: load_der_public_key(data) + + :param bytes data: DER data to load. + :return: A new instance of the appropriate type of public key + serialized data contains. + :raises ValueError: If the data could not be deserialized. + .. class:: X509Backend .. versionadded:: 0.7 diff --git a/src/cryptography/hazmat/backends/interfaces.py b/src/cryptography/hazmat/backends/interfaces.py index 4dc879ac..79808909 100644 --- a/src/cryptography/hazmat/backends/interfaces.py +++ b/src/cryptography/hazmat/backends/interfaces.py @@ -233,6 +233,22 @@ class PEMSerializationBackend(object): @six.add_metaclass(abc.ABCMeta) +class DERSerializationBackend(object): + @abc.abstractmethod + def load_der_private_key(self, data, password): + """ + Loads a private key from DER encoded data. Uses the provided password + if the data is encrypted. + """ + + @abc.abstractmethod + def load_der_public_key(self, data): + """ + Loads a public key from DER encoded data. + """ + + +@six.add_metaclass(abc.ABCMeta) class X509Backend(object): @abc.abstractmethod def load_pem_x509_certificate(self, data): |