Crypto.Signature package¶
The 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¶
- Instantiate a new signer object for the desired algorithm,
for instance with
Crypto.Signature.pkcs1_15.new(). The first parameter is the key object (private key) obtained via theCrypto.PublicKeymodule. - Instantiate a cryptographic hash object, for instance with
Crypto.Hash.SHA384.new(). Then, process the message with itsupdate()method. - Invoke the
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¶
- Instantiate a new verifier object for the desired algorithm,
for instance with
Crypto.Signature.pkcs1_15.new(). The first parameter is the key object (public key) obtained via theCrypto.PublicKeymodule. - Instantiate a cryptographic hash object, for instance with
Crypto.Hash.SHA384.new(). Then, process the message with itsupdate()method. - Invoke the
verify()method on the verifier, with the hash object and the incoming signature as parameters. If the message is not authentic, anValueErroris raised.