Struct diem_crypto::ed25519::Ed25519Signature[][src]

pub struct Ed25519Signature(_);
Expand description

An Ed25519 signature

Implementations

impl Ed25519Signature[src]

pub const LENGTH: usize[src]

The length of the Ed25519Signature

pub fn to_bytes(&self) -> [u8; 64][src]

Serialize an Ed25519Signature.

pub fn check_malleability(bytes: &[u8]) -> Result<(), CryptoMaterialError>[src]

Check for correct size and third-party based signature malleability issues. This method is required to ensure that given a valid signature for some message under some key, an attacker cannot produce another valid signature for the same message and key.

According to RFC8032, signatures comprise elements {R, S} and we should enforce that S is of canonical form (smaller than L, where L is the order of edwards25519 curve group) to prevent signature malleability. Without this check, one could add a multiple of L into S and still pass signature verification, resulting in a distinct yet valid signature.

This method does not check the R component of the signature, because R is hashed during signing and verification to compute h = H(ENC(R) || ENC(A) || M), which means that a third-party cannot modify R without being detected.

Note: It’s true that malicious signers can already produce varying signatures by choosing a different nonce, so this method protects against malleability attacks performed by a non-signer.

Trait Implementations

impl Clone for Ed25519Signature[src]

fn clone(&self) -> Ed25519Signature[src]

Returns a copy of the value. Read more

fn clone_from(&mut self, source: &Self)1.0.0[src]

Performs copy-assignment from source. Read more

impl Debug for Ed25519Signature[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl<'de> Deserialize<'de> for Ed25519Signature[src]

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error> where
    D: Deserializer<'de>, 
[src]

Deserialize this value from the given Serde deserializer. Read more

impl Display for Ed25519Signature[src]

fn fmt(&self, f: &mut Formatter<'_>) -> Result[src]

Formats the value using the given formatter. Read more

impl From<Ed25519Signature> for MultiEd25519Signature[src]

fn from(ed_signature: Ed25519Signature) -> Self[src]

Performs the conversion.

impl Hash for Ed25519Signature[src]

fn hash<H: Hasher>(&self, state: &mut H)[src]

Feeds this value into the given Hasher. Read more

fn hash_slice<H>(data: &[Self], state: &mut H) where
    H: Hasher
1.3.0[src]

Feeds a slice of this type into the given Hasher. Read more

impl Length for Ed25519Signature[src]

fn length(&self) -> usize[src]

The serialized length of the data

impl PartialEq<Ed25519Signature> for Ed25519Signature[src]

fn eq(&self, other: &Ed25519Signature) -> bool[src]

This method tests for self and other values to be equal, and is used by ==. Read more

#[must_use]
fn ne(&self, other: &Rhs) -> bool
1.0.0[src]

This method tests for !=.

impl Serialize for Ed25519Signature[src]

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error> where
    S: Serializer
[src]

Serialize this value into the given Serde serializer. Read more

impl Signature for Ed25519Signature[src]

fn verify<T: CryptoHash + Serialize>(
    &self,
    message: &T,
    public_key: &Ed25519PublicKey
) -> Result<()>
[src]

Verifies that the provided signature is valid for the provided message, according to the RFC8032 algorithm. This strict verification performs the recommended check of 5.1.7 §3, on top of the required RFC8032 verifications.

fn verify_arbitrary_msg(
    &self,
    message: &[u8],
    public_key: &Ed25519PublicKey
) -> Result<()>
[src]

Checks that self is valid for an arbitrary &u8 message using public_key. Outside of this crate, this particular function should only be used for native signature verification in move

type VerifyingKeyMaterial = Ed25519PublicKey

The associated verifying key type for this signature.

type SigningKeyMaterial = Ed25519PrivateKey

The associated signing key type for this signature

fn to_bytes(&self) -> Vec<u8>[src]

Convert the signature into a byte representation.

fn batch_verify<T: CryptoHash + Serialize>(
    message: &T,
    keys_and_signatures: Vec<(Self::VerifyingKeyMaterial, Self)>
) -> Result<()>
[src]

The implementer can override a batch verification implementation that by default iterates over each signature. More efficient implementations exist and should be implemented for many schemes. Read more

impl TryFrom<&'_ [u8]> for Ed25519Signature[src]

type Error = CryptoMaterialError

The type returned in the event of a conversion error.

fn try_from(bytes: &[u8]) -> Result<Ed25519Signature, CryptoMaterialError>[src]

Performs the conversion.

impl ValidCryptoMaterial for Ed25519Signature[src]

fn to_bytes(&self) -> Vec<u8>[src]

Convert the valid crypto material to bytes.

impl Eq for Ed25519Signature[src]

Auto Trait Implementations

Blanket Implementations

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

pub fn type_id(&self) -> TypeId[src]

Gets the TypeId of self. Read more

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

pub fn borrow(&self) -> &T[src]

Immutably borrows from an owned value. Read more

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

pub fn borrow_mut(&mut self) -> &mut T[src]

Mutably borrows from an owned value. Read more

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

pub fn from(t: T) -> T[src]

Performs the conversion.

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

pub fn into(self) -> U[src]

Performs the conversion.

impl<T> Same<T> for T

type Output = T

Should always be Self

impl<T> TestOnlyHash for T where
    T: Serialize + ?Sized
[src]

pub fn test_only_hash(&Self) -> HashValue[src]

Generates a hash used only for tests.

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

pub fn to_owned(&self) -> T[src]

Creates owned data from borrowed data, usually by cloning. Read more

pub fn clone_into(&self, target: &mut T)[src]

🔬 This is a nightly-only experimental API. (toowned_clone_into)

recently added

Uses borrowed data to replace owned data, usually by cloning. Read more

impl<T> ToString for T where
    T: Display + ?Sized
[src]

pub default fn to_string(&self) -> String[src]

Converts the given value to a String. Read more

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.

pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>[src]

Performs the conversion.

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.

pub fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>[src]

Performs the conversion.

impl<V, T> VZip<V> for T where
    V: MultiLane<T>, 

pub fn vzip(self) -> V

impl<T> ValidCryptoMaterialStringExt for T where
    T: ValidCryptoMaterial
[src]

fn from_encoded_string(encoded_str: &str) -> Result<Self, CryptoMaterialError>[src]

When trying to convert from bytes, we simply decode the string into bytes before checking if we can convert. Read more

fn to_encoded_string(&self) -> Result<String>[src]

A function to encode into hex-string after serializing.

impl<T> DeserializeOwned for T where
    T: for<'de> Deserialize<'de>, 
[src]