[][src]Trait secp256kfun::nonce::NonceGen

pub trait NonceGen: AddTag {
    type Hash: Digest<OutputSize = U32>;
    fn begin_derivation(&self, secret: &Scalar) -> 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<OutputSize = U32>

The type of hash that begin_derivation will return.

Loading content...

Required methods

fn begin_derivation(&self, secret: &Scalar) -> Self::Hash

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

Loading content...

Implementors

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

type Hash = H

impl<H: Tagged + Digest<OutputSize = U32> + Clone> NonceGen for Deterministic<H>[src]

type Hash = H

Loading content...