use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub enum SignAlgorithm {
#[serde(rename = "EdDSA", alias = "eddsa")]
EdDSA,
#[serde(rename = "ES256", alias = "es256")]
ES256,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub struct SignRequestBody {
#[serde(rename = "keyId", alias = "key_id")]
pub key_id: String,
pub payload: String,
pub algorithm: SignAlgorithm,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[cfg_attr(feature = "openapi", derive(utoipa::ToSchema))]
pub struct SignResultBody {
#[serde(rename = "keyId", alias = "key_id")]
pub key_id: String,
pub signature: String,
pub algorithm: SignAlgorithm,
}
impl std::fmt::Display for SignAlgorithm {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
SignAlgorithm::EdDSA => write!(f, "eddsa"),
SignAlgorithm::ES256 => write!(f, "es256"),
}
}
}