A minimal RedJubjub implementation for use in Zebra.
Two parameterizations of RedJubjub are used in Zcash, one for
BindingSig
and one for SpendAuthSig
. This library distinguishes
these in the type system, using the [sealed] SigType
trait as a
type-level enum.
In addition to the Signature
, SigningKey
, VerificationKey
types,
the library also provides VerificationKeyBytes
, a [refinement] of a
[u8; 32]
indicating that bytes represent an encoding of a RedJubjub
verification key. This allows the VerificationKey
type to cache
verification checks related to the verification key encoding.
Creating a BindingSig
, serializing and deserializing it, and
verifying the signature:
```
use rand::thread_rng; use redjubjub::*;
let msg = b"Hello!";
// Generate a secret key and sign the message
let sk = SigningKey::
// Types can be converted to raw byte arrays using From/Into let sigbytes: [u8; 64] = sig.into(); let pkbytes: [u8; 32] = VerificationKey::from(&sk).into();
// Deserialize and verify the signature.
let sig: Signature
shell,no_run
cargo doc --features "nightly" --open