ofd_core/model/
signature.rs1use serde::{Deserialize, Serialize};
15
16use crate::types::{StBox, StId, StLoc};
17
18#[derive(Debug, Clone, Default, Deserialize, Serialize)]
20pub struct Signatures {
21 #[serde(rename = "MaxSignId")]
23 pub max_sign_id: Option<String>,
24 #[serde(rename = "Signature", default)]
26 pub signatures: Vec<SignatureRef>,
27}
28
29#[derive(Debug, Clone, Default, Deserialize, Serialize)]
33pub struct SignatureRef {
34 #[serde(rename = "@ID")]
36 pub id: StId,
37 #[serde(rename = "@Type")]
39 pub sig_type: Option<String>,
40 #[serde(rename = "@BaseLoc")]
42 pub base_loc: StLoc,
43}
44
45impl SignatureRef {
46 pub fn type_or_default(&self) -> &str {
48 self.sig_type.as_deref().unwrap_or("Seal")
49 }
50}
51
52#[derive(Debug, Clone, Deserialize, Serialize)]
54pub struct Signature {
55 #[serde(rename = "SignedInfo")]
57 pub signed_info: SignedInfo,
58 #[serde(rename = "SignedValue")]
60 pub signed_value: StLoc,
61}
62
63#[derive(Debug, Clone, Deserialize, Serialize)]
65pub struct SignedInfo {
66 #[serde(rename = "Provider")]
68 pub provider: Provider,
69 #[serde(rename = "SignatureMethod")]
71 pub signature_method: Option<String>,
72 #[serde(rename = "SignatureDateTime")]
74 pub signature_date_time: Option<String>,
75 #[serde(rename = "References")]
77 pub references: References,
78 #[serde(rename = "StampAnnot", default)]
80 pub stamp_annots: Vec<StampAnnot>,
81 #[serde(rename = "Seal")]
83 pub seal: Option<Seal>,
84}
85
86#[derive(Debug, Clone, Default, Deserialize, Serialize)]
88pub struct Provider {
89 #[serde(rename = "@ProviderName")]
91 pub provider_name: String,
92 #[serde(rename = "@Version")]
94 pub version: Option<String>,
95 #[serde(rename = "@Company")]
97 pub company: Option<String>,
98}
99
100#[derive(Debug, Clone, Default, Deserialize, Serialize)]
102pub struct References {
103 #[serde(rename = "@CheckMethod")]
106 pub check_method: Option<String>,
107 #[serde(rename = "Reference", default)]
109 pub references: Vec<Reference>,
110}
111
112#[derive(Debug, Clone, Default, Deserialize, Serialize)]
114pub struct Reference {
115 #[serde(rename = "@FileRef")]
117 pub file_ref: StLoc,
118 #[serde(rename = "CheckValue", default)]
120 pub check_value: String,
121}
122
123#[derive(Debug, Clone, Default, Deserialize, Serialize)]
125pub struct StampAnnot {
126 #[serde(rename = "@ID")]
128 pub id: Option<StId>,
129 #[serde(rename = "@PageRef")]
131 pub page_ref: Option<String>,
132 #[serde(rename = "@Boundary")]
134 pub boundary: Option<StBox>,
135 #[serde(rename = "@Clip")]
137 pub clip: Option<StBox>,
138}
139
140#[derive(Debug, Clone, Default, Deserialize, Serialize)]
142pub struct Seal {
143 #[serde(rename = "BaseLoc")]
145 pub base_loc: Option<StLoc>,
146}