예제 #1
0
        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();
        }
예제 #2
0
        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);
        }