Esempio n. 1
0
        public void Load()
        {
            var s = PrivateKeySigner.LoadFromFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "mycert.pem"));


            s.Sign(Encoding.Default.GetBytes("some text to sign."), SigningAlgorithm.RSASha1);
        }
Esempio n. 2
0
        public void Create()
        {
            var s = PrivateKeySigner.Create(PrivateKey);


            s.Sign(Encoding.Default.GetBytes("some text to sign."), SigningAlgorithm.RSASha1);
        }
Esempio n. 3
0
        public void Valid_send_sign_DomainKey_then_DKIM(string headers)
        {
            var msg = new MailMessage();

            msg.To.Add(new MailAddress(_to, "Jim Bob"));
            msg.From    = new MailAddress(_from, "Joe Bloggs");
            msg.Subject = "Test DomainKeys & DKIM Message";
            msg.Body    = "A simple message";



            var domainKeySigner = new DomainKeySigner(PrivateKeySigner.Create(_privateKey), _domain, _selector, GetHeaders(headers));

            msg.DomainKeySign(domainKeySigner);


            var dkimSigner = new DkimSigner(PrivateKeySigner.Create(_privateKey), _domain, _selector, GetHeaders(headers));

            msg.DkimSign(dkimSigner);



            var smtp = new SmtpClient();

            smtp.Send(msg);
        }
Esempio n. 4
0
        private static void GetDkimSigners()
        {
            try
            {
                var files = new DirectoryInfo(Config.PrivateKeyFolder).GetFiles("*.pem");

                if (files.Length == 0)
                {
                    throw new Exception("No private key files (*.pem) found");
                }

                foreach (var file in files)
                {
                    var key      = file.Name.Replace(".pem", "");
                    var selector = key.Split('@')[0];
                    var domain   = key.Split('@')[1];

                    var pKeySig      = PrivateKeySigner.LoadFromFile(file.FullName);
                    var dkimSig      = new DkimSigner(pKeySig, domain, selector, new[] { "From", "To", "Subject" });
                    var domainKeySig = new DomainKeySigner(pKeySig, domain, selector, new[] { "From", "To", "Subject" });

                    dkimSig.HeaderCanonicalization = DkimCanonicalizationAlgorithm.RELAXED;
                    dkimSig.BodyCanonicalization   = DkimCanonicalizationAlgorithm.RELAXED;

                    _dkimSignerCache.TryAdd(key, dkimSig);
                    _domailKeySignerCache.TryAdd(key, domainKeySig);
                }
            }
            catch (Exception ex)
            {
                Logger.Log.Warn("Unable to turn on DKIM: {0}", ex.Message);
            }
        }
Esempio n. 5
0
        public void Load()
        {
            var tempFile = Path.GetTempFileName();

            File.WriteAllText(tempFile, PrivateKey);

            var s = PrivateKeySigner.LoadFromFile(tempFile);

            s.Sign(Encoding.Default.GetBytes("some text to sign."), SigningAlgorithm.RSASha1);
        }
Esempio n. 6
0
        public void TestInitialize()
        {
            Message = new System.Net.Mail.MailMessage();
            Message.To.Add(new MailAddress("*****@*****.**", "Jim Bob"));
            Message.From    = new MailAddress("*****@*****.**", "Joe Bloggs");
            Message.Subject = "Test DKIM Message";
            Message.Body    = "A simple message";

            Smtp = new SmtpClient();
            Smtp.DeliveryMethod          = SmtpDeliveryMethod.SpecifiedPickupDirectory;
            Smtp.PickupDirectoryLocation = Path.GetTempPath();

            DkimSigner      = new DkimSigner(PrivateKeySigner.Create(PrivateKey), "acme.com", "dkim", GetHeaders("From,To,Subject"));
            DomainKeySigner = new DomainKeySigner(PrivateKeySigner.Create(PrivateKey), "acme.com", "dkim", GetHeaders("From,To,Subject"));
        }
Esempio n. 7
0
        private static bool SendEmailInternal(string to, string subject, string body, string replyToName, string replyToEmail)
        {
            try
            {
                if (Debugger.IsAttached || Configuration.GetSMTPUserName().IsNullOrEmpty())
                {
                    HttpContext.Current.Response.Write(subject + " " + body);
                    return(false);
                }

                var privateKey = PrivateKeySigner.Create(Configuration.GetDomainKey());

                using (var client = new SmtpClient())
                {
                    var message = new MailMessage();
                    message.To.Add(new MailAddress(to));

                    if (!replyToEmail.IsNullOrEmpty())
                    {
                        ActionExtensions.TryAction(() => message.ReplyToList.Add(new MailAddress(replyToEmail, replyToName)));
                    }

                    message.From       = new MailAddress("*****@*****.**", "rssheap");
                    message.Subject    = subject;
                    message.Body       = body;
                    message.IsBodyHtml = true;

                    var domainKeySigner = new DomainKeySigner(privateKey, "rssheap.com", "abc", new string[] { "From", "To", "Subject" });
                    message.DomainKeySign(domainKeySigner);

                    var dkimSigner = new DkimSigner(privateKey, "rssheap.com", "abc", new string[] { "From", "To", "Subject" });
                    message.DkimSign(dkimSigner);

                    client.Host = "192.99.232.179";
                    client.Port = 25;
                    client.UseDefaultCredentials = false;
                    client.Credentials           = new NetworkCredential(Configuration.GetSMTPUserName(), Configuration.GetSMTPPassword());
                    client.EnableSsl             = false;

                    client.Send(message);
                }
            }
            catch
            {
                return(false);
            }
            return(true);
        }
Esempio n. 8
0
        public static void SendEmailWithDKIP(string subject, string body)
        {
            if (Configuration.GetSMTPUserName().IsNullOrEmpty())
            {
                return;
            }

            var privateKey = PrivateKeySigner.Create(Configuration.GetDomainKey());

            var msg = new MailMessage();

            msg.To.Add(new MailAddress("*****@*****.**"));
            msg.From    = new MailAddress("*****@*****.**", "rssheap");
            msg.Subject = subject;
            msg.Body    = body;

            var domainKeySigner = new DomainKeySigner(privateKey, "rssheap.com", "abc", new string[] { "From", "To", "Subject" });

            msg.DomainKeySign(domainKeySigner);

            var dkimSigner = new DkimSigner(privateKey, "rssheap.com", "abc", new string[] { "From", "To", "Subject" });

            msg.DkimSign(dkimSigner);

            var client = new SmtpClient
            {
                Host = "192.99.232.179",
                Port = 25,
                UseDefaultCredentials = false,
                Credentials           = new NetworkCredential(Configuration.GetSMTPUserName(), Configuration.GetSMTPPassword()),
                EnableSsl             = false
            };

            try
            {
                client.Send(msg);
            }
            catch
            {
                string bp = string.Empty;
            }
        }
Esempio n. 9
0
        public void Create()
        {
            var s = PrivateKeySigner.Create(
                @"-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDcruApwJruvr9GHYMnUlkOevmczah961FxiQXu7JwHiepKGkVf
9f8DvzSiMprrqoR14f4puAi5PAG+MBxkvbAMI/kCc57E8nEN4ZGxKPRtuhiY6bsP
SpxI7LXgHqlt/yOFrJNdTjSwGpAlVfNMd3BnP2RSlHgj58ZSwYYhG15OmQIDAQAB
AoGAKOVbc0FXNOEybxrvAC15hX5ynYVbMSKXsDOVXuaIL7l2Ko9dxd+/h4E6jshT
/1JVQ8dCo5aQP0uIgydFS8H/SpiAqCEAPKUOCObcBH9O81yBSxUOcZCkv0y2Qsah
qZE0f4lYTxGYWZYC2GMZXt+cMHX528xEEg7UIHaR4U/hG/UCQQD3o8HcZcWR13rY
DcNLwZ+G1TW/OTtfz/5bd8GeGBELUs4TKBV8dQqdxkpkcmCOLwCfETcnlBvyH6OT
LxnpAWDnAkEA5CIk9r5JBRqz9tdknTyHmSok1ENsBM1uQ88b2TyEdODebe/mCZ6H
MJnp/qQEnZ+/UlkZJW/cI6QLFxqj6+NkfwJBAN34szRTJRztAPfYnk2xaMT7KAoX
yti/H0ftuGd1OxHjT0RskZXVc4aoztXqkBHin7P1QnL/l20YXw73EUqCKdECQEvf
HzQArQBJlTivAgNZMi+6WG1Pzwj52YYrxzNEcTj94HvnoTXpx0Req/fITNCvZE3a
3AYbYbdow1d3wLSe97kCQGfHreVl7MWOEk/5y0NASxaolY4+aFoXLwkGe1qIN2Vu
xsjBBm9osDHsFVIuggd4fYKj05IWA6jX4z1LiRnLvVc=
-----END RSA PRIVATE KEY-----");


            s.Sign(Encoding.Default.GetBytes("some text to sign."), SigningAlgorithm.RSASha1);
        }
Esempio n. 10
0
        public void SendSignedEmail()
        {
            var message = new MailMessage();



            message.To.Add(new MailAddress("*****@*****.**", "Port25"));



            message.From = new MailAddress(ConfigurationManager.AppSettings["from"]);

            message.Subject = @"test©";
            // message contains white space
//            message.Body = @"abc©
// ©   ©
// ©
//
//
//";

//            message.IsBodyHtml = false;


//            message.Body = @"
//line 1
//
//line 2
//
//line 3";


            message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString("text", Encoding.ASCII, "text/plain"));
            message.AlternateViews.Add(AlternateView.CreateAlternateViewFromString("html", Encoding.ASCII, "text/html"));



            var privateKey = PrivateKeySigner.Create(ConfigurationManager.AppSettings["privatekey"], SigningAlgorithm.RSASha1);

            var dkim = new DkimSigner(
                privateKey,
                ConfigurationManager.AppSettings["domain"],
                ConfigurationManager.AppSettings["selector"],
                new string[] { "From", "To", "Subject" }
                );



            var debugger = new ConsoleDebug();

            dkim.Debug                = debugger;
            dkim.Encoding             = Encoding.ASCII;
            dkim.BodyCanonicalization = DkimCanonicalizationAlgorithm.Relaxed;



            var signedMessage = dkim.SignMessage(message);


            var text = signedMessage.GetText();

            debugger.WriteLine();
            debugger.WriteContent("dkim", text);



            //    var domainkey = new DomainKeySigner(
            //privateKey,
            //ConfigurationManager.AppSettings["domain"],
            //ConfigurationManager.AppSettings["selector"],
            //new string[] { "From", "To", "Subject" }
            //);

            //signedMessage = domainkey.SignMessage(signedMessage);

            //text = signedMessage.GetText();
            //debugger.WriteContent("domainkey", text);

            new SmtpClient().Send(signedMessage);
        }