use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct AttestationClaims {
#[serde(skip_serializing_if = "Option::is_none")]
pub platform_version: Option<String>,
#[serde(default)]
pub debug_mode: bool,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub boot_measurements: Vec<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub signer_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub product_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub user_data: Option<Vec<u8>>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
pub custom: BTreeMap<String, serde_json::Value>,
}
impl AttestationClaims {
pub fn new() -> Self {
Self::default()
}
pub fn with_custom(
mut self,
key: impl Into<String>,
value: impl Into<serde_json::Value>,
) -> Self {
self.custom.insert(key.into(), value.into());
self
}
pub fn get_custom(&self, key: &str) -> Option<&serde_json::Value> {
self.custom.get(key)
}
}