use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Signature {
pub signed_info: SignedInfo,
pub signature_value: SignatureValue,
pub key_info: Option<KeyInfo>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SignedInfo {
pub canonicalization_method: CanonicalizationMethod,
pub signature_method: SignatureMethod,
pub references: Vec<Reference>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct CanonicalizationMethod {
pub algorithm: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SignatureMethod {
pub algorithm: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Reference {
pub uri: String,
pub digest_method: DigestMethod,
pub digest_value: DigestValue,
pub transforms: Option<Vec<Transform>>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct Transform {
pub algorithm: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DigestMethod {
pub algorithm: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct DigestValue {
pub value: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct SignatureValue {
pub value: String,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct KeyInfo {
pub key_name: Option<String>,
pub key_value: Option<KeyValue>,
pub x509_data: Option<X509Data>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct X509Data {
pub certificate: Option<String>, }
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct KeyValue {
pub rsa_key_value: Option<RSAKeyValue>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RSAKeyValue {
pub modulus: String,
pub exponent: String,
}
#[derive(Debug, Clone)]
pub struct CertificateInfo {
pub subject: String,
pub issuer: String,
pub serial_number: String,
}