Skip to content

Latest commit

 

History

History
131 lines (86 loc) · 4.31 KB

File metadata and controls

131 lines (86 loc) · 4.31 KB
.. hazmat::

Ed448 signing

.. currentmodule:: cryptography.hazmat.primitives.asymmetric.ed448


Ed448 is an elliptic curve signing algorithm using EdDSA.

Signing & Verification

>>> from cryptography.hazmat.primitives.asymmetric.ed448 import Ed448PrivateKey
>>> private_key = Ed448PrivateKey.generate()
>>> signature = private_key.sign(b"my authenticated message")
>>> public_key = private_key.public_key()
>>> # Raises InvalidSignature if verification fails
>>> public_key.verify(signature, b"my authenticated message")

Key interfaces

.. versionadded:: 2.6

.. classmethod:: generate()

    Generate an Ed448 private key.

    :returns: :class:`Ed448PrivateKey`

.. classmethod:: from_private_bytes(data)

    :param data: 57 byte private key.
    :type data: :term:`bytes-like`

    :returns: :class:`Ed448PrivateKey`

.. method:: public_key()

    :returns: :class:`Ed448PublicKey`

.. method:: sign(data)

    :param bytes data: The data to sign.

    :returns bytes: The 114 byte signature.

.. method:: private_bytes(encoding, format, encryption_algorithm)

    Allows serialization of the key to bytes. Encoding (
    :attr:`~cryptography.hazmat.primitives.serialization.Encoding.PEM`,
    :attr:`~cryptography.hazmat.primitives.serialization.Encoding.DER`, or
    :attr:`~cryptography.hazmat.primitives.serialization.Encoding.Raw`) and
    format (
    :attr:`~cryptography.hazmat.primitives.serialization.PrivateFormat.PKCS8`
    or
    :attr:`~cryptography.hazmat.primitives.serialization.PrivateFormat.Raw`
    ) are chosen to define the exact serialization.

    :param encoding: A value from the
        :class:`~cryptography.hazmat.primitives.serialization.Encoding` enum.

    :param format: A value from the
        :class:`~cryptography.hazmat.primitives.serialization.PrivateFormat`
        enum. If the ``encoding`` is
        :attr:`~cryptography.hazmat.primitives.serialization.Encoding.Raw`
        then ``format`` must be
        :attr:`~cryptography.hazmat.primitives.serialization.PrivateFormat.Raw`
        , otherwise it must be
        :attr:`~cryptography.hazmat.primitives.serialization.PrivateFormat.PKCS8`.

    :param encryption_algorithm: An instance of an object conforming to the
        :class:`~cryptography.hazmat.primitives.serialization.KeySerializationEncryption`
        interface.

    :return bytes: Serialized key.
.. versionadded:: 2.6

.. classmethod:: from_public_bytes(data)

    :param bytes data: 57 byte public key.

    :returns: :class:`Ed448PublicKey`

.. method:: public_bytes(encoding, format)

    Allows serialization of the key to bytes. Encoding (
    :attr:`~cryptography.hazmat.primitives.serialization.Encoding.PEM`,
    :attr:`~cryptography.hazmat.primitives.serialization.Encoding.DER`, or
    :attr:`~cryptography.hazmat.primitives.serialization.Encoding.Raw`) and
    format (
    :attr:`~cryptography.hazmat.primitives.serialization.PublicFormat.SubjectPublicKeyInfo`
    or
    :attr:`~cryptography.hazmat.primitives.serialization.PublicFormat.Raw`
    ) are chosen to define the exact serialization.

    :param encoding: A value from the
        :class:`~cryptography.hazmat.primitives.serialization.Encoding` enum.

    :param format: A value from the
        :class:`~cryptography.hazmat.primitives.serialization.PublicFormat`
        enum. If the ``encoding`` is
        :attr:`~cryptography.hazmat.primitives.serialization.Encoding.Raw`
        then ``format`` must be
        :attr:`~cryptography.hazmat.primitives.serialization.PublicFormat.Raw`
        , otherwise it must be
        :attr:`~cryptography.hazmat.primitives.serialization.PublicFormat.SubjectPublicKeyInfo`.

    :returns bytes: The public key bytes.

.. method:: verify(signature, data)

    :param bytes signature: The signature to verify.

    :param bytes data: The data to verify.

    :raises cryptography.exceptions.InvalidSignature: Raised when the
        signature cannot be verified.