Skip to content

Commit 7c7f4e3

Browse files
committed
Optimize parse logic
1 parent a75bde1 commit 7c7f4e3

12 files changed

+240
-119
lines changed

src/Nager.EmailAuthentication.UnitTest/DkimSignatureParserTests/MessageCanonicalizationTest.cs

+8-8
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public sealed class MessageCanonicalizationTest
88
[TestMethod]
99
public void TryParse_NoMessageCanonicalization_ReturnsTrueAndPopulatesDkimSignature()
1010
{
11-
var dkimSignatureRaw = "v=1; a=rsa-sha256; d=domain.com; s=test; h=message-id:from; bh=testbodyhash=; b=signaturedata";
11+
var dkimSignatureRaw = "v=1; a=rsa-sha256; d=domain.com; s=test; h=from:to:reply-to:subject:date:cc:content-type; bh=testbodyhash=; b=signaturedata";
1212

1313
var isSuccessful = DkimSignatureParser.TryParse(dkimSignatureRaw, out var dkimSignature, out var parsingResults);
1414

@@ -20,7 +20,7 @@ public void TryParse_NoMessageCanonicalization_ReturnsTrueAndPopulatesDkimSignat
2020
[TestMethod]
2121
public void TryParse_SingleMessageCanonicalization1_ReturnsTrueAndPopulatesDkimSignature()
2222
{
23-
var dkimSignatureRaw = "v=1; a=rsa-sha256; d=domain.com; c=relaxed; s=test; h=message-id:from; bh=testbodyhash=; b=signaturedata";
23+
var dkimSignatureRaw = "v=1; a=rsa-sha256; d=domain.com; c=relaxed; s=test; h=from:to:reply-to:subject:date:cc:content-type; bh=testbodyhash=; b=signaturedata";
2424

2525
var isSuccessful = DkimSignatureParser.TryParse(dkimSignatureRaw, out var dkimSignature, out var parsingResults);
2626

@@ -35,7 +35,7 @@ public void TryParse_SingleMessageCanonicalization1_ReturnsTrueAndPopulatesDkimS
3535
[TestMethod]
3636
public void TryParse_SingleMessageCanonicalization2_ReturnsTrueAndPopulatesDkimSignature()
3737
{
38-
var dkimSignatureRaw = "v=1; a=rsa-sha256; d=domain.com; c=simple; s=test; h=message-id:from; bh=testbodyhash=; b=signaturedata";
38+
var dkimSignatureRaw = "v=1; a=rsa-sha256; d=domain.com; c=simple; s=test; h=from:to:reply-to:subject:date:cc:content-type; bh=testbodyhash=; b=signaturedata";
3939

4040
var isSuccessful = DkimSignatureParser.TryParse(dkimSignatureRaw, out var dkimSignature, out var parsingResults);
4141

@@ -49,7 +49,7 @@ public void TryParse_SingleMessageCanonicalization2_ReturnsTrueAndPopulatesDkimS
4949
[TestMethod]
5050
public void TryParse_DefaultMessageCanonicalization1_ReturnsTrueAndPopulatesDkimSignature()
5151
{
52-
var dkimSignatureRaw = "v=1; a=rsa-sha256; d=domain.com; c=simple/simple; s=test; h=message-id:from; bh=testbodyhash=; b=signaturedata";
52+
var dkimSignatureRaw = "v=1; a=rsa-sha256; d=domain.com; c=simple/simple; s=test; h=from:to:reply-to:subject:date:cc:content-type; bh=testbodyhash=; b=signaturedata";
5353

5454
var isSuccessful = DkimSignatureParser.TryParse(dkimSignatureRaw, out var dkimSignature, out var parsingResults);
5555

@@ -63,7 +63,7 @@ public void TryParse_DefaultMessageCanonicalization1_ReturnsTrueAndPopulatesDkim
6363
[TestMethod]
6464
public void TryParse_DefaultMessageCanonicalization2_ReturnsTrueAndPopulatesDkimSignature()
6565
{
66-
var dkimSignatureRaw = "v=1; a=rsa-sha256; d=domain.com; c=simple/relaxed; s=test; h=message-id:from; bh=testbodyhash=; b=signaturedata";
66+
var dkimSignatureRaw = "v=1; a=rsa-sha256; d=domain.com; c=simple/relaxed; s=test; h=from:to:reply-to:subject:date:cc:content-type; bh=testbodyhash=; b=signaturedata";
6767

6868
var isSuccessful = DkimSignatureParser.TryParse(dkimSignatureRaw, out var dkimSignature, out var parsingResults);
6969

@@ -77,7 +77,7 @@ public void TryParse_DefaultMessageCanonicalization2_ReturnsTrueAndPopulatesDkim
7777
[TestMethod]
7878
public void TryParse_DefaultMessageCanonicalization3_ReturnsTrueAndPopulatesDkimSignature()
7979
{
80-
var dkimSignatureRaw = "v=1; a=rsa-sha256; d=domain.com; c=relaxed/relaxed; s=test; h=message-id:from; bh=testbodyhash=; b=signaturedata";
80+
var dkimSignatureRaw = "v=1; a=rsa-sha256; d=domain.com; c=relaxed/relaxed; s=test; h=from:to:reply-to:subject:date:cc:content-type; bh=testbodyhash=; b=signaturedata";
8181

8282
var isSuccessful = DkimSignatureParser.TryParse(dkimSignatureRaw, out var dkimSignature, out var parsingResults);
8383

@@ -91,7 +91,7 @@ public void TryParse_DefaultMessageCanonicalization3_ReturnsTrueAndPopulatesDkim
9191
[TestMethod]
9292
public void TryParse_InvalidMessageCanonicalization1_ReturnsFalse()
9393
{
94-
var dkimSignatureRaw = "v=1; a=rsa-sha256; d=domain.com; c=test/test; s=test; h=message-id:from; bh=testbodyhash=; b=signaturedata";
94+
var dkimSignatureRaw = "v=1; a=rsa-sha256; d=domain.com; c=test/test; s=test; h=from:to:reply-to:subject:date:cc:content-type; bh=testbodyhash=; b=signaturedata";
9595

9696
var isSuccessful = DkimSignatureParser.TryParse(dkimSignatureRaw, out var dkimSignature, out var parsingResults);
9797

@@ -103,7 +103,7 @@ public void TryParse_InvalidMessageCanonicalization1_ReturnsFalse()
103103
[TestMethod]
104104
public void TryParse_InvalidMessageCanonicalization2_ReturnsFalse()
105105
{
106-
var dkimSignatureRaw = "v=1; a=rsa-sha256; d=domain.com; c=relaxed/simple/test; s=test; h=message-id:from; bh=testbodyhash=; b=signaturedata";
106+
var dkimSignatureRaw = "v=1; a=rsa-sha256; d=domain.com; c=relaxed/simple/test; s=test; h=from:to:reply-to:subject:date:cc:content-type; bh=testbodyhash=; b=signaturedata";
107107

108108
var isSuccessful = DkimSignatureParser.TryParse(dkimSignatureRaw, out var dkimSignature, out var parsingResults);
109109

src/Nager.EmailAuthentication.UnitTest/DkimSignatureParserTests/SelectorTest.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public sealed class SelectorTest
99
[DataTestMethod]
1010
public void TryParse_ValidSelector_ReturnsTrueAndPopulatesDataFragment(string selector)
1111
{
12-
var dkimSignature = $"v=1; a=rsa-sha256; d=domain.com; s={selector}; h=message-id:from; bh=testbodyhash=; b=signaturedata";
12+
var dkimSignature = $"v=1; a=rsa-sha256; d=domain.com; s={selector}; h=from:to:reply-to:subject:date:cc:content-type; bh=testbodyhash=; b=signaturedata";
1313

1414
var isSuccessful = DkimSignatureDataFragmentParser.TryParse(dkimSignature, out var dkimSignatureDataFragment, out var parsingResults);
1515

@@ -26,7 +26,7 @@ public void TryParse_ValidSelector_ReturnsTrueAndPopulatesDataFragment(string se
2626
[DataTestMethod]
2727
public void TryParse_InvalidSelector_ReturnsTrueAndPopulatesDataFragment(string selector)
2828
{
29-
var dkimSignature = $"v=1; a=rsa-sha256; d=domain.com; s={selector}; h=message-id:from; bh=testbodyhash=; b=signaturedata";
29+
var dkimSignature = $"v=1; a=rsa-sha256; d=domain.com; s={selector}; h=from:to:reply-to:subject:date:cc:content-type; bh=testbodyhash=; b=signaturedata";
3030

3131
var isSuccessful = DkimSignatureDataFragmentParser.TryParse(dkimSignature, out var dkimSignatureDataFragment, out var parsingResults);
3232

src/Nager.EmailAuthentication.UnitTest/DkimSignatureParserTests/SignatureAlgorithmTest.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public sealed class SignatureAlgorithmTest
88
[DataTestMethod]
99
public void TryParse_ValidSignatureAlgorithm_ReturnsTrueAndPopulatesDataFragment(string signatureAlgorithm)
1010
{
11-
var dkimSignature = $"v=1; a={signatureAlgorithm}; d=domain.com; s=test; h=message-id:from; bh=testbodyhash=; b=signaturedata";
11+
var dkimSignature = $"v=1; a={signatureAlgorithm}; d=domain.com; s=test; h=from:to:reply-to:subject:date:cc:content-type; bh=testbodyhash=; b=signaturedata";
1212

1313
var isSuccessful = DkimSignatureDataFragmentParser.TryParse(dkimSignature, out var dkimSignatureDataFragment, out var parsingResults);
1414

@@ -21,7 +21,7 @@ public void TryParse_ValidSignatureAlgorithm_ReturnsTrueAndPopulatesDataFragment
2121
[DataTestMethod]
2222
public void TryParse_UnsecureSignatureAlgorithm_ReturnsTrueAndPopulatesDataFragment(string signatureAlgorithm)
2323
{
24-
var dkimSignature = $"v=1; a={signatureAlgorithm}; d=domain.com; s=test; h=message-id:from; bh=testbodyhash=; b=signaturedata";
24+
var dkimSignature = $"v=1; a={signatureAlgorithm}; d=domain.com; s=test; h=from:to:reply-to:subject:date:cc:content-type; bh=testbodyhash=; b=signaturedata";
2525

2626
var isSuccessful = DkimSignatureDataFragmentParser.TryParse(dkimSignature, out var dkimSignatureDataFragment, out var parsingResults);
2727

@@ -34,7 +34,7 @@ public void TryParse_UnsecureSignatureAlgorithm_ReturnsTrueAndPopulatesDataFragm
3434
[DataTestMethod]
3535
public void TryParse_InvalidSignatureAlgorithm_ReturnsTrueAndPopulatesDataFragment(string signatureAlgorithm)
3636
{
37-
var dkimSignature = $"v=1; a={signatureAlgorithm}; d=domain.com; s=test; h=message-id:from; bh=testbodyhash=; b=signaturedata";
37+
var dkimSignature = $"v=1; a={signatureAlgorithm}; d=domain.com; s=test; h=from:to:reply-to:subject:date:cc:content-type; bh=testbodyhash=; b=signaturedata";
3838

3939
var isSuccessful = DkimSignatureDataFragmentParser.TryParse(dkimSignature, out var dkimSignatureDataFragment, out var parsingResults);
4040

src/Nager.EmailAuthentication.UnitTest/DkimSignatureParserTests/VersionTest.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,10 @@
44
public sealed class VersionTest
55
{
66
[DataRow("1")]
7-
[DataRow("2")]
8-
[DataRow("3")]
97
[DataTestMethod]
108
public void TryParse_ValidVersion_ReturnsTrueAndPopulatesDataFragment(string version)
119
{
12-
var dkimSignature = $"v={version}; a=rsa-sha256; d=domain.com; s=myselector; h=message-id:from; bh=testbodyhash=; b=signaturedata";
10+
var dkimSignature = $"v={version}; a=rsa-sha256; d=domain.com; s=myselector; h=from:to:reply-to:subject:date:cc:content-type; bh=testbodyhash=; b=signaturedata";
1311

1412
var isSuccessful = DkimSignatureDataFragmentParser.TryParse(dkimSignature, out var dkimSignatureDataFragment, out var parsingResults);
1513

@@ -18,6 +16,8 @@ public void TryParse_ValidVersion_ReturnsTrueAndPopulatesDataFragment(string ver
1816
Assert.IsNull(parsingResults, "ParsingResults is not null");
1917
}
2018

19+
[DataRow("2")]
20+
[DataRow("3")]
2121
[DataRow("a")]
2222
[DataRow("a1")]
2323
[DataTestMethod]

src/Nager.EmailAuthentication/DkimPublicKeyRecordDataFragmentParser.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ private static ParsingResult[] ValidatePublicKeyData(ValidateRequest validateReq
124124

125125
private static ParsingResult[] ValidateVersion(ValidateRequest validateRequest)
126126
{
127-
var errors = new List<ParsingResult>();
127+
var parsingResults = new List<ParsingResult>();
128128

129129
if (string.IsNullOrEmpty(validateRequest.Value))
130130
{

0 commit comments

Comments
 (0)