[][src]Struct nazgul::mlsag::MLSAG

pub struct MLSAG { /* fields omitted */ }

Multilayer Linkable Spontaneous Anonymous Group (MLSAG) signatures

In order to sign transactions, one has to sign with multiple private keys. In this paper, Shen Noether et al. describe a multi-layered generalization of the bLSAG signature scheme applicable when we have a set of n · m keys

Please read tests at the bottom of the source code for this module for examples on how to use it

Trait Implementations

impl KeyImageGen<Vec<Scalar>, Vec<RistrettoPoint>> for MLSAG[src]

fn generate_key_image<Hash: Digest<OutputSize = U64> + Clone + Default>(
    ks: Vec<Scalar>
) -> Vec<RistrettoPoint>
[src]

Some signature schemes require the key images to be signed as well. Use this method to generate them

This is for linking two signatures and checking if they are signed by the same person

impl Sign<Vec<Scalar>, Vec<Vec<RistrettoPoint>>> for MLSAG[src]

fn sign<Hash: Digest<OutputSize = U64> + Clone + Default, CSPRNG: CryptoRng + RngCore + Default>(
    ks: Vec<Scalar>,
    ring: Vec<Vec<RistrettoPoint>>,
    message: &Vec<u8>
) -> MLSAG
[src]

To sign you need ks which is the set of private keys you want to sign with. The ring contains public keys for everybody except you. Your public key will be inserted into it at random (secret) index. The message is what you are signing

impl Verify for MLSAG[src]

fn verify<Hash: Digest<OutputSize = U64> + Clone + Default>(
    signature: MLSAG,
    message: &Vec<u8>
) -> bool
[src]

To verify a signature you need the message too

Auto Trait Implementations

impl RefUnwindSafe for MLSAG

impl Send for MLSAG

impl Sync for MLSAG

impl Unpin for MLSAG

impl UnwindSafe for MLSAG

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.