Crate schnorr_fun[−][src]
Expand description
SchnorrFun!

Generate and verify Schnorr signatures on secp256k1. Uses secp256kfun.
Schnorr signatures were introduced (and patented until 2008) by their namesake in Efficient Signature Generation by Smart Cards. This implementation is based on the BIP-340 specification, but is flexible enough to be used as a general purpose Schnorr signature scheme.
Use
[dependencies] schnorr_fun = "0.6" sha2 = "0.9"
Should use?
This library and secp256kfun are experimental.
Synopsis
use schnorr_fun::{ fun::{marker::*, Scalar, nonce}, Schnorr, Message }; use sha2::Sha256; use rand::rngs::ThreadRng; // Use synthetic nonces let nonce_gen = nonce::Synthetic::<Sha256, nonce::GlobalRng<ThreadRng>>::default(); let schnorr = Schnorr::<Sha256, _>::new(nonce_gen.clone()); // Generate your public/private key-pair let keypair = schnorr.new_keypair(Scalar::random(&mut rand::thread_rng())); // Sign a variable length message let message = Message::<Public>::plain("the-times-of-london", b"Chancellor on brink of second bailout for banks"); // Sign the message with our keypair let signature = schnorr.sign(&keypair, message); // Get the verifier's key let verification_key = keypair.verification_key(); // Check it's valid 🍿 assert!(schnorr.verify(&verification_key, message, &signature));
Features
- BIP-340 compliant signing and verification
- Adaptor signatures
Re-exports
pub use secp256kfun as fun;
Modules
Algorithms for Schnorr “adaptor signature” signature encryption.
Nonce Genration utilities