Example #1
0
    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);
    }