Trait schnorr_fun::nonce::NonceGen[][src]

pub trait NonceGen: AddTag {
    type Hash: Digest;
    pub fn begin_derivation(
        &self,
        secret: &Scalar<Secret, NonZero>
    ) -> Self::Hash; }

A trait for hash based nonce gneration.

A NonceGen is a type that can repeatadly be asked to inititalize a hash state with begin_derivation that appear random for anyone who doesn't know the secret.

There are two main implementations of this trait:

  • Deterministic: just adds the secret to the hash and returns it.
  • Synthetic: adds randomness into the secret before hashing it.

In general it's better to use the [derive_nonce] macro than to call begin_derivation directly.

Associated Types

type Hash: Digest[src]

The type of hash that begin_derivation will return.

Loading content...

Required methods

pub fn begin_derivation(&self, secret: &Scalar<Secret, NonZero>) -> Self::Hash[src]

Takes a secret Scalar and outputs a hash. Before turining this hash into the nonce, you must add a secret input and all the public inputs from the scheme into the hash. So for a signature scheme for example you would add your secret key, the message and the public key.

Loading content...

Implementors

impl<H> NonceGen for Deterministic<H> where
    H: Tagged + Clone + Digest<OutputSize = UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>>, 
[src]

type Hash = H

impl<H, R> NonceGen for Synthetic<H, R> where
    R: NonceRng,
    H: Tagged + Digest<OutputSize = UInt<UInt<UInt<UInt<UInt<UInt<UTerm, B1>, B0>, B0>, B0>, B0>, B0>> + Clone
[src]

type Hash = H

Loading content...