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§
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>
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.