1#[derive(Debug, Serialize, Deserialize, Clone)]
2pub struct OuterSignatre {
3 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:Signature")]
4 pub signature: Signature,
5}
6
7#[derive(Debug, Serialize, Deserialize, Clone)]
8pub struct Signature {
9 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:SignedInfo")]
10 pub signed_info: SignedInfo,
11 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:SignatureValue")]
12 pub signature_value: SignatureValue,
13 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:KeyInfo")]
14 pub key_info: Option<KeyInfo>,
15}
16
17#[derive(Debug, Serialize, Deserialize, Clone)]
18pub struct SignatureValue {
19 #[serde(rename = "$value")]
20 pub value: String,
21 #[serde(rename = "$attr:Id", default, skip_serializing_if = "Option::is_none")]
22 pub id: Option<String>,
23}
24
25#[derive(Debug, Serialize, Deserialize, Clone)]
26pub struct SignedInfo {
27 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:CanonicalizationMethod")]
28 pub canonicalization_method: CanonicalizationMethod,
29 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:SignatureMethod")]
30 pub signature_method: SignatureMethod,
31 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:Reference")]
32 pub reference: Vec<Reference>,
33 #[serde(rename = "$attr:Id", default, skip_serializing_if = "Option::is_none")]
34 pub id: Option<String>,
35}
36
37#[derive(Debug, Serialize, Deserialize, Clone)]
38pub struct CanonicalizationMethod {
39 #[serde(rename = "$attr:Algorithm")]
40 pub algorithm: String,
41}
42
43#[derive(Debug, Serialize, Deserialize, Clone)]
44pub struct SignatureMethod {
45 #[serde(rename = "$attr:Algorithm")]
46 pub algorithm: String,
47}
48
49#[derive(Debug, Serialize, Deserialize, Clone)]
50pub struct KeyInfo {
51 #[serde(rename = "$value")]
52 pub keys_info: Vec<KeyInfoType>,
53}
54
55#[derive(Debug, Serialize, Deserialize, Clone)]
56pub struct Reference {
57 #[serde(
58 rename = "{http://www.w3.org/2000/09/xmldsig#}ds:Transforms",
59 default, skip_serializing_if = "Option::is_none"
60 )]
61 pub transforms: Option<Transforms>,
62 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:DigestMethod")]
63 pub digest_method: DigestMethod,
64 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:DigestValue")]
65 pub digest_value: String,
66 #[serde(rename = "$attr:Id", default, skip_serializing_if = "Option::is_none")]
67 pub id: Option<String>,
68 #[serde(rename = "$attr:URI", default, skip_serializing_if = "Option::is_none")]
69 pub uri: Option<String>,
70 #[serde(rename = "$attr:Type", default, skip_serializing_if = "Option::is_none")]
71 pub ref_type: Option<String>,
72}
73
74#[derive(Debug, Serialize, Deserialize, Clone)]
75pub struct Transforms {
76 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:Transform")]
77 pub transforms: Vec<Transform>,
78}
79
80#[derive(Debug, Serialize, Deserialize, Clone)]
81pub struct Transform {
82 #[serde(rename = "$attr:Algorithm")]
83 pub algorithm: String,
84}
85
86#[derive(Debug, Serialize, Deserialize, Clone)]
87pub struct DigestMethod {
88 #[serde(rename = "$attr:Algorithm")]
89 pub algorithm: String,
90}
91
92#[derive(Debug, Serialize, Deserialize, Clone)]
93pub enum KeyInfoType {
94 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:KeyName")]
95 KeyName(String),
96 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:KeyValue")]
97 KeyValue(KeyValue),
98 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:X509Data")]
99 X509Data(X509Data),
100 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:PGPData")]
101 PGPData(PGPData),
102 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:SPKIData")]
103 SPKIData(SPKIData),
104}
105
106#[derive(Debug, Serialize, Deserialize, Clone)]
107pub enum KeyValue {
108 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:DSAKeyValue")]
109 DSA(DSAKeyValue),
110 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:RSAKeyValue")]
111 RSA(RSAKeyValue),
112 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:ECKeyValue")]
113 EC(ECKeyValue),
114}
115
116#[derive(Debug, Serialize, Deserialize, Clone)]
117pub struct DSAKeyValue {
118 #[serde(
119 rename = "{http://www.w3.org/2000/09/xmldsig#}ds:P",
120 default, skip_serializing_if = "Option::is_none"
121 )]
122 pub p: Option<String>,
123 #[serde(
124 rename = "{http://www.w3.org/2000/09/xmldsig#}ds:Q",
125 default, skip_serializing_if = "Option::is_none"
126 )]
127 pub q: Option<String>,
128 #[serde(
129 rename = "{http://www.w3.org/2000/09/xmldsig#}ds:G",
130 default, skip_serializing_if = "Option::is_none"
131 )]
132 pub g: Option<String>,
133 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:Y")]
134 pub y: String,
135 #[serde(
136 rename = "{http://www.w3.org/2000/09/xmldsig#}ds:J",
137 default, skip_serializing_if = "Option::is_none"
138 )]
139 pub j: Option<String>,
140 #[serde(
141 rename = "{http://www.w3.org/2000/09/xmldsig#}ds:Seed",
142 default, skip_serializing_if = "Option::is_none"
143 )]
144 pub seed: Option<String>,
145 #[serde(
146 rename = "{http://www.w3.org/2000/09/xmldsig#}ds:PgenCounter",
147 default, skip_serializing_if = "Option::is_none"
148 )]
149 pub pgen_counter: Option<String>,
150}
151
152#[derive(Debug, Serialize, Deserialize, Clone)]
153pub struct RSAKeyValue {
154 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:Modulus")]
155 pub modulus: String,
156 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:Exponent")]
157 pub exponent: String,
158}
159
160#[derive(Debug, Serialize, Deserialize, Clone)]
161pub struct ECKeyValue {
162 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:PublicKey")]
163 pub pub_key: String,
164}
165
166#[derive(Debug, Serialize, Deserialize, Clone)]
167pub enum ECKeyCurve {
168 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:NamedCurve")]
169 NamedCurve(String),
170 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:ECParameters")]
171 Params(ECParams),
172}
173
174#[derive(Debug, Serialize, Deserialize, Clone)]
175pub struct ECParams {
176 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:FieldID")]
177 pub field_id: ECFieldID,
178 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:Curve")]
179 pub curve: ECCurve,
180 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:Base")]
181 pub base: String,
182 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:Order")]
183 pub order: String,
184 #[serde(
185 rename = "{http://www.w3.org/2009/xmldsig11#}ds11:CoFactor",
186 default, skip_serializing_if = "Option::is_none"
187 )]
188 pub cofactor: Option<i64>,
189 #[serde(
190 rename = "{http://www.w3.org/2009/xmldsig11#}ds11:ValidationData",
191 default, skip_serializing_if = "Option::is_none"
192 )]
193 pub validation_data: Option<ECValidationData>,
194}
195
196#[derive(Debug, Serialize, Deserialize, Clone)]
197pub struct ECCurve {
198 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:A")]
199 pub a: String,
200 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:B")]
201 pub b: String,
202}
203
204#[derive(Debug, Serialize, Deserialize, Clone)]
205pub struct ECValidationData {
206 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:seed")]
207 pub seed: String,
208 #[serde(rename = "$attr:hashAlgorithm")]
209 pub hash_algorithm: String,
210}
211
212#[derive(Debug, Serialize, Deserialize, Clone)]
213pub enum ECFieldID {
214 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:Prime")]
215 Prime(PrimeFieldParams),
216 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:TnB")]
217 TnB(TnBFieldParams),
218 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:PnB")]
219 PnB(PnBFieldParams),
220 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:GnB")]
221 GnB(GnBFieldParams),
222}
223
224#[derive(Debug, Serialize, Deserialize, Clone)]
225pub struct PrimeFieldParams {
226 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:P")]
227 pub prime: String,
228}
229
230#[derive(Debug, Serialize, Deserialize, Clone)]
231pub struct TnBFieldParams {
232 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:M")]
233 pub m: u64,
234 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:K")]
235 pub k: u64,
236}
237
238#[derive(Debug, Serialize, Deserialize, Clone)]
239pub struct PnBFieldParams {
240 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:M")]
241 pub m: u64,
242 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:K1")]
243 pub k1: u64,
244 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:K2")]
245 pub k2: u64,
246 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:K3")]
247 pub k3: u64,
248}
249
250#[derive(Debug, Serialize, Deserialize, Clone)]
251pub struct GnBFieldParams {
252 #[serde(rename = "{http://www.w3.org/2009/xmldsig11#}ds11:M")]
253 pub m: u64,
254}
255
256#[derive(Debug, Serialize, Deserialize, Clone)]
257pub struct X509Data {
258 #[serde(rename = "$value")]
259 pub x509_data: Vec<X509Datum>,
260}
261
262#[derive(Debug, Serialize, Deserialize, Clone)]
263pub enum X509Datum {
264 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:X509IssuerSerial")]
265 IssuerSerial(X509IssuerSerial),
266 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:X509SKI")]
267 SKI(String),
268 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:X509SubjectName")]
269 SubjectName(String),
270 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:X509Certificate")]
271 Certificate(String),
272 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:X509CRL")]
273 CRL(String),
274}
275
276#[derive(Debug, Serialize, Deserialize, Clone)]
277pub struct X509IssuerSerial {
278 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:X509IssuerName")]
279 pub issuer_name: String,
280 #[serde(rename = "{http://www.w3.org/2000/09/xmldsig#}ds:X509SerialNumber")]
281 pub serial_number: i64,
282}
283
284#[derive(Debug, Serialize, Deserialize, Clone)]
285pub struct PGPData {
286 #[serde(
287 rename = "{http://www.w3.org/2000/09/xmldsig#}ds:PGPKeyID",
288 default, skip_serializing_if = "Option::is_none"
289 )]
290 pub key_id: Option<String>,
291 #[serde(
292 rename = "{http://www.w3.org/2000/09/xmldsig#}ds:PGPKeyPacket",
293 default, skip_serializing_if = "Option::is_none"
294 )]
295 pub key_packet: Option<String>,
296}
297
298#[derive(Debug, Serialize, Deserialize, Clone)]
299pub struct SPKIData {
300 #[serde(
301 rename = "{http://www.w3.org/2000/09/xmldsig#}ds:SPKISexp",
302 default, skip_serializing_if = "Vec::is_empty"
303 )]
304 pub sexp: Vec<String>,
305}