Skip to content

Commit fec11a9

Browse files
committed
optimize dkim public key parser logic
1 parent 5126f5b commit fec11a9

File tree

4 files changed

+28
-6
lines changed

4 files changed

+28
-6
lines changed

src/Nager.EmailAuthentication.UnitTest/DkimPublicKeyRecordParserTests/BasicTest.cs

+20
Original file line numberDiff line numberDiff line change
@@ -62,5 +62,25 @@ public void TryParse_WrongDkimPublicKeyRecord2_ReturnsTrueAndPopulatesDataFragme
6262
Assert.IsFalse(isSuccessful);
6363
Assert.IsNull(dkimPublicKeyRecord, "DkimPublicKeyRecord is not null");
6464
}
65+
66+
[TestMethod]
67+
public void TryParse_DkimPublicKeyRecordWithVersion_ReturnsTrueAndPopulatesData()
68+
{
69+
var dkimPublicKeyRecordRaw = "v=DKIM1;p=test;";
70+
71+
var isSuccessful = DkimPublicKeyRecordParser.TryParse(dkimPublicKeyRecordRaw, out var dkimPublicKeyRecord);
72+
Assert.IsTrue(isSuccessful);
73+
Assert.IsNotNull(dkimPublicKeyRecord, "DkimPublicKeyRecord is null");
74+
}
75+
76+
[TestMethod]
77+
public void TryParse_DkimPublicKeyRecordWithoutVersion_ReturnsTrueAndPopulatesData()
78+
{
79+
var dkimPublicKeyRecordRaw = "k=rsa; p=test";
80+
81+
var isSuccessful = DkimPublicKeyRecordParser.TryParse(dkimPublicKeyRecordRaw, out var dkimPublicKeyRecord);
82+
Assert.IsTrue(isSuccessful);
83+
Assert.IsNotNull(dkimPublicKeyRecord, "DkimPublicKeyRecord is null");
84+
}
6585
}
6686
}

src/Nager.EmailAuthentication/DkimPublicKeyRecordParser.cs

+6-5
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,6 @@ private static bool ValidateRaw(string? dkimPublicKeyRecordRaw)
1616
return false;
1717
}
1818

19-
if (!dkimPublicKeyRecordRaw.StartsWith("v=DKIM1", StringComparison.OrdinalIgnoreCase))
20-
{
21-
return false;
22-
}
23-
2419
return true;
2520
}
2621

@@ -108,6 +103,12 @@ public static bool TryParseV1(
108103
return false;
109104
}
110105

106+
if (!string.IsNullOrEmpty(dkimPublicKeyRecordDataFragment.Version) &&
107+
!dkimPublicKeyRecordDataFragment.Version.Equals("DKIM1", StringComparison.OrdinalIgnoreCase))
108+
{
109+
return false;
110+
}
111+
111112
dkimPublicKeyRecord = new DkimPublicKeyRecordV1
112113
{
113114
Version = dkimPublicKeyRecordDataFragment.Version ?? "DKIM1",

src/Nager.EmailAuthentication/Models/DkimPublicKeyRecordBase.cs

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ public class DkimPublicKeyRecordBase
88
/// <summary>
99
/// Dkim Version <strong>(v=)</strong>
1010
/// </summary>
11+
/// <remarks>RECOMMENDED, default is "DKIM1"</remarks>
1112
public required string Version { get; set; } = "DKIM1";
1213
}
1314
}

src/Nager.EmailAuthentication/Nager.EmailAuthentication.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020

2121
<TargetFrameworks>net8.0;net9.0</TargetFrameworks>
2222

23-
<Version>2.0.1</Version>
23+
<Version>2.0.2</Version>
2424
</PropertyGroup>
2525

2626
<ItemGroup>

0 commit comments

Comments
 (0)