# Digital Signature

Digital signatures are the electronic equivalent of hand written signatures. Signature schemes are used to:

• Confirm Validity
• Approve a Document
• Declare Ownership or Authorship

Crypto++ supports two broad categories of digital signatures: Signature Schemes with Appendix (SSA) and Signature Schemes with Recovery (PSSR). A signature scheme with appendix requires the verifier to have three items: the public key, the message, and the signature. A signature scheme with recovery requires only the public key and signature - the message is recovered from the signature.

Crypto++ supported signature schemes with appendix include RSA, DSA, GDSA, ESIGN, and Rabin-Williams. The three Crypto++ supported signature schemes with recovery are RSA, Nyberg-Rueppel, and Rabin-Williams.

Finally, if interested in short digital signature schemes, take time to evaluate McEliece Digital Signature Scheme (based on error correcting codes), Quartz (based on HFEs), and Pairing Based Cryptography. The McEliece cryptosystem predate RSA and produce some of the smallest signatures possible. Quartz is patent encumbered and appears to be poorly supported. For pairings, the PBC Library is offered under GNU licensing and is actively supported by Ben Lynn.

There are at least two distinct methods (with many variations) used to perform signing and verification in Crypto++. The most often used is pipelining, where an output from one filter is directed to the input of another filter. For an example of pipelining signatures through SignerFilters and SignatureVerificationFilters, see the examples presented in RSA and DSA. The second method uses Signer::SignMessage and Verifier::VerifyMessage to insert messages. The second method is demonstrated in both RSA and ESIGN.

ESIGN-Test.zip - Demonstrates ESIGN Signature and Verification - 5KB

DSA-Test.zip Demonstrates DSA Signature and Verification - 5KB

ECDSA-Test.zip Demonstrates Elliptic Curve DSA Signature and Verification - 7KB

RSA-SSA-Test.zip - Demonstrates RSA-SSA (Appendix) - 5KB

RSA-SSA-Filter-Test.zip - Demonstrates RSA-SSA (Appendix) using Filters - 5KB

RSA-PSSR-Test.zip - Demonstrates RSA-PSSR (Recovery) - 7KB

RSA-PSSR-Filter-Test.zip Demonstrates RSA-PSSR (Recovery) using Filters - 5KB

RSA-SSA-PKCSv15-Test.zip - Demonstrates RSA-SSA (PKCS v1.5) - 5KB