static void GenerateCertificate(string name, int keyBitLength) { Console.WriteLine("Generating Certificate for: {0}", name); var properties = new CertificateHelper.SelfSignedCertProperties(name, keyBitLength); var cert = CertificateHelper.CreateSelfSignedCertificate(properties); var priBin = "Store\\" + name + ".pfx"; var pubCer = "Store\\" + name + ".PublicKey.cer"; var priPem = "Store\\" + name + ".PrivateKey.pem"; var priPvk = "Store\\" + name + ".PrivateKey.pvk"; string privateKeyPassword = "******"; byte[] pvkBytes; if (cert != null) { CertificateHelper.ExportPrivateKey(cert, priBin, false, privateKeyPassword); CertificateHelper.ExportPrivateKey(cert, priPem, true, privateKeyPassword); CertificateHelper.ExportPublicKey(cert, pubCer, false); pvkBytes = PrivateKeyHelper.Convert(cert.PrivateKey as RSACryptoServiceProvider, privateKeyPassword); System.IO.File.WriteAllBytes(priPvk, pvkBytes); } // Encryption test. var text = "Test"; Console.WriteLine("Encrypt: {0}", text); var encrypted = CertificateHelper.Encrypt(pubCer, "Test", null, false); Console.WriteLine("Encrypted:\r\n{0}", encrypted); // Decryption test. //var decrypted = CertificateHelper.Decrypt(priBin, encrypted, privateKeyPassword); pvkBytes = System.IO.File.ReadAllBytes(priPvk); var key = PrivateKeyHelper.Convert(pvkBytes, privateKeyPassword); var bytes = Convert.FromBase64String(encrypted); var decryptedBytes = key.Decrypt(bytes, true); var decrypted = Encoding.Unicode.GetString(decryptedBytes); Console.WriteLine("Decrypted: {0}", decrypted); }