[−][src]Struct nazgul::clsag::CLSAG
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]
ks: Vec<Scalar>
) -> Vec<RistrettoPoint>
Some signature schemes require the key images to be signed as well. Use this method to generate them
impl Link for CLSAG
[src]
fn link(signature_1: CLSAG, signature_2: CLSAG) -> bool
[src]
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]
ks: Vec<Scalar>,
ring: Vec<Vec<RistrettoPoint>>,
message: &Vec<u8>
) -> CLSAG
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]
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]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
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]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,