예제 #1
0
        public void CanCreateFromDH()
        {
            using (var dh = new DH())
            {
                dh.GenerateKeys();

                using (var key = new CryptoKey(dh))
                {
                    Assert.AreEqual(CryptoKey.KeyType.DH, key.Type);
                    Assert.AreEqual(dh.Handle, key.GetDH().Handle);
                }

                using (var key = new CryptoKey())
                {
                    key.Assign(dh);
                    Assert.AreEqual(dh.Handle, key.GetDH().Handle);
                }
            }
        }
예제 #2
0
        public void CanCreateFromRSA()
        {
            using (var rsa = new RSA())
            {
                rsa.GenerateKeys(1024, BigNumber.One, null, null);
                using (var key = new CryptoKey(rsa))
                {
                    Assert.AreEqual(CryptoKey.KeyType.RSA, key.Type);
                    Assert.AreEqual(rsa.Size, key.Size);
                    Assert.AreEqual(rsa.Handle, key.GetRSA().Handle);
                }

                using (var key = new CryptoKey())
                {
                    key.Assign(rsa);
                    Assert.AreEqual(rsa.Handle, key.GetRSA().Handle);
                }
            }
        }
예제 #3
0
        public void CanCreateFromEC()
        {
            using (var ec = new Key())
            {
                using (var group = Group.FromCurveName(Objects.NID.X9_62_prime256v1))
                {
                    ec.Group = group;
                }
                ec.GenerateKey();
                using (var key = new CryptoKey(ec))
                {
                    Assert.AreEqual(CryptoKey.KeyType.EC, key.Type);
                    Assert.AreEqual(ec.Size, key.Size);
                    Assert.AreEqual(ec.Handle, key.GetEC().Handle);
                }

                using (var key = new CryptoKey())
                {
                    key.Assign(ec);
                    Assert.AreEqual(ec.Handle, key.GetEC().Handle);
                }
            }
        }
예제 #4
0
        public void CanCreateFromDSA()
        {
            using (var dsa = new DSA(true))
            {
                using (var key = new CryptoKey(dsa))
                {
                    Assert.AreEqual(CryptoKey.KeyType.DSA, key.Type);
                    Assert.AreEqual(dsa.Size, key.Size);
                    Assert.AreEqual(dsa.Handle, key.GetDSA().Handle);
                }

                using (var key = new CryptoKey())
                {
                    key.Assign(dsa);
                    Assert.AreEqual(dsa.Handle, key.GetDSA().Handle);
                }
            }

            using (var key = new CryptoKey(new DSA(false)))
            {
                Assert.AreEqual(CryptoKey.KeyType.DSA, key.Type);
            }
        }