use crate::{
create::{CreateKey, HttpSignature},
error::{Error, VerificationError},
verify::VerifyKey,
};
pub use crate::verify::AsVerifyKey;
pub trait AsHttpSignature {
fn as_http_signature<'a>(&self, key_id: String, key: CreateKey)
-> Result<HttpSignature, Error>;
fn authorization_header(&self, key_id: String, key: CreateKey) -> Result<String, Error> {
Ok(self
.as_http_signature(key_id, key)?
.authorization_header()?)
}
fn signature_header(&self, key_id: String, key: CreateKey) -> Result<String, Error> {
Ok(self.as_http_signature(key_id, key)?.signature_header()?)
}
}
pub trait WithHttpSignature: AsHttpSignature {
fn with_authorization_header(
&mut self,
key_id: String,
key: CreateKey,
) -> Result<&mut Self, Error>;
fn with_signature_header(&mut self, key_id: String, key: CreateKey)
-> Result<&mut Self, Error>;
}
pub trait VerifyHeader {
fn verify_signature_header(&self, key: VerifyKey) -> Result<(), VerificationError>;
fn verify_authorization_header(&self, key: VerifyKey) -> Result<(), VerificationError>;
}