Skip to content

Commit e589e5d

Browse files
committed
v0.3.1
1 parent eb20e41 commit e589e5d

File tree

6 files changed

+35
-106
lines changed

6 files changed

+35
-106
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
mail-auth 0.3.1
2+
================================
3+
- Fix: Avoid panicking on invalid RSA key input (#17)
4+
15
mail-auth 0.3.0
26
================================
37
- ``ring`` backend support.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[package]
22
name = "mail-auth"
33
description = "DKIM, ARC, SPF and DMARC library for Rust"
4-
version = "0.3.0"
4+
version = "0.3.1"
55
edition = "2021"
66
authors = [ "Stalwart Labs <[email protected]>"]
77
license = "Apache-2.0 OR MIT"

src/arc/mod.rs

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -79,19 +79,14 @@ pub struct Set<'x> {
7979
pub(crate) results: Header<'x, &'x Results>,
8080
}
8181

82-
#[derive(Debug, PartialEq, Eq, Clone)]
82+
#[derive(Debug, PartialEq, Eq, Clone, Default)]
8383
pub(crate) enum ChainValidation {
84+
#[default]
8485
None,
8586
Fail,
8687
Pass,
8788
}
8889

89-
impl Default for ChainValidation {
90-
fn default() -> Self {
91-
ChainValidation::None
92-
}
93-
}
94-
9590
impl VerifySignature for Signature {
9691
fn signature(&self) -> &[u8] {
9792
&self.b

src/common/crypto/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,9 +144,10 @@ impl AsRef<[u8]> for HashOutput {
144144
}
145145
}
146146

147-
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
147+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
148148
pub enum Algorithm {
149149
RsaSha1,
150+
#[default]
150151
RsaSha256,
151152
Ed25519Sha256,
152153
}

src/dkim/mod.rs

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@ pub mod parse;
2424
pub mod sign;
2525
pub mod verify;
2626

27-
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
27+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
2828
pub enum Canonicalization {
29+
#[default]
2930
Relaxed,
3031
Simple,
3132
}
@@ -63,18 +64,6 @@ pub struct Signature {
6364
pub(crate) cb: Canonicalization,
6465
}
6566

66-
impl Default for Algorithm {
67-
fn default() -> Self {
68-
Algorithm::RsaSha256
69-
}
70-
}
71-
72-
impl Default for Canonicalization {
73-
fn default() -> Self {
74-
Canonicalization::Relaxed
75-
}
76-
}
77-
7867
#[derive(Debug, PartialEq, Eq, Clone)]
7968
pub struct DomainKeyReport {
8069
pub(crate) ra: String,

src/report/mod.rs

Lines changed: 24 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -32,27 +32,30 @@ pub struct ReportMetadata {
3232
error: Vec<String>,
3333
}
3434

35-
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
35+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
3636
pub enum Alignment {
3737
Relaxed,
3838
Strict,
39+
#[default]
3940
Unspecified,
4041
}
4142

42-
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
43+
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
4344
pub enum Disposition {
4445
None,
4546
Quarantine,
4647
Reject,
48+
#[default]
4749
Unspecified,
4850
}
4951

50-
#[derive(Debug, Hash, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
52+
#[derive(Debug, Hash, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
5153
pub enum ActionDisposition {
5254
None,
5355
Pass,
5456
Quarantine,
5557
Reject,
58+
#[default]
5659
Unspecified,
5760
}
5861

@@ -70,20 +73,22 @@ pub struct PolicyPublished {
7073

7174
impl Eq for PolicyPublished {}
7275

73-
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, Serialize, Deserialize)]
76+
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, Serialize, Deserialize, Default)]
7477
pub enum DmarcResult {
7578
Pass,
7679
Fail,
80+
#[default]
7781
Unspecified,
7882
}
7983

80-
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, Serialize, Deserialize)]
84+
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, Serialize, Deserialize, Default)]
8185
pub enum PolicyOverride {
8286
Forwarded,
8387
SampledOut,
8488
TrustedForwarder,
8589
MailingList,
8690
LocalPolicy,
91+
#[default]
8792
Other,
8893
}
8994

@@ -121,8 +126,9 @@ pub struct Identifier {
121126
header_from: String,
122127
}
123128

124-
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, Serialize, Deserialize)]
129+
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, Serialize, Deserialize, Default)]
125130
pub enum DkimResult {
131+
#[default]
126132
None,
127133
Pass,
128134
Fail,
@@ -140,15 +146,17 @@ pub struct DKIMAuthResult {
140146
human_result: Option<String>,
141147
}
142148

143-
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, Serialize, Deserialize)]
149+
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, Serialize, Deserialize, Default)]
144150
pub enum SPFDomainScope {
145151
Helo,
146152
MailFrom,
153+
#[default]
147154
Unspecified,
148155
}
149156

150-
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, Serialize, Deserialize)]
157+
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq, Serialize, Deserialize, Default)]
151158
pub enum SpfResult {
159+
#[default]
152160
None,
153161
Neutral,
154162
Pass,
@@ -191,54 +199,6 @@ pub struct Report {
191199

192200
impl Eq for Report {}
193201

194-
impl Default for Alignment {
195-
fn default() -> Self {
196-
Alignment::Unspecified
197-
}
198-
}
199-
200-
impl Default for Disposition {
201-
fn default() -> Self {
202-
Disposition::Unspecified
203-
}
204-
}
205-
206-
impl Default for ActionDisposition {
207-
fn default() -> Self {
208-
ActionDisposition::None
209-
}
210-
}
211-
212-
impl Default for DmarcResult {
213-
fn default() -> Self {
214-
DmarcResult::Unspecified
215-
}
216-
}
217-
218-
impl Default for PolicyOverride {
219-
fn default() -> Self {
220-
PolicyOverride::Other
221-
}
222-
}
223-
224-
impl Default for DkimResult {
225-
fn default() -> Self {
226-
DkimResult::None
227-
}
228-
}
229-
230-
impl Default for SpfResult {
231-
fn default() -> Self {
232-
SpfResult::None
233-
}
234-
}
235-
236-
impl Default for SPFDomainScope {
237-
fn default() -> Self {
238-
SPFDomainScope::Unspecified
239-
}
240-
}
241-
242202
#[derive(Debug, Clone, PartialEq, Eq)]
243203
pub enum Error {
244204
MailParseError,
@@ -287,70 +247,50 @@ pub struct Feedback<'x> {
287247
headers: Option<Cow<'x, [u8]>>,
288248
}
289249

290-
#[derive(Debug, Clone, PartialEq, Eq, Copy, Serialize, Deserialize)]
250+
#[derive(Debug, Clone, PartialEq, Eq, Copy, Serialize, Deserialize, Default)]
291251
pub enum AuthFailureType {
292252
Adsp,
293253
BodyHash,
294254
Revoked,
295255
Signature,
296256
Spf,
297257
Dmarc,
258+
#[default]
298259
Unspecified,
299260
}
300261

301-
#[derive(Debug, Clone, PartialEq, Eq, Copy, Serialize, Deserialize)]
262+
#[derive(Debug, Clone, PartialEq, Eq, Copy, Serialize, Deserialize, Default)]
302263
pub enum IdentityAlignment {
303264
None,
304265
Spf,
305266
Dkim,
306267
DkimSpf,
268+
#[default]
307269
Unspecified,
308270
}
309271

310-
#[derive(Debug, Clone, PartialEq, Eq, Copy, Serialize, Deserialize)]
272+
#[derive(Debug, Clone, PartialEq, Eq, Copy, Serialize, Deserialize, Default)]
311273
pub enum DeliveryResult {
312274
Delivered,
313275
Spam,
314276
Policy,
315277
Reject,
316278
Other,
279+
#[default]
317280
Unspecified,
318281
}
319282

320-
#[derive(Debug, Clone, PartialEq, Eq, Copy, Serialize, Deserialize)]
283+
#[derive(Debug, Clone, PartialEq, Eq, Copy, Serialize, Deserialize, Default)]
321284
pub enum FeedbackType {
322285
Abuse,
323286
AuthFailure,
324287
Fraud,
325288
NotSpam,
289+
#[default]
326290
Other,
327291
Virus,
328292
}
329293

330-
impl Default for AuthFailureType {
331-
fn default() -> Self {
332-
AuthFailureType::Unspecified
333-
}
334-
}
335-
336-
impl Default for IdentityAlignment {
337-
fn default() -> Self {
338-
IdentityAlignment::Unspecified
339-
}
340-
}
341-
342-
impl Default for DeliveryResult {
343-
fn default() -> Self {
344-
DeliveryResult::Unspecified
345-
}
346-
}
347-
348-
impl Default for FeedbackType {
349-
fn default() -> Self {
350-
FeedbackType::Other
351-
}
352-
}
353-
354294
impl From<&crate::DkimResult> for AuthFailureType {
355295
fn from(value: &crate::DkimResult) -> Self {
356296
match value {

0 commit comments

Comments
 (0)