[−][src]Struct nazgul::mlsag::MLSAG
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]
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 MLSAG
[src]
fn link(signature_1: MLSAG, signature_2: MLSAG) -> 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 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]
ks: Vec<Scalar>,
ring: Vec<Vec<RistrettoPoint>>,
message: &Vec<u8>
) -> MLSAG
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]
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]
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>,