use std::collections::BTreeMap;
use sha1::Sha1;
use sha2::Sha256;
use crate::key::{JsonWebKey, Thumbprint};
use super::{DeriveFromKey, HeaderState};
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct UnsignedHeader {
pub(super) key: DeriveFromKey<JsonWebKey>,
pub(super) thumbprint: DeriveFromKey<Thumbprint<Sha1>>,
pub(super) thumbprint_sha256: DeriveFromKey<Thumbprint<Sha256>>,
}
impl HeaderState for UnsignedHeader {
fn parameters(
&self,
) -> Result<BTreeMap<std::string::String, serde_json::Value>, serde_json::Error> {
let mut data = std::collections::BTreeMap::new();
if let Some(value) = self.key.parameter("jwk")? {
data.insert("jwk".to_owned(), value);
}
if let Some(value) = self.thumbprint.parameter("x5t")? {
data.insert("x5t".to_owned(), value);
}
if let Some(value) = self.thumbprint_sha256.parameter("x5t#S256")? {
data.insert("x5t#S256".to_owned(), value);
}
Ok(data)
}
}