Skip to main content

SigningAlgorithm

Trait SigningAlgorithm 

Source
pub trait SigningAlgorithm: Send + Sync {
    type Meta: Serialize + DeserializeOwned;
    type Secrets: Serialize + DeserializeOwned;

    // Required methods
    fn alg() -> &'static str;
    fn sign_inner(
        &self,
        payload: &[u8],
        secrets: &Self::Secrets,
    ) -> Result<(Self::Meta, Vec<u8>), AlgorithmError>;
    fn verify_inner(
        &self,
        meta: &Self::Meta,
        signature: &[u8],
        payload: &[u8],
    ) -> Result<(), AlgorithmError>;

    // Provided methods
    fn sign<T>(
        &self,
        payload: Payload<T>,
        raw_secrets: &[u8],
    ) -> Result<Payload<T>, AlgorithmError> { ... }
    fn verify<T>(&self, payload: &Payload<T>) -> Result<(), AlgorithmError> { ... }
}

Required Associated Types§

Required Methods§

Source

fn alg() -> &'static str

Source

fn sign_inner( &self, payload: &[u8], secrets: &Self::Secrets, ) -> Result<(Self::Meta, Vec<u8>), AlgorithmError>

Source

fn verify_inner( &self, meta: &Self::Meta, signature: &[u8], payload: &[u8], ) -> Result<(), AlgorithmError>

Provided Methods§

Source

fn sign<T>( &self, payload: Payload<T>, raw_secrets: &[u8], ) -> Result<Payload<T>, AlgorithmError>

Source

fn verify<T>(&self, payload: &Payload<T>) -> Result<(), AlgorithmError>

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl SigningAlgorithm for Ed25519

Source§

type Meta = Meta

Source§

type Secrets = Secrets

Source§

fn alg() -> &'static str

Source§

fn sign_inner( &self, payload: &[u8], secrets: &<Ed25519 as SigningAlgorithm>::Secrets, ) -> Result<(<Ed25519 as SigningAlgorithm>::Meta, Vec<u8>), AlgorithmError>

Source§

fn verify_inner( &self, meta: &<Ed25519 as SigningAlgorithm>::Meta, signature: &[u8], payload: &[u8], ) -> Result<(), AlgorithmError>

Implementors§