| .. hazmat:: |
| |
| Backend interfaces |
| ================== |
| |
| .. currentmodule:: cryptography.hazmat.backends.interfaces |
| |
| |
| Backend implementations may provide a number of interfaces to support |
| operations such as :doc:`/hazmat/primitives/symmetric-encryption`, |
| :doc:`/hazmat/primitives/cryptographic-hashes`, and |
| :doc:`/hazmat/primitives/mac/hmac`. |
| |
| A specific ``backend`` may provide one or more of these interfaces. |
| |
| |
| .. class:: CipherBackend |
| |
| A backend that provides methods for using ciphers for encryption |
| and decryption. |
| |
| The following backends implement this interface: |
| |
| * :doc:`/hazmat/backends/openssl` |
| |
| .. method:: cipher_supported(cipher, mode) |
| |
| Check if a ``cipher`` and ``mode`` combination is supported by |
| this backend. |
| |
| :param cipher: An instance of |
| :class:`~cryptography.hazmat.primitives.ciphers.CipherAlgorithm`. |
| |
| :param mode: An instance of |
| :class:`~cryptography.hazmat.primitives.ciphers.modes.Mode`. |
| |
| :returns: ``True`` if the specified ``cipher`` and ``mode`` combination |
| is supported by this backend, otherwise ``False`` |
| |
| |
| .. method:: create_symmetric_encryption_ctx(cipher, mode) |
| |
| Create a |
| :class:`~cryptography.hazmat.primitives.ciphers.CipherContext` that |
| can be used for encrypting data with the symmetric ``cipher`` using |
| the given ``mode``. |
| |
| :param cipher: An instance of |
| :class:`~cryptography.hazmat.primitives.ciphers.CipherAlgorithm`. |
| |
| :param mode: An instance of |
| :class:`~cryptography.hazmat.primitives.ciphers.modes.Mode`. |
| |
| :returns: |
| :class:`~cryptography.hazmat.primitives.ciphers.CipherContext` |
| |
| :raises ValueError: When tag is not None in an AEAD mode |
| |
| |
| .. method:: create_symmetric_decryption_ctx(cipher, mode) |
| |
| Create a |
| :class:`~cryptography.hazmat.primitives.ciphers.CipherContext` that |
| can be used for decrypting data with the symmetric ``cipher`` using |
| the given ``mode``. |
| |
| :param cipher: An instance of |
| :class:`~cryptography.hazmat.primitives.ciphers.CipherAlgorithm`. |
| |
| :param mode: An instance of |
| :class:`~cryptography.hazmat.primitives.ciphers.modes.Mode`. |
| |
| :returns: |
| :class:`~cryptography.hazmat.primitives.ciphers.CipherContext` |
| |
| :raises ValueError: When tag is None in an AEAD mode |
| |
| |
| .. class:: HashBackend |
| |
| A backend with methods for using cryptographic hash functions. |
| |
| The following backends implement this interface: |
| |
| * :doc:`/hazmat/backends/openssl` |
| |
| .. method:: hash_supported(algorithm) |
| |
| Check if the specified ``algorithm`` is supported by this backend. |
| |
| :param algorithm: An instance of |
| :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`. |
| |
| :returns: ``True`` if the specified ``algorithm`` is supported by this |
| backend, otherwise ``False``. |
| |
| |
| .. method:: create_hash_ctx(algorithm) |
| |
| Create a |
| :class:`~cryptography.hazmat.primitives.hashes.HashContext` that |
| uses the specified ``algorithm`` to calculate a message digest. |
| |
| :param algorithm: An instance of |
| :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`. |
| |
| :returns: |
| :class:`~cryptography.hazmat.primitives.hashes.HashContext` |
| |
| |
| .. class:: HMACBackend |
| |
| A backend with methods for using cryptographic hash functions as message |
| authentication codes. |
| |
| The following backends implement this interface: |
| |
| * :doc:`/hazmat/backends/openssl` |
| |
| .. method:: hmac_supported(algorithm) |
| |
| Check if the specified ``algorithm`` is supported by this backend. |
| |
| :param algorithm: An instance of |
| :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`. |
| |
| :returns: ``True`` if the specified ``algorithm`` is supported for HMAC |
| by this backend, otherwise ``False``. |
| |
| .. method:: create_hmac_ctx(key, algorithm) |
| |
| Create a |
| :class:`~cryptography.hazmat.primitives.hashes.HashContext` that |
| uses the specified ``algorithm`` to calculate a hash-based message |
| authentication code. |
| |
| :param bytes key: Secret key as ``bytes``. |
| |
| :param algorithm: An instance of |
| :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`. |
| |
| :returns: |
| :class:`~cryptography.hazmat.primitives.hashes.HashContext` |
| |
| |
| .. class:: CMACBackend |
| |
| .. versionadded:: 0.4 |
| |
| A backend with methods for using CMAC |
| |
| .. method:: cmac_algorithm_supported(algorithm) |
| |
| :param algorithm: An instance of |
| :class:`~cryptography.hazmat.primitives.ciphers.BlockCipherAlgorithm`. |
| |
| :return: Returns True if the block cipher is supported for CMAC by this backend |
| |
| .. method:: create_cmac_ctx(algorithm) |
| |
| Create a |
| :class:`~cryptography.hazmat.primitives.mac.MACContext` that |
| uses the specified ``algorithm`` to calculate a message authentication code. |
| |
| :param algorithm: An instance of |
| :class:`~cryptography.hazmat.primitives.ciphers.BlockCipherAlgorithm`. |
| |
| :returns: |
| :class:`~cryptography.hazmat.primitives.mac.MACContext` |
| |
| |
| .. class:: PBKDF2HMACBackend |
| |
| .. versionadded:: 0.2 |
| |
| A backend with methods for using PBKDF2 using HMAC as a PRF. |
| |
| The following backends implement this interface: |
| |
| * :doc:`/hazmat/backends/openssl` |
| |
| .. method:: pbkdf2_hmac_supported(algorithm) |
| |
| Check if the specified ``algorithm`` is supported by this backend. |
| |
| :param algorithm: An instance of |
| :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`. |
| |
| :returns: ``True`` if the specified ``algorithm`` is supported for |
| PBKDF2 HMAC by this backend, otherwise ``False``. |
| |
| .. method:: derive_pbkdf2_hmac(self, algorithm, length, salt, iterations, key_material) |
| |
| :param algorithm: An instance of |
| :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`. |
| |
| :param int length: The desired length of the derived key. Maximum is |
| (2\ :sup:`32` - 1) * ``algorithm.digest_size`` |
| |
| :param bytes salt: A salt. |
| |
| :param int iterations: The number of iterations to perform of the hash |
| function. This can be used to control the length of time the |
| operation takes. Higher numbers help mitigate brute force attacks |
| against derived keys. |
| |
| :param bytes key_material: The key material to use as a basis for |
| the derived key. This is typically a password. |
| |
| :return bytes: Derived key. |
| |
| |
| .. class:: RSABackend |
| |
| .. versionadded:: 0.2 |
| |
| A backend with methods for using RSA. |
| |
| .. method:: generate_rsa_private_key(public_exponent, key_size) |
| |
| :param int public_exponent: The public exponent of the new key. |
| Often one of the small Fermat primes 3, 5, 17, 257 or 65537. |
| |
| :param int key_size: The length in bits of the modulus. Should be |
| at least 2048. |
| |
| :return: A new instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`. |
| |
| :raises ValueError: If the public_exponent is not valid. |
| |
| .. method:: rsa_padding_supported(padding) |
| |
| Check if the specified ``padding`` is supported by the backend. |
| |
| :param padding: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.padding.AsymmetricPadding`. |
| |
| :returns: ``True`` if the specified ``padding`` is supported by this |
| backend, otherwise ``False``. |
| |
| .. method:: generate_rsa_parameters_supported(public_exponent, key_size) |
| |
| Check if the specified parameters are supported for key generation by |
| the backend. |
| |
| :param int public_exponent: The public exponent. |
| |
| :param int key_size: The bit length of the generated modulus. |
| |
| .. method:: load_rsa_private_numbers(numbers) |
| |
| :param numbers: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateNumbers`. |
| |
| :returns: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`. |
| |
| :raises ValueError: This is raised when the values of ``p``, ``q``, |
| ``private_exponent``, ``public_exponent``, or ``modulus`` do not |
| match the bounds specified in :rfc:`3447`. |
| |
| :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised |
| when any backend specific criteria are not met. |
| |
| .. method:: load_rsa_public_numbers(numbers) |
| |
| :param numbers: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicNumbers`. |
| |
| :returns: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPublicKey`. |
| |
| :raises ValueError: This is raised when the values of |
| ``public_exponent`` or ``modulus`` do not match the bounds |
| specified in :rfc:`3447`. |
| |
| :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised |
| when any backend specific criteria are not met. |
| |
| |
| .. class:: DSABackend |
| |
| .. versionadded:: 0.4 |
| |
| A backend with methods for using DSA. |
| |
| .. method:: generate_dsa_parameters(key_size) |
| |
| :param int key_size: The length of the modulus in bits. It should be |
| either 1024, 2048 or 3072. For keys generated in 2015 this should |
| be at least 2048. |
| Note that some applications (such as SSH) have not yet gained |
| support for larger key sizes specified in FIPS 186-3 and are still |
| restricted to only the 1024-bit keys specified in FIPS 186-2. |
| |
| :return: A new instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAParameters`. |
| |
| .. method:: generate_dsa_private_key(parameters) |
| |
| :param parameters: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAParameters`. |
| |
| :return: A new instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`. |
| |
| :raises ValueError: This is raised if the key size is not one of 1024, |
| 2048, or 3072. |
| |
| .. method:: generate_dsa_private_key_and_parameters(key_size) |
| |
| :param int key_size: The length of the modulus in bits. It should be |
| either 1024, 2048 or 3072. For keys generated in 2015 this should |
| be at least 2048. |
| Note that some applications (such as SSH) have not yet gained |
| support for larger key sizes specified in FIPS 186-3 and are still |
| restricted to only the 1024-bit keys specified in FIPS 186-2. |
| |
| :return: A new instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`. |
| |
| :raises ValueError: This is raised if the key size is not supported |
| by the backend. |
| |
| .. method:: dsa_hash_supported(algorithm) |
| |
| :param algorithm: An instance of |
| :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm`. |
| |
| :returns: ``True`` if the specified ``algorithm`` is supported by this |
| backend, otherwise ``False``. |
| |
| .. method:: dsa_parameters_supported(p, q, g) |
| |
| :param int p: The p value of a DSA key. |
| |
| :param int q: The q value of a DSA key. |
| |
| :param int g: The g value of a DSA key. |
| |
| :returns: ``True`` if the given values of ``p``, ``q``, and ``g`` are |
| supported by this backend, otherwise ``False``. |
| |
| .. method:: load_dsa_parameter_numbers(numbers) |
| |
| :param numbers: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAParameterNumbers`. |
| |
| :returns: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAParameters`. |
| |
| :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised |
| when any backend specific criteria are not met. |
| |
| .. method:: load_dsa_private_numbers(numbers) |
| |
| :param numbers: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateNumbers`. |
| |
| :returns: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey`. |
| |
| :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised |
| when any backend specific criteria are not met. |
| |
| .. method:: load_dsa_public_numbers(numbers) |
| |
| :param numbers: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicNumbers`. |
| |
| :returns: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPublicKey`. |
| |
| :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised |
| when any backend specific criteria are not met. |
| |
| |
| .. class:: EllipticCurveBackend |
| |
| .. versionadded:: 0.5 |
| |
| .. method:: elliptic_curve_supported(curve) |
| |
| :param curve: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurve`. |
| |
| :returns: True if the elliptic curve is supported by this backend. |
| |
| .. method:: elliptic_curve_signature_algorithm_supported(signature_algorithm, curve) |
| |
| :param signature_algorithm: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurveSignatureAlgorithm`. |
| |
| :param curve: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurve`. |
| |
| :returns: True if the signature algorithm and curve are supported by this backend. |
| |
| .. method:: generate_elliptic_curve_private_key(curve) |
| |
| :param curve: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurve`. |
| |
| .. method:: load_elliptic_curve_private_numbers(numbers) |
| |
| :param numbers: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateNumbers`. |
| |
| :returns: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`. |
| |
| .. method:: load_elliptic_curve_public_numbers(numbers) |
| |
| :param numbers: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicNumbers`. |
| |
| :returns: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePublicKey`. |
| |
| .. method:: derive_elliptic_curve_private_key(private_value, curve) |
| |
| :param private_value: A secret scalar value. |
| |
| :param curve: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurve`. |
| |
| :returns: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey`. |
| |
| .. class:: PEMSerializationBackend |
| |
| .. versionadded:: 0.6 |
| |
| A backend with methods for working with any PEM encoded keys. |
| |
| .. method:: load_pem_private_key(data, password) |
| |
| :param bytes data: PEM 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_pem_public_key(data) |
| |
| :param bytes data: PEM 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. |
| |
| .. method:: load_pem_parameters(data) |
| |
| .. versionadded:: 2.0 |
| |
| :param bytes data: PEM data to load. |
| :return: A new instance of the appropriate type of asymmetric |
| parameters the 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. |
| |
| .. method:: load_der_parameters(data) |
| |
| .. versionadded:: 2.0 |
| |
| :param bytes data: DER data to load. |
| :return: A new instance of the appropriate type of asymmetric |
| parameters the serialized data contains. |
| :raises ValueError: If the data could not be deserialized. |
| |
| |
| .. class:: X509Backend |
| |
| .. versionadded:: 0.7 |
| |
| A backend with methods for working with X.509 objects. |
| |
| .. method:: load_pem_x509_certificate(data) |
| |
| :param bytes data: PEM formatted certificate data. |
| |
| :returns: An instance of :class:`~cryptography.x509.Certificate`. |
| |
| .. method:: load_der_x509_certificate(data) |
| |
| :param bytes data: DER formatted certificate data. |
| |
| :returns: An instance of :class:`~cryptography.x509.Certificate`. |
| |
| .. method:: load_pem_x509_csr(data) |
| |
| .. versionadded:: 0.9 |
| |
| :param bytes data: PEM formatted certificate signing request data. |
| |
| :returns: An instance of |
| :class:`~cryptography.x509.CertificateSigningRequest`. |
| |
| .. method:: load_der_x509_csr(data) |
| |
| .. versionadded:: 0.9 |
| |
| :param bytes data: DER formatted certificate signing request data. |
| |
| :returns: An instance of |
| :class:`~cryptography.x509.CertificateSigningRequest`. |
| |
| .. method:: create_x509_csr(builder, private_key, algorithm) |
| |
| .. versionadded:: 1.0 |
| |
| :param builder: An instance of |
| :class:`~cryptography.x509.CertificateSigningRequestBuilder`. |
| |
| :param private_key: The |
| :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`, |
| :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey` or |
| :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey` |
| that will be used to sign the request. When the request is |
| signed by a certificate authority, the private key's associated |
| public key will be stored in the resulting certificate. |
| |
| :param algorithm: The |
| :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` |
| that will be used to generate the request signature. |
| |
| :returns: A new instance of |
| :class:`~cryptography.x509.CertificateSigningRequest`. |
| |
| .. method:: create_x509_certificate(builder, private_key, algorithm) |
| |
| .. versionadded:: 1.0 |
| |
| :param builder: An instance of |
| :class:`~cryptography.x509.CertificateBuilder`. |
| |
| :param private_key: The |
| :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`, |
| :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey` or |
| :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey` |
| that will be used to sign the certificate. |
| |
| :param algorithm: The |
| :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` |
| that will be used to generate the certificate signature. |
| |
| :returns: A new instance of :class:`~cryptography.x509.Certificate`. |
| |
| .. method:: create_x509_crl(builder, private_key, algorithm) |
| |
| .. versionadded:: 1.2 |
| |
| :param builder: An instance of |
| :class:`~cryptography.x509.CertificateRevocationListBuilder`. |
| |
| :param private_key: The |
| :class:`~cryptography.hazmat.primitives.asymmetric.rsa.RSAPrivateKey`, |
| :class:`~cryptography.hazmat.primitives.asymmetric.dsa.DSAPrivateKey` or |
| :class:`~cryptography.hazmat.primitives.asymmetric.ec.EllipticCurvePrivateKey` |
| that will be used to sign the CRL. |
| |
| :param algorithm: The |
| :class:`~cryptography.hazmat.primitives.hashes.HashAlgorithm` |
| that will be used to generate the CRL signature. |
| |
| :returns: A new instance of |
| :class:`~cryptography.x509.CertificateRevocationList`. |
| |
| .. method:: create_x509_revoked_certificate(builder) |
| |
| .. versionadded:: 1.2 |
| |
| :param builder: An instance of RevokedCertificateBuilder. |
| |
| :returns: A new instance of |
| :class:`~cryptography.x509.RevokedCertificate`. |
| |
| .. method:: x509_name_bytes(name) |
| |
| .. versionadded:: 1.6 |
| |
| :param name: An instance of :class:`~cryptography.x509.Name`. |
| |
| :return bytes: The DER encoded bytes. |
| |
| .. class:: DHBackend |
| |
| .. versionadded:: 0.9 |
| |
| A backend with methods for doing Diffie-Hellman key exchange. |
| |
| .. method:: generate_dh_parameters(generator, key_size) |
| |
| :param int generator: The generator to use. Often 2 or 5. |
| |
| :param int key_size: The bit length of the prime modulus to generate. |
| |
| :return: A new instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHParameters`. |
| |
| :raises ValueError: If ``key_size`` is not at least 512. |
| |
| .. method:: generate_dh_private_key(parameters) |
| |
| :param parameters: An instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHParameters`. |
| |
| :return: A new instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPrivateKey`. |
| |
| .. method:: generate_dh_private_key_and_parameters(generator, key_size) |
| |
| :param int generator: The generator to use. Often 2 or 5. |
| |
| :param int key_size: The bit length of the prime modulus to generate. |
| |
| :return: A new instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPrivateKey`. |
| |
| :raises ValueError: If ``key_size`` is not at least 512. |
| |
| .. method:: load_dh_private_numbers(numbers) |
| |
| :param numbers: A |
| :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPrivateNumbers` |
| instance. |
| |
| :return: A new instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPrivateKey`. |
| |
| :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised |
| when any backend specific criteria are not met. |
| |
| .. method:: load_dh_public_numbers(numbers) |
| |
| :param numbers: A |
| :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPublicNumbers` |
| instance. |
| |
| :return: A new instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHPublicKey`. |
| |
| :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised |
| when any backend specific criteria are not met. |
| |
| .. method:: load_dh_parameter_numbers(numbers) |
| |
| :param numbers: A |
| :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHParameterNumbers` |
| instance. |
| |
| :return: A new instance of |
| :class:`~cryptography.hazmat.primitives.asymmetric.dh.DHParameters`. |
| |
| :raises cryptography.exceptions.UnsupportedAlgorithm: This is raised |
| when any backend specific criteria are not met. |
| |
| .. method:: dh_parameters_supported(p, g, q=None) |
| |
| :param int p: The p value of the DH key. |
| |
| :param int g: The g value of the DH key. |
| |
| :param int q: The q value of the DH key. |
| |
| :returns: ``True`` if the given values of ``p``, ``g`` and ``q`` |
| are supported by this backend, otherwise ``False``. |
| |
| .. versionadded:: 1.8 |
| |
| .. method:: dh_x942_serialization_supported() |
| |
| :returns: True if serialization of DH objects with |
| subgroup order (q) is supported by this backend. |
| |
| |
| .. class:: ScryptBackend |
| |
| .. versionadded:: 1.6 |
| |
| A backend with methods for using Scrypt. |
| |
| The following backends implement this interface: |
| |
| * :doc:`/hazmat/backends/openssl` |
| |
| .. method:: derive_scrypt(self, key_material, salt, length, n, r, p) |
| |
| :param bytes key_material: The key material to use as a basis for |
| the derived key. This is typically a password. |
| |
| :param bytes salt: A salt. |
| |
| :param int length: The desired length of the derived key. |
| |
| :param int n: CPU/Memory cost parameter. It must be larger than 1 and be a |
| power of 2. |
| |
| :param int r: Block size parameter. |
| |
| :param int p: Parallelization parameter. |
| |
| :return bytes: Derived key. |
| |