コード例 #1
0
        public void OnAttachPublicKeyButton(Office.IRibbonControl control)
        {
            var mailItem = ((Outlook.Inspector)control.Context).CurrentItem as Outlook.MailItem;

            if (mailItem == null)
            {
                // TODO - Generate a log message
                MessageBox.Show("Error, mailItem was null.");
                return;
            }

            var smtp = Globals.OutlookPrivacyPlugin.GetSMTPAddress(mailItem);

            var crypto = new PgpCrypto(new CryptoContext());

            var headers = new Dictionary <string, string>();

            headers["Version"] = "Outlook Privacy Plugin";

            var publicKey = crypto.PublicKey(smtp, headers);

            if (publicKey == null)
            {
                // TODO - Generate log message
                MessageBox.Show("Error, unable to find public KeyItem to attach.");
                return;
            }

            var attachName = smtp.Replace("@", "_at_") + ".asc";

            attachName = Regex.Replace(attachName, @"[:\\/=+!@#$%^&*(){}[\]|<>,'"";~`]", "_");

            var tempFile = Path.Combine(Path.GetTempPath(), attachName);

            File.WriteAllText(tempFile, publicKey);

            try
            {
                mailItem.Attachments.Add(
                    tempFile,
                    Outlook.OlAttachmentType.olByValue,
                    1,
                    attachName);

                mailItem.Save();
            }
            finally
            {
                File.Delete(tempFile);
            }
        }
コード例 #2
0
        public void ExportPublicKey()
        {
            var expectedOutput = @"-----BEGIN PGP PUBLIC KEY BLOCK-----

mQENBFY1R3kBCADPO0yyqcHmBt7tXs28sjiXW+xnSoqgD7x63f5ePUsJ2emDff/Z
FwvmW+EAlgQ17AYBetz8uuFHgo41uNfOEVDphzBVOuZ9r/wtNOzhaT2fXyo4HTA0
6K5/c5/WcyXg/AnvM2SHQ1WfqV4MZ3l/umrKawFLZVuRKmQQmcuMvPJTq5lI6nDz
L98b62DUXb/3pZCVFuJNjdoxAy2KsTKl5g0rxDM/I6V7t4t4udWZ08Gk0iuOSRON
aG91C/H63KIOEwHtxpjQmS7QCb6H9BUKsO0JwvQYvfUYFQxPjL1GU7Wpg9xY6mT3
qJJLQ4XTlwcUENbeOzgnyqUnlGNibxmB1JFrABEBAAG0F1JzYSBKaWxsIDxyc2FA
amlsbC5jb20+iQE4BBMBAgAiBQJWNUd5AhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIe
AQIXgAAKCRD7Oy0tkscDmvBACACFsrLKVJ1bOMMNGmXWwyy6ftnlpNIUI1D02tKN
ZD4sR1sRHQT79TBaYG39DeJjZpXPNBpKqFV6Ux6R9xPnr0oyschxSFj855Cu08Ls
7MHIzM+CGGsF//mxPzJoNQWLsYWeoDnwHSqAMj4ApdTENZQoOZK2jBM68V/fwQKB
c9FhE5I26Sc2/fkH+CqCfkqh1MIzbz2Me6QPEVDVmYwwHkKmKfB6HTL1o/+iNeFb
9/813HhvpUK+iYKsIW3A17bANr3ex4j4gFS6nnGSd4zm5RvHxcp0iZW08SiaEgrF
dUXA3GVNMgjJbxdp9t1NulolXPcDiO5yfjIgouj3oVdM+lF8sAIAA7kBDQRWNUd5
AQgAzDaJVBd1Yh3GchXpVmYPQOFK7HHX7D1/Yn+YvfkbO4EKEzVZ1iIoekCzXeZl
Q5hO0cpyhblXaJJAUGNJmKLL5z/OkcfG7FUsZgnhdkXNVejVXWJZv+HoHKDHXdjJ
i3c4no2cqzzeLBut3fsqThargLLqrWyadvGQRkxOtTsQVHLrgnID33Jdh9hsYMvB
3/mHUT4g+ZU98ekA5vTKZii/dcy2160GKOMP1PmvcKrOm0m399OZgyh0sTeQylZu
MPrVFU6KxA+g5708OpLrpasFkWDnzwfCAl6l+GdU29QfW1rfLOPj81Ip39ppanhQ
xkjmgqgpARK96cnfZ126HWx1GwARAQABiQEfBBgBAgAJBQJWNUd5AhsMAAoJEPs7
LS2SxwOav9MIAJyfqlXPTrxtnXvB85/qXyhB6KWkhOT9TPR3H9UHzSDyZVus0aza
W/Qe59QqpSjLPBvKJs+FhhLPHjS4qPjExHIo/jSWZ5nKW15UPdQdhj+JGRKXLZRd
7ENvjw9Md922G+M/z9V0mqSZlwDwnMLy5/dQmduZdysIXeqvPQk3ZDQbH2kyPxHF
oa3UhjC8/UZYVfD0EmO6b9wtWDCfgr0z47TMr7myn1NMwWSn13ZXYvwXdlpSx1Ps
l1ISDLDE94wcCDzbnPvXXCFJ26ATYlX8PPI6jmp9VHU/FdQtfVd9+3TprboR9JVl
qVpBT5OoBs9xe9FVirifzbAZ4JCrWcAJ1eKwAgAD
=uWzT
-----END PGP PUBLIC KEY BLOCK-----
";

            var context = new CryptoContext(
                GetPasswordCallback,
                @"C:\projects\OutlookPrivacyPlugin\Deja.Crypto.Test\pubring.gpg",
                @"C:\projects\OutlookPrivacyPlugin\Deja.Crypto.Test\secring.gpg",
                "rsa", "sha-1");
            var crypto = new PgpCrypto(context);

            var key = crypto.PublicKey("*****@*****.**", new Dictionary <string, string>());

            Assert.AreEqual(expectedOutput, key);
        }