Struct snarkvm_algorithms::signature::aleo::AleoSignatureScheme
source · [−]pub struct AleoSignatureScheme<TE: TwistedEdwardsParameters> where
TE::BaseField: PoseidonDefaultParametersField, { /* private fields */ }
Trait Implementations
sourceimpl<TE: TwistedEdwardsParameters> Clone for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
TE: TwistedEdwardsParameters,
impl<TE: TwistedEdwardsParameters> Clone for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
TE: TwistedEdwardsParameters,
sourceimpl<TE: TwistedEdwardsParameters> Debug for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
TE: TwistedEdwardsParameters,
impl<TE: TwistedEdwardsParameters> Debug for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
TE: TwistedEdwardsParameters,
sourceimpl<TE: TwistedEdwardsParameters> From<Vec<Projective<TE>, Global>> for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
impl<TE: TwistedEdwardsParameters> From<Vec<Projective<TE>, Global>> for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
sourcefn from(g_bases: Vec<TEProjective<TE>>) -> Self
fn from(g_bases: Vec<TEProjective<TE>>) -> Self
Performs the conversion.
sourceimpl<TE: TwistedEdwardsParameters> FromBytes for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
impl<TE: TwistedEdwardsParameters> FromBytes for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
sourceimpl<TE: TwistedEdwardsParameters> PartialEq<AleoSignatureScheme<TE>> for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
TE: TwistedEdwardsParameters,
impl<TE: TwistedEdwardsParameters> PartialEq<AleoSignatureScheme<TE>> for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
TE: TwistedEdwardsParameters,
sourceimpl<TE: TwistedEdwardsParameters> SignatureScheme for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
impl<TE: TwistedEdwardsParameters> SignatureScheme for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
sourcefn generate_private_key<R: Rng + CryptoRng>(
&self,
rng: &mut R
) -> Self::PrivateKey
fn generate_private_key<R: Rng + CryptoRng>(
&self,
rng: &mut R
) -> Self::PrivateKey
Returns private key as (sk_sig, r_sig).
sourcefn generate_public_key(&self, private_key: &Self::PrivateKey) -> Self::PublicKey
fn generate_public_key(&self, private_key: &Self::PrivateKey) -> Self::PublicKey
Returns public key as (G^sk_sig G^r_sig G^sk_prf).
sourcefn sign<R: Rng + CryptoRng>(
&self,
private_key: &Self::PrivateKey,
message: &[u8],
rng: &mut R
) -> Result<Self::Signature>
fn sign<R: Rng + CryptoRng>(
&self,
private_key: &Self::PrivateKey,
message: &[u8],
rng: &mut R
) -> Result<Self::Signature>
Returns signature (c, s, G^sk_sig, G^r_sig), where: c := Hash(G^sk_sig G^r_sig G^sk_prf, G^r, message) s := r - c * sk_sig
sourcefn verify(
&self,
public_key: &Self::PublicKey,
message: &[u8],
signature: &Self::Signature
) -> Result<bool>
fn verify(
&self,
public_key: &Self::PublicKey,
message: &[u8],
signature: &Self::Signature
) -> Result<bool>
Verifies (c == c’) && (public_key == G^sk_sig G^r_sig G^sk_prf) where: c’ := Hash(G^sk_sig G^r_sig G^sk_prf, G^s G^sk_sig^c, message)
type Parameters = Vec<TEProjective<TE>>
type PrivateKey = (TE::ScalarField, TE::ScalarField)
type PublicKey = TEAffine<TE>
type Signature = AleoSignature<TE>
fn setup(message: &str) -> Self
fn parameters(&self) -> &Self::Parameters
sourceimpl<TE: TwistedEdwardsParameters> SignatureSchemeOperations for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
impl<TE: TwistedEdwardsParameters> SignatureSchemeOperations for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
type AffineCurve = TEAffine<TE>
type BaseField = TE::BaseField
type ScalarField = TE::ScalarField
type Signature = AleoSignature<TE>
fn pk_sig(signature: &Self::Signature) -> Result<Self::AffineCurve>
fn pr_sig(signature: &Self::Signature) -> Result<Self::AffineCurve>
fn g_scalar_multiply(&self, scalar: &Self::ScalarField) -> Self::AffineCurve
fn hash_to_scalar_field(&self, input: &[Self::BaseField]) -> Self::ScalarField
sourceimpl<TE: TwistedEdwardsParameters> ToBytes for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
impl<TE: TwistedEdwardsParameters> ToBytes for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
sourceimpl<F: Field, TE: TwistedEdwardsParameters + ToConstraintField<F>> ToConstraintField<F> for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
impl<F: Field, TE: TwistedEdwardsParameters + ToConstraintField<F>> ToConstraintField<F> for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
fn to_field_elements(&self) -> Result<Vec<F>, ConstraintFieldError>
impl<TE: TwistedEdwardsParameters> Eq for AleoSignatureScheme<TE> where
TE::BaseField: PoseidonDefaultParametersField,
TE: TwistedEdwardsParameters,
Auto Trait Implementations
impl<TE> RefUnwindSafe for AleoSignatureScheme<TE> where
<TE as ModelParameters>::BaseField: RefUnwindSafe,
impl<TE> Send for AleoSignatureScheme<TE>
impl<TE> Sync for AleoSignatureScheme<TE>
impl<TE> Unpin for AleoSignatureScheme<TE> where
<TE as ModelParameters>::BaseField: Unpin,
impl<TE> UnwindSafe for AleoSignatureScheme<TE> where
<TE as ModelParameters>::BaseField: UnwindSafe + RefUnwindSafe,
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcepub fn borrow_mut(&mut self) -> &mut T
pub fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
sourceimpl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Q where
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
sourcepub fn equivalent(&self, key: &K) -> bool
pub fn equivalent(&self, key: &K) -> bool
Compare self to key
and return true
if they are equal.
impl<T> Pointable for T
impl<T> Pointable for T
sourceimpl<T> ToOwned for T where
T: Clone,
impl<T> ToOwned for T where
T: Clone,
type Owned = T
type Owned = T
The resulting type after obtaining ownership.
sourcepub fn to_owned(&self) -> T
pub fn to_owned(&self) -> T
Creates owned data from borrowed data, usually by cloning. Read more
sourcepub fn clone_into(&self, target: &mut T)
pub fn clone_into(&self, target: &mut T)
🔬 This is a nightly-only experimental API. (
toowned_clone_into
)Uses borrowed data to replace owned data, usually by cloning. Read more