[][src]Struct nazgul::clsag::CLSAG

pub struct CLSAG { /* fields omitted */ }

Concise Linkable Spontaneous Anonymous Group (CLSAG) signatures

CLSAG is sort of half-way between bLSAG and MLSAG. Suppose you have a ‘primary’ key, and associated with it are several ‘auxiliary’ keys. It is important to prove knowledge of all private keys, but linkability only applies to the primary. This linkability retraction allows smaller, faster signatures than afforded by MLSAG.

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 CLSAG[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 CLSAG[src]

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

To sign you need ks which is the set of private keys you want to sign with. Only the first one is linkable. 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 CLSAG[src]

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

To verify a signature you need the message too

Auto Trait Implementations

impl RefUnwindSafe for CLSAG

impl Send for CLSAG

impl Sync for CLSAG

impl Unpin for CLSAG

impl UnwindSafe for CLSAG

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.