private Chilkat.Crypt2 m_encoder = null; // We'll use this for encoding/decoding public Form1() { InitializeComponent(); Chilkat.Global glob = new Chilkat.Global(); if (!glob.UnlockBundle("Anything for 30-day trial")) { MessageBox.Show("Failed to unlock Chilkat."); } m_prng = new Chilkat.Prng(); m_encoder = new Chilkat.Crypt2(); }
public static void ECC_SHared_secret() { bool success; // ----------------------------------------------------------------- // (Client-Side) Generate an ECC key, save the public part to a file. // ----------------------------------------------------------------- Chilkat.Prng prngClient = new Chilkat.Prng(); Chilkat.Ecc eccClient = new Chilkat.Ecc(); Chilkat.PrivateKey privKeyClient = eccClient.GenEccKey("secp256r1", prngClient); if (eccClient.LastMethodSuccess != true) { Console.WriteLine(eccClient.LastErrorText); return; } Chilkat.PublicKey pubKeyClient = privKeyClient.GetPublicKey(); pubKeyClient.SavePemFile(false, "qa_output/eccClientPub.pem"); // ----------------------------------------------------------------- // (Server-Side) Generate an ECC key, save the public part to a file. // ----------------------------------------------------------------- Chilkat.Prng prngServer = new Chilkat.Prng(); Chilkat.Ecc eccServer = new Chilkat.Ecc(); Chilkat.PrivateKey privKeyServer = eccServer.GenEccKey("secp256r1", prngServer); if (eccServer.LastMethodSuccess != true) { Console.WriteLine(eccServer.LastErrorText); return; } Chilkat.PublicKey pubKeyServer = privKeyServer.GetPublicKey(); pubKeyServer.SavePemFile(false, "qa_output/eccServerPub.pem"); // ----------------------------------------------------------------- // (Client-Side) Generate the shared secret using our private key, and the other's public key. // ----------------------------------------------------------------- // Imagine that the server sent the public key PEM to the client. // (This is simulated by loading the server's public key from the file. Chilkat.PublicKey pubKeyFromServer = new Chilkat.PublicKey(); pubKeyFromServer.LoadFromFile("qa_output/eccServerPub.pem"); string sharedSecret1 = eccClient.SharedSecretENC(privKeyClient, pubKeyFromServer, "base64"); // ----------------------------------------------------------------- // (Server-Side) Generate the shared secret using our private key, and the other's public key. // ----------------------------------------------------------------- // Imagine that the client sent the public key PEM to the server. // (This is simulated by loading the client's public key from the file. Chilkat.PublicKey pubKeyFromClient = new Chilkat.PublicKey(); pubKeyFromClient.LoadFromFile("qa_output/eccClientPub.pem"); string sharedSecret2 = eccServer.SharedSecretENC(privKeyServer, pubKeyFromClient, "base64"); // --------------------------------------------------------- // Examine the shared secrets. They should be the same. // Both sides now have a secret that only they know. // --------------------------------------------------------- Console.WriteLine(sharedSecret1); Console.WriteLine(sharedSecret2); }