예제 #1
0
        public void GenerateKeyFromPrivateKeyTest()
        {
            var key    = X25519KeyAgreement.GenerateKeyPair();
            var newKey = X25519KeyAgreement.GenerateKeyFromPrivateKey(key.PrivateKey);

            Assert.IsTrue(key.PublicKey.SequenceEqual(newKey.PublicKey));
        }
예제 #2
0
        public void GenerateKeyFromPrivateKeyTest3()
        {
            var priv = Convert.FromBase64String("aF9hmPSeJfKvjPam++gl7MRIQydQQu2Jdee8zOTX+lY=");
            var pub  = Convert.FromBase64String("FTM52WXsEjj5hBY53RTUFmG2qUwzZxPRJdYs9lu/y3M=");
            var key  = X25519KeyAgreement.GenerateKeyFromPrivateKey(priv);

            Assert.IsTrue(key.PublicKey.SequenceEqual(pub));
        }
예제 #3
0
        public void GenerateKeyFromPrivateKeyTest2()
        {
            // predefined values
            var          key1   = X25519KeyAgreement.GenerateKeyFromPrivateKey(Convert.FromBase64String("sECe8YYQT/bODurKruM8QpGFBTahurW8GqxFL+AYiW8="));
            var          key2   = X25519KeyAgreement.GenerateKeyFromPrivateKey(Convert.FromBase64String("wAidyKs9iF+KA1cgBxa1rMtPwemOLFHqSIe5nkVRN2o="));
            const string secret = "dbfEcOMjYactMkh33DRhg0h1VCbmhxoWt6AR3rp6000=";
            // do the agreement
            string secret1 = Convert.ToBase64String(X25519KeyAgreement.Agreement(key1.PrivateKey, key2.PublicKey));
            string secret2 = Convert.ToBase64String(X25519KeyAgreement.Agreement(key2.PrivateKey, key1.PublicKey));

            if (secret1 != secret2)
            {
                Assert.Fail("Secrets does not match");
            }
            // check the final secret
            Assert.AreEqual(secret, secret1);
        }