use super::KeyType;
use crate::chain;
use sdkms::api_model::SobjectDescriptor;
use serde::Deserialize;
use uuid::Uuid;
#[derive(Clone, Deserialize, Debug)]
#[serde(deny_unknown_fields)]
pub struct FortanixDsmConfig {
pub api_endpoint: String,
pub api_key: String,
#[serde(default)]
pub signing_keys: Vec<SigningKeyConfig>,
}
#[derive(Clone, Debug, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct SigningKeyConfig {
pub chain_ids: Vec<chain::Id>,
#[serde(flatten)]
pub key: KeyDescriptor,
#[serde(default, rename = "type")]
pub key_type: KeyType,
}
#[derive(Clone, Debug, Deserialize)]
#[serde(deny_unknown_fields, rename_all = "snake_case")]
pub enum KeyDescriptor {
KeyId(Uuid),
KeyName(String),
}
impl From<KeyDescriptor> for SobjectDescriptor {
fn from(x: KeyDescriptor) -> Self {
match x {
KeyDescriptor::KeyId(id) => SobjectDescriptor::Kid(id),
KeyDescriptor::KeyName(name) => SobjectDescriptor::Name(name),
}
}
}