|
24 | 24 | // THE SOFTWARE.
|
25 | 25 | //
|
26 | 26 |
|
| 27 | +using System.Text; |
27 | 28 | using System.Security.Cryptography.X509Certificates;
|
28 | 29 |
|
29 | 30 | using Org.BouncyCastle.Pkcs;
|
@@ -639,6 +640,33 @@ protected virtual EncryptionAlgorithm[] GetEncryptionAlgorithms (IDigitalSignatu
|
639 | 640 | return ((SecureMimeDigitalSignature) signature).EncryptionAlgorithms;
|
640 | 641 | }
|
641 | 642 |
|
| 643 | + static string EncodeDnsNames (string[] dnsNames) |
| 644 | + { |
| 645 | + if (dnsNames == null || dnsNames.Length == 0) |
| 646 | + return string.Empty; |
| 647 | + |
| 648 | + var builder = new StringBuilder (); |
| 649 | + |
| 650 | + foreach (var name in dnsNames) { |
| 651 | + if (builder.Length > 0) |
| 652 | + builder.Append (", "); |
| 653 | + builder.Append (name); |
| 654 | + } |
| 655 | + |
| 656 | + return builder.ToString (); |
| 657 | + } |
| 658 | + |
| 659 | + static string GetDnsNames (IDigitalCertificate certificate) |
| 660 | + { |
| 661 | + if (certificate is SecureMimeDigitalCertificate smime) |
| 662 | + return EncodeDnsNames (smime.DnsNames); |
| 663 | + |
| 664 | + if (certificate is WindowsSecureMimeDigitalCertificate windows) |
| 665 | + return EncodeDnsNames (windows.DnsNames); |
| 666 | + |
| 667 | + return string.Empty; |
| 668 | + } |
| 669 | + |
642 | 670 | [Test]
|
643 | 671 | public virtual void TestSecureMimeEncapsulatedSigning ()
|
644 | 672 | {
|
@@ -667,6 +695,7 @@ public virtual void TestSecureMimeEncapsulatedSigning ()
|
667 | 695 |
|
668 | 696 | Assert.That (signature.SignerCertificate.Name, Is.EqualTo ("MimeKit UnitTests"));
|
669 | 697 | Assert.That (signature.SignerCertificate.Email, Is.EqualTo (certificate.EmailAddress));
|
| 698 | + Assert.That (GetDnsNames (signature.SignerCertificate), Is.EqualTo (EncodeDnsNames (certificate.DnsNames))); |
670 | 699 | Assert.That (signature.SignerCertificate.Fingerprint.ToLowerInvariant (), Is.EqualTo (certificate.Fingerprint));
|
671 | 700 | Assert.That (signature.SignerCertificate.CreationDate, Is.EqualTo (certificate.CreationDate), "CreationDate");
|
672 | 701 | Assert.That (signature.SignerCertificate.ExpirationDate, Is.EqualTo (certificate.ExpirationDate), "ExpirationDate");
|
@@ -726,6 +755,7 @@ public virtual async Task TestSecureMimeEncapsulatedSigningAsync ()
|
726 | 755 |
|
727 | 756 | Assert.That (signature.SignerCertificate.Name, Is.EqualTo ("MimeKit UnitTests"));
|
728 | 757 | Assert.That (signature.SignerCertificate.Email, Is.EqualTo (certificate.EmailAddress));
|
| 758 | + Assert.That (GetDnsNames (signature.SignerCertificate), Is.EqualTo (EncodeDnsNames (certificate.DnsNames))); |
729 | 759 | Assert.That (signature.SignerCertificate.Fingerprint.ToLowerInvariant (), Is.EqualTo (certificate.Fingerprint));
|
730 | 760 | Assert.That (signature.SignerCertificate.CreationDate, Is.EqualTo (certificate.CreationDate), "CreationDate");
|
731 | 761 | Assert.That (signature.SignerCertificate.ExpirationDate, Is.EqualTo (certificate.ExpirationDate), "ExpirationDate");
|
@@ -1073,6 +1103,7 @@ public virtual void TestSecureMimeSigningWithCmsSigner ()
|
1073 | 1103 | if (ctx is not WindowsSecureMimeContext || Environment.OSVersion.Platform == PlatformID.Win32NT)
|
1074 | 1104 | Assert.That (signature.SignerCertificate.Name, Is.EqualTo ("MimeKit UnitTests"));
|
1075 | 1105 | Assert.That (signature.SignerCertificate.Email, Is.EqualTo (certificate.EmailAddress));
|
| 1106 | + Assert.That (GetDnsNames (signature.SignerCertificate), Is.EqualTo (EncodeDnsNames (certificate.DnsNames))); |
1076 | 1107 | Assert.That (signature.SignerCertificate.Fingerprint.ToLowerInvariant (), Is.EqualTo (certificate.Fingerprint));
|
1077 | 1108 |
|
1078 | 1109 | var algorithms = GetEncryptionAlgorithms (signature);
|
@@ -1127,6 +1158,7 @@ public virtual async Task TestSecureMimeSigningWithCmsSignerAsync ()
|
1127 | 1158 | if (ctx is not WindowsSecureMimeContext || Environment.OSVersion.Platform == PlatformID.Win32NT)
|
1128 | 1159 | Assert.That (signature.SignerCertificate.Name, Is.EqualTo ("MimeKit UnitTests"));
|
1129 | 1160 | Assert.That (signature.SignerCertificate.Email, Is.EqualTo (certificate.EmailAddress));
|
| 1161 | + Assert.That (GetDnsNames (signature.SignerCertificate), Is.EqualTo (EncodeDnsNames (certificate.DnsNames))); |
1130 | 1162 | Assert.That (signature.SignerCertificate.Fingerprint.ToLowerInvariant (), Is.EqualTo (certificate.Fingerprint));
|
1131 | 1163 |
|
1132 | 1164 | var algorithms = GetEncryptionAlgorithms (signature);
|
@@ -1181,6 +1213,7 @@ public virtual void TestSecureMimeSigningWithContextAndCmsSigner ()
|
1181 | 1213 | if (ctx is not WindowsSecureMimeContext || Environment.OSVersion.Platform == PlatformID.Win32NT)
|
1182 | 1214 | Assert.That (signature.SignerCertificate.Name, Is.EqualTo ("MimeKit UnitTests"));
|
1183 | 1215 | Assert.That (signature.SignerCertificate.Email, Is.EqualTo (certificate.EmailAddress));
|
| 1216 | + Assert.That (GetDnsNames (signature.SignerCertificate), Is.EqualTo (EncodeDnsNames (certificate.DnsNames))); |
1184 | 1217 | Assert.That (signature.SignerCertificate.Fingerprint.ToLowerInvariant (), Is.EqualTo (certificate.Fingerprint));
|
1185 | 1218 |
|
1186 | 1219 | var algorithms = GetEncryptionAlgorithms (signature);
|
@@ -1252,6 +1285,7 @@ public virtual async Task TestSecureMimeSigningWithContextAndCmsSignerAsync ()
|
1252 | 1285 | if (ctx is not WindowsSecureMimeContext || Environment.OSVersion.Platform == PlatformID.Win32NT)
|
1253 | 1286 | Assert.That (signature.SignerCertificate.Name, Is.EqualTo ("MimeKit UnitTests"));
|
1254 | 1287 | Assert.That (signature.SignerCertificate.Email, Is.EqualTo (certificate.EmailAddress));
|
| 1288 | + Assert.That (GetDnsNames (signature.SignerCertificate), Is.EqualTo (EncodeDnsNames (certificate.DnsNames))); |
1255 | 1289 | Assert.That (signature.SignerCertificate.Fingerprint.ToLowerInvariant (), Is.EqualTo (certificate.Fingerprint));
|
1256 | 1290 |
|
1257 | 1291 | var algorithms = GetEncryptionAlgorithms (signature);
|
@@ -1451,6 +1485,7 @@ public virtual void TestSecureMimeMessageSigning ()
|
1451 | 1485 | if (ctx is not WindowsSecureMimeContext || Environment.OSVersion.Platform == PlatformID.Win32NT)
|
1452 | 1486 | Assert.That (signature.SignerCertificate.Name, Is.EqualTo (self.Name));
|
1453 | 1487 | Assert.That (signature.SignerCertificate.Email, Is.EqualTo (self.Address));
|
| 1488 | + Assert.That (GetDnsNames (signature.SignerCertificate), Is.EqualTo (EncodeDnsNames (certificate.DnsNames))); |
1454 | 1489 | Assert.That (signature.SignerCertificate.Fingerprint.ToLowerInvariant (), Is.EqualTo (certificate.Fingerprint));
|
1455 | 1490 |
|
1456 | 1491 | var algorithms = GetEncryptionAlgorithms (signature);
|
@@ -1532,6 +1567,7 @@ public virtual async Task TestSecureMimeMessageSigningAsync ()
|
1532 | 1567 | if (ctx is not WindowsSecureMimeContext || Environment.OSVersion.Platform == PlatformID.Win32NT)
|
1533 | 1568 | Assert.That (signature.SignerCertificate.Name, Is.EqualTo (self.Name));
|
1534 | 1569 | Assert.That (signature.SignerCertificate.Email, Is.EqualTo (self.Address));
|
| 1570 | + Assert.That (GetDnsNames (signature.SignerCertificate), Is.EqualTo (EncodeDnsNames (certificate.DnsNames))); |
1535 | 1571 | Assert.That (signature.SignerCertificate.Fingerprint.ToLowerInvariant (), Is.EqualTo (certificate.Fingerprint));
|
1536 | 1572 |
|
1537 | 1573 | var algorithms = GetEncryptionAlgorithms (signature);
|
@@ -2284,6 +2320,7 @@ public virtual void TestSecureMimeSignAndEncrypt ()
|
2284 | 2320 | if (ctx is not WindowsSecureMimeContext || Environment.OSVersion.Platform == PlatformID.Win32NT)
|
2285 | 2321 | Assert.That (signature.SignerCertificate.Name, Is.EqualTo (self.Name));
|
2286 | 2322 | Assert.That (signature.SignerCertificate.Email, Is.EqualTo (self.Address));
|
| 2323 | + Assert.That (GetDnsNames (signature.SignerCertificate), Is.EqualTo (EncodeDnsNames (certificate.DnsNames))); |
2287 | 2324 | Assert.That (signature.SignerCertificate.Fingerprint.ToLowerInvariant (), Is.EqualTo (self.Fingerprint));
|
2288 | 2325 |
|
2289 | 2326 | var algorithms = GetEncryptionAlgorithms (signature);
|
@@ -2374,6 +2411,7 @@ public virtual async Task TestSecureMimeSignAndEncryptAsync ()
|
2374 | 2411 | if (ctx is not WindowsSecureMimeContext || Environment.OSVersion.Platform == PlatformID.Win32NT)
|
2375 | 2412 | Assert.That (signature.SignerCertificate.Name, Is.EqualTo (self.Name));
|
2376 | 2413 | Assert.That (signature.SignerCertificate.Email, Is.EqualTo (self.Address));
|
| 2414 | + Assert.That (GetDnsNames (signature.SignerCertificate), Is.EqualTo (EncodeDnsNames (certificate.DnsNames))); |
2377 | 2415 | Assert.That (signature.SignerCertificate.Fingerprint.ToLowerInvariant (), Is.EqualTo (self.Fingerprint));
|
2378 | 2416 |
|
2379 | 2417 | var algorithms = GetEncryptionAlgorithms (signature);
|
|
0 commit comments