1use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Hash)]
11#[serde(rename_all = "camelCase")]
12#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
13pub enum Codec {
14 Base64,
15 Base64url,
16 Hex,
17 Url,
19}
20
21#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize, Hash)]
23#[serde(rename_all = "lowercase")]
24#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
25pub enum ByteEnc {
26 #[default]
27 Utf8,
28 Base64,
29 Hex,
30 Raw,
32}
33
34#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Hash)]
36#[serde(rename_all = "lowercase")]
37#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
38pub enum HashAlgo {
39 Md5,
40 Sha1,
41 Sha256,
42 Sha512,
43}
44
45#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize, Hash)]
47#[serde(rename_all = "lowercase")]
48#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
49pub enum HashOut {
50 #[default]
51 Hex,
52 Base64,
53}
54
55#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Hash)]
57#[serde(rename_all = "camelCase", deny_unknown_fields)]
58#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
59pub struct HashStep {
60 pub algo: HashAlgo,
61 #[serde(default)]
62 pub output: HashOut,
63 #[serde(default, skip_serializing_if = "Option::is_none")]
65 pub hmac_key: Option<String>,
66 #[serde(default)]
67 pub hmac_key_enc: ByteEnc,
68}
69
70#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Hash)]
72#[serde(rename_all = "camelCase")]
73#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
74pub enum CipherAlgo {
75 Aes,
76 Des,
77 TripleDes,
78}
79
80#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Hash)]
82#[serde(rename_all = "lowercase")]
83#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
84pub enum CipherMode {
85 Cbc,
86 Ecb,
87 Cfb,
88 Gcm,
89}
90
91#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize, Hash)]
93#[serde(rename_all = "lowercase")]
94#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
95pub enum Padding {
96 #[default]
97 Pkcs7,
98 Zero,
99 None,
100}
101
102#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize, Hash)]
104#[serde(rename_all = "lowercase")]
105#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
106pub enum CipherOp {
107 #[default]
108 Decrypt,
109 Encrypt,
110}
111
112#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Hash)]
114#[serde(rename_all = "camelCase", deny_unknown_fields)]
115#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
116pub struct CipherStep {
117 pub algo: CipherAlgo,
118 pub mode: CipherMode,
119 #[serde(default)]
120 pub padding: Padding,
121 #[serde(default)]
122 pub op: CipherOp,
123 pub key: String,
124 #[serde(default)]
125 pub key_enc: ByteEnc,
126 #[serde(default, skip_serializing_if = "Option::is_none")]
127 pub iv: Option<String>,
128 #[serde(default)]
129 pub iv_enc: ByteEnc,
130 #[serde(default, skip_serializing_if = "Option::is_none")]
132 pub input_enc: Option<ByteEnc>,
133 #[serde(default, skip_serializing_if = "Option::is_none")]
135 pub output_enc: Option<ByteEnc>,
136}
137
138#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Hash)]
140#[serde(rename_all = "lowercase")]
141#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
142pub enum CnConvert {
143 T2s,
145 S2t,
147}
148
149#[derive(Debug, Clone, Default, PartialEq, Eq, Serialize, Deserialize, Hash)]
152#[serde(deny_unknown_fields)]
153#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]
154pub struct CleanStep {
155 #[serde(default, skip_serializing_if = "Option::is_none")]
156 pub regex: Option<String>,
157 #[serde(default, skip_serializing_if = "Option::is_none")]
158 pub replace: Option<String>,
159 #[serde(default, skip_serializing_if = "Option::is_none")]
160 pub trim: Option<bool>,
161 #[serde(default, skip_serializing_if = "Option::is_none")]
162 pub prepend: Option<String>,
163 #[serde(default, skip_serializing_if = "Option::is_none")]
164 pub append: Option<String>,
165 #[serde(default, skip_serializing_if = "Option::is_none")]
167 pub decode: Option<Codec>,
168 #[serde(default, skip_serializing_if = "Option::is_none")]
170 pub encode: Option<Codec>,
171 #[serde(default, skip_serializing_if = "Option::is_none")]
173 pub hash: Option<HashStep>,
174 #[serde(default, skip_serializing_if = "Option::is_none")]
176 pub cipher: Option<CipherStep>,
177 #[serde(default, rename = "fontMap", skip_serializing_if = "Option::is_none")]
181 pub font_map: Option<std::collections::BTreeMap<String, String>>,
182 #[serde(default, skip_serializing_if = "Option::is_none")]
184 pub cn: Option<CnConvert>,
185 #[serde(default, skip_serializing_if = "Option::is_none")]
187 pub js: Option<String>,
188}