Exemple #1
0
        public void TestArgumentExceptions()
        {
            var locator    = new DummyPublicKeyLocator(DkimKeys.Public);
            var dkimHeader = new Header(HeaderId.DkimSignature, "value");
            var signer     = CreateSigner(DkimSignatureAlgorithm.RsaSha1);
            var options    = FormatOptions.Default;
            var message    = new MimeMessage();

            Assert.Throws <ArgumentNullException> (() => message.Sign(null, new HeaderId[] { HeaderId.From }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(signer, (IList <HeaderId>)null));
            Assert.Throws <ArgumentNullException> (() => message.Sign(null, new string[] { "From" }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(signer, (IList <string>)null));

            Assert.Throws <ArgumentNullException> (() => message.Sign(null, signer, new HeaderId[] { HeaderId.From }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(options, null, new HeaderId[] { HeaderId.From }));
            Assert.Throws <ArgumentException> (() => message.Sign(options, signer, new HeaderId[] { HeaderId.From, HeaderId.Unknown }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(options, signer, (IList <HeaderId>)null));

            Assert.Throws <ArgumentNullException> (() => message.Sign(null, signer, new string[] { "From" }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(options, null, new string[] { "From" }));
            Assert.Throws <ArgumentException> (() => message.Sign(options, signer, new string[] { "From", null }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(options, signer, (IList <string>)null));

            Assert.Throws <ArgumentNullException> (() => message.Verify(null, locator));
            Assert.Throws <ArgumentNullException> (() => message.Verify(dkimHeader, null));
            Assert.Throws <ArgumentNullException> (() => message.Verify(null, dkimHeader, locator));
            Assert.Throws <ArgumentNullException> (() => message.Verify(FormatOptions.Default, null, locator));
            Assert.Throws <ArgumentNullException> (() => message.Verify(FormatOptions.Default, dkimHeader, null));
        }
Exemple #2
0
        public void TestVerifyGoogleMultipartWithoutEndBoundaryDkimSignature()
        {
            var message = MimeMessage.Load(Path.Combine("..", "..", "TestData", "dkim", "multipart-no-end-boundary.msg"));
            int index   = message.Headers.IndexOf(HeaderId.DkimSignature);
            var locator = new DummyPublicKeyLocator(GMailDkimPublicKey);

            Assert.IsTrue(message.Verify(message.Headers[index], locator), "Failed to verify GMail signature.");
        }
Exemple #3
0
        public async void TestVerifyGoogleMultipartRelatedDkimSignatureAsync()
        {
            var message = MimeMessage.Load(Path.Combine("..", "..", "TestData", "dkim", "related.msg"));
            int index   = message.Headers.IndexOf(HeaderId.DkimSignature);
            var locator = new DummyPublicKeyLocator(GMailDkimPublicKey);

            Assert.IsTrue(await message.VerifyAsync(message.Headers[index], locator), "Failed to verify GMail signature.");
        }
Exemple #4
0
        public async Task TestVerifyGoogleMultipartWithoutEndBoundaryDkimSignatureAsync()
        {
            var message  = MimeMessage.Load(Path.Combine(TestHelper.ProjectDir, "TestData", "dkim", "multipart-no-end-boundary.msg"));
            int index    = message.Headers.IndexOf(HeaderId.DkimSignature);
            var locator  = new DummyPublicKeyLocator(GMailDkimPublicKey);
            var verifier = new DkimVerifier(locator);

            Assert.IsTrue(await verifier.VerifyAsync(message, message.Headers[index]), "Failed to verify GMail signature.");
        }
Exemple #5
0
        public void TestVerifyGoogleMultipartRelatedDkimSignature()
        {
            var message  = MimeMessage.Load(Path.Combine(TestHelper.ProjectDir, "TestData", "dkim", "related.msg"));
            int index    = message.Headers.IndexOf(HeaderId.DkimSignature);
            var locator  = new DummyPublicKeyLocator(GMailDkimPublicKey);
            var verifier = new DkimVerifier(locator);

            Assert.IsTrue(verifier.Verify(message, message.Headers[index]), "Failed to verify GMail signature.");
        }
Exemple #6
0
        public void TestArgumentExceptions()
        {
            var        locator    = new DummyPublicKeyLocator(DkimKeys.Public);
            var        dkimHeader = new Header(HeaderId.DkimSignature, "value");
            var        options    = FormatOptions.Default;
            var        message    = new MimeMessage();
            DkimSigner signer;

            Assert.Throws <ArgumentNullException> (() => new DkimSigner((AsymmetricKeyParameter)null, "domain", "selector"));
            Assert.Throws <ArgumentException> (() => new DkimSigner(DkimKeys.Public, "domain", "selector"));
            Assert.Throws <ArgumentNullException> (() => new DkimSigner(DkimKeys.Private, null, "selector"));
            Assert.Throws <ArgumentNullException> (() => new DkimSigner(DkimKeys.Private, "domain", null));
            Assert.Throws <ArgumentNullException> (() => new DkimSigner((string)null, "domain", "selector"));
            Assert.Throws <ArgumentNullException> (() => new DkimSigner("fileName", null, "selector"));
            Assert.Throws <ArgumentNullException> (() => new DkimSigner("fileName", "domain", null));
            Assert.Throws <ArgumentException> (() => new DkimSigner(string.Empty, "domain", "selector"));
            Assert.Throws <ArgumentNullException> (() => new DkimSigner((Stream)null, "domain", "selector"));
            using (var stream = File.OpenRead(Path.Combine("..", "..", "TestData", "dkim", "example.pem"))) {
                Assert.Throws <ArgumentNullException> (() => new DkimSigner(stream, null, "selector"));
                Assert.Throws <ArgumentNullException> (() => new DkimSigner(stream, "domain", null));

                signer = new DkimSigner(stream, "example.com", "1433868189.example")
                {
                    SignatureAlgorithm    = DkimSignatureAlgorithm.RsaSha1,
                    AgentOrUserIdentifier = "@eng.example.com",
                    QueryMethod           = "dns/txt",
                };
            }

            Assert.Throws <ArgumentNullException> (() => message.Sign(null, new HeaderId[] { HeaderId.From }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(signer, (IList <HeaderId>)null));
            Assert.Throws <ArgumentException> (() => message.Sign(signer, new HeaderId[] { HeaderId.Unknown, HeaderId.From }));
            Assert.Throws <ArgumentException> (() => message.Sign(signer, new HeaderId[] { HeaderId.Received, HeaderId.From }));
            Assert.Throws <ArgumentException> (() => message.Sign(signer, new HeaderId[] { HeaderId.ContentType }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(null, new string[] { "From" }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(signer, (IList <string>)null));
            Assert.Throws <ArgumentException> (() => message.Sign(signer, new string[] { "", "From" }));
            Assert.Throws <ArgumentException> (() => message.Sign(signer, new string[] { null, "From" }));
            Assert.Throws <ArgumentException> (() => message.Sign(signer, new string[] { "Received", "From" }));
            Assert.Throws <ArgumentException> (() => message.Sign(signer, new string[] { "Content-Type" }));

            Assert.Throws <ArgumentNullException> (() => message.Sign(null, signer, new HeaderId[] { HeaderId.From }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(options, null, new HeaderId[] { HeaderId.From }));
            Assert.Throws <ArgumentException> (() => message.Sign(options, signer, new HeaderId[] { HeaderId.From, HeaderId.Unknown }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(options, signer, (IList <HeaderId>)null));

            Assert.Throws <ArgumentNullException> (() => message.Sign(null, signer, new string[] { "From" }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(options, null, new string[] { "From" }));
            Assert.Throws <ArgumentException> (() => message.Sign(options, signer, new string[] { "From", null }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(options, signer, (IList <string>)null));

            Assert.Throws <ArgumentNullException> (() => message.Verify(null, locator));
            Assert.Throws <ArgumentNullException> (() => message.Verify(dkimHeader, null));
            Assert.Throws <ArgumentNullException> (() => message.Verify(null, dkimHeader, locator));
            Assert.Throws <ArgumentNullException> (() => message.Verify(FormatOptions.Default, null, locator));
            Assert.Throws <ArgumentNullException> (() => message.Verify(FormatOptions.Default, dkimHeader, null));
        }
Exemple #7
0
        public async Task TestVerifyGoogleMailDkimSignatureAsync()
        {
            var message  = MimeMessage.Load(Path.Combine("..", "..", "TestData", "dkim", "gmail.msg"));
            int index    = message.Headers.IndexOf(HeaderId.DkimSignature);
            var locator  = new DummyPublicKeyLocator(GMailDkimPublicKey);
            var verifier = new DkimVerifier(locator);

            Assert.IsTrue(await verifier.VerifyAsync(message, message.Headers[index]), "Failed to verify GMail signature.");
        }
Exemple #8
0
        public void TestArgumentExceptions()
        {
            var locator    = new DummyPublicKeyLocator(DkimKeys.Public);
            var dkimHeader = new Header(HeaderId.DkimSignature, "value");
            var message    = new MimeMessage();

            Assert.Throws <ArgumentNullException> (() => message.Sign(null, new HeaderId[] { HeaderId.From }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(CreateSigner(DkimSignatureAlgorithm.RsaSha1), null));
            Assert.Throws <ArgumentNullException> (() => message.Verify(null, locator));
            Assert.Throws <ArgumentNullException> (() => message.Verify(dkimHeader, null));
            Assert.Throws <ArgumentNullException> (() => message.Verify(null, dkimHeader, locator));
            Assert.Throws <ArgumentNullException> (() => message.Verify(FormatOptions.Default, null, locator));
            Assert.Throws <ArgumentNullException> (() => message.Verify(FormatOptions.Default, dkimHeader, null));
        }
Exemple #9
0
        public void TestArgumentExceptions()
        {
            var locator    = new DummyPublicKeyLocator(DkimKeys.Public);
            var dkimHeader = new Header(HeaderId.DkimSignature, "value");
            var signer     = CreateSigner(DkimSignatureAlgorithm.RsaSha1);
            var options    = FormatOptions.Default;
            var message    = new MimeMessage();

            Assert.Throws <ArgumentNullException> (() => new DkimSigner((AsymmetricKeyParameter)null, "domain", "selector"));
            Assert.Throws <ArgumentNullException> (() => new DkimSigner(DkimKeys.Private, null, "selector"));
            Assert.Throws <ArgumentNullException> (() => new DkimSigner(DkimKeys.Private, "domain", null));
            Assert.Throws <ArgumentNullException> (() => new DkimSigner((string)null, "domain", "selector"));
            Assert.Throws <ArgumentNullException> (() => new DkimSigner("fileName", null, "selector"));
            Assert.Throws <ArgumentNullException> (() => new DkimSigner("fileName", "domain", null));
            Assert.Throws <ArgumentException> (() => new DkimSigner(string.Empty, "domain", "selector"));
            Assert.Throws <ArgumentNullException> (() => new DkimSigner((Stream)null, "domain", "selector"));
            using (var stream = new MemoryStream()) {
                Assert.Throws <ArgumentNullException> (() => new DkimSigner(stream, null, "selector"));
                Assert.Throws <ArgumentNullException> (() => new DkimSigner(stream, "domain", null));
            }

            Assert.Throws <ArgumentNullException> (() => message.Sign(null, new HeaderId[] { HeaderId.From }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(signer, (IList <HeaderId>)null));
            Assert.Throws <ArgumentException> (() => message.Sign(signer, new HeaderId[] { HeaderId.Unknown, HeaderId.From }));
            Assert.Throws <ArgumentException> (() => message.Sign(signer, new HeaderId[] { HeaderId.Received, HeaderId.From }));
            Assert.Throws <ArgumentException> (() => message.Sign(signer, new HeaderId[] { HeaderId.ContentType }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(null, new string[] { "From" }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(signer, (IList <string>)null));
            Assert.Throws <ArgumentException> (() => message.Sign(signer, new string[] { "", "From" }));
            Assert.Throws <ArgumentException> (() => message.Sign(signer, new string[] { null, "From" }));
            Assert.Throws <ArgumentException> (() => message.Sign(signer, new string[] { "Received", "From" }));
            Assert.Throws <ArgumentException> (() => message.Sign(signer, new string[] { "Content-Type" }));

            Assert.Throws <ArgumentNullException> (() => message.Sign(null, signer, new HeaderId[] { HeaderId.From }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(options, null, new HeaderId[] { HeaderId.From }));
            Assert.Throws <ArgumentException> (() => message.Sign(options, signer, new HeaderId[] { HeaderId.From, HeaderId.Unknown }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(options, signer, (IList <HeaderId>)null));

            Assert.Throws <ArgumentNullException> (() => message.Sign(null, signer, new string[] { "From" }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(options, null, new string[] { "From" }));
            Assert.Throws <ArgumentException> (() => message.Sign(options, signer, new string[] { "From", null }));
            Assert.Throws <ArgumentNullException> (() => message.Sign(options, signer, (IList <string>)null));

            Assert.Throws <ArgumentNullException> (() => message.Verify(null, locator));
            Assert.Throws <ArgumentNullException> (() => message.Verify(dkimHeader, null));
            Assert.Throws <ArgumentNullException> (() => message.Verify(null, dkimHeader, locator));
            Assert.Throws <ArgumentNullException> (() => message.Verify(FormatOptions.Default, null, locator));
            Assert.Throws <ArgumentNullException> (() => message.Verify(FormatOptions.Default, dkimHeader, null));
        }
Exemple #10
0
		public void TestVerifyGoogleMultipartWithoutEndBoundaryDkimSignature ()
		{
			var message = MimeMessage.Load (Path.Combine ("..", "..", "TestData", "dkim", "multipart-no-end-boundary.msg"));
			int index = message.Headers.IndexOf (HeaderId.DkimSignature);
			var locator = new DummyPublicKeyLocator (GMailDkimPublicKey);

			Assert.IsTrue (message.Verify (message.Headers[index], locator), "Failed to verify GMail signature.");
		}
Exemple #11
0
		public void TestArgumentExceptions ()
		{
			var locator = new DummyPublicKeyLocator (DkimKeys.Public);
			var dkimHeader = new Header (HeaderId.DkimSignature, "value");
			var message = new MimeMessage ();

			Assert.Throws<ArgumentNullException> (() => message.Sign (null, new HeaderId[] { HeaderId.From }));
			Assert.Throws<ArgumentNullException> (() => message.Sign (CreateSigner (DkimSignatureAlgorithm.RsaSha1), null));
			Assert.Throws<ArgumentNullException> (() => message.Verify (null, locator));
			Assert.Throws<ArgumentNullException> (() => message.Verify (dkimHeader, null));
			Assert.Throws<ArgumentNullException> (() => message.Verify (null, dkimHeader, locator));
			Assert.Throws<ArgumentNullException> (() => message.Verify (FormatOptions.Default, null, locator));
			Assert.Throws<ArgumentNullException> (() => message.Verify (FormatOptions.Default, dkimHeader, null));
		}