pub mod boxed;
use std::borrow::Cow;
use crate::Error;
use crate::platform::{MaybeSend, MaybeSendSync};
pub trait JwsSignerSelector: std::fmt::Debug + Clone + MaybeSendSync {
type Signer: JwsSigner;
fn select_signer(&self) -> Self::Signer;
}
pub trait JwsSigner: std::fmt::Debug + Clone + MaybeSendSync {
type Error: Error + 'static;
fn jws_algorithm(&self) -> Cow<'_, str>;
fn key_id(&self) -> Option<Cow<'_, str>>;
fn sign(&self, input: &[u8]) -> impl Future<Output = Result<Vec<u8>, Self::Error>> + MaybeSend;
}