:mod:`Crypto.Signature` package =============================== The :mod:`Crypto.Signature` package contains algorithms for performing digital signatures, used to guarantee integrity and non-repudiation. Digital signatures are based on public key cryptography: the party that signs a message holds the *private key*, the one that verifies the signature holds the *public key*. Signing a message ----------------- 1. Instantiate a new signer object for the desired algorithm, for instance with :func:`Crypto.Signature.pkcs1_15.new`. The first parameter is the key object (*private* key) obtained via the :mod:`Crypto.PublicKey` module. 2. Instantiate a cryptographic hash object, for instance with :func:`Crypto.Hash.SHA384.new`. Then, process the message with its :func:`update` method. 3. Invoke the :func:`sign` method on the signer with the hash object as parameter. The output is the signature of the message (a byte string). Verifying a signature --------------------- 1. Instantiate a new verifier object for the desired algorithm, for instance with :func:`Crypto.Signature.pkcs1_15.new`. The first parameter is the key object (*public* key) obtained via the :mod:`Crypto.PublicKey` module. 2. Instantiate a cryptographic hash object, for instance with :func:`Crypto.Hash.SHA384.new`. Then, process the message with its :func:`update` method. 3. Invoke the :func:`verify` method on the verifier, with the hash object and the incoming signature as parameters. If the message is not authentic, an :py:exc:`ValueError` is raised. Available mechanisms -------------------- * :doc:`pkcs1_v1_5` * :doc:`pkcs1_pss` * :doc:`eddsa` * :doc:`dsa`