コード例 #1
0
        public void CtorWithInvalidAlgo()
        {
            var provider = new KeyAlgorithmProvider();

            Assert.Throws <ArgumentException>(() =>
                                              provider.Get((KeyAlgorithm)100));
        }
コード例 #2
0
        public void InvalidPrivateKey()
        {
            var provider = new KeyAlgorithmProvider();
            var algo     = provider.Get(KeyAlgorithm.ES256);
            var key      = algo.GenerateKey();

            Assert.Throws <ArgumentException>(() => new RS256Signer(key));
        }
コード例 #3
0
        private void CanCreateEllipticCurveAlgo(KeyAlgorithm algorithm)
        {
            var provider = new KeyAlgorithmProvider();
            var algo     = provider.Get(algorithm) as EllipticCurveAlgorithm;

            Assert.NotNull(algo);

            var key = algo.GenerateKey();

            Assert.NotNull(key);

            Assert.NotNull(key.JsonWebKey);
        }
コード例 #4
0
        public void InvalidCurve()
        {
            var provider        = new KeyAlgorithmProvider();
            var generator       = GeneratorUtilities.GetKeyPairGenerator("ECDSA");
            var generatorParams = new ECKeyGenerationParameters(
                CustomNamedCurves.GetOid("secp160r1"), new SecureRandom());

            generator.Init(generatorParams);
            var keyPair = generator.GenerateKeyPair();

            var der = PrivateKeyInfoFactory.CreatePrivateKeyInfo((keyPair.Private)).GetDerEncoded();

            Assert.Throws <NotSupportedException>(() => provider.GetKey(der));
        }
コード例 #5
0
        public void CanGetKey(KeyAlgorithm algorithm)
        {
            var provider = new KeyAlgorithmProvider();
            var algo     = provider.Get(algorithm);
            var key      = (AsymmetricCipherKey)algo.GenerateKey();

            var keyData = key.ToDer();

            var restored = provider.GetKey(keyData);

            var restoredData = restored.ToDer();

            Assert.Equal(keyData, restoredData);
        }
コード例 #6
0
        public void CanComputeHash(KeyAlgorithm algoType)
        {
            var provider = new KeyAlgorithmProvider();
            var algo     = provider.Get(algoType);
            var signer   = algo.CreateSigner(algo.GenerateKey());

            var data = Encoding.UTF8.GetBytes("secret message");
            var hash = signer.ComputeHash(data);

            using (var sha = SHA256.Create())
            {
                Assert.Equal(sha.ComputeHash(data), hash);
            }
        }
コード例 #7
0
        public void InvalidKeyData()
        {
            var provider = new KeyAlgorithmProvider();
            var dsaSpec  = new DsaParameters(
                new BigInteger("7434410770759874867539421675728577177024889699586189000788950934679315164676852047058354758883833299702695428196962057871264685291775577130504050839126673"),
                new BigInteger("1138656671590261728308283492178581223478058193247"),
                new BigInteger("4182906737723181805517018315469082619513954319976782448649747742951189003482834321192692620856488639629011570381138542789803819092529658402611668375788410"));
            var dsaKpg = GeneratorUtilities.GetKeyPairGenerator("DSA");

            dsaKpg.Init(new DsaKeyGenerationParameters(new SecureRandom(), dsaSpec));
            var keyPair = dsaKpg.GenerateKeyPair();

            var der = PrivateKeyInfoFactory.CreatePrivateKeyInfo((keyPair.Private)).GetDerEncoded();

            Assert.Throws <NotSupportedException>(() => provider.GetKey(der));
        }
コード例 #8
0
        private void CanExportKey(KeyAlgorithm signatureAlgorithm)
        {
            var provider = new KeyAlgorithmProvider();
            var algo     = provider.Get(signatureAlgorithm);
            var key      = algo.GenerateKey();

            Assert.NotNull(key);

            var der      = key.ToDer();
            var exported = provider.GetKey(der);

            Assert.Equal(
                JsonConvert.SerializeObject(key.JsonWebKey),
                JsonConvert.SerializeObject(exported.JsonWebKey));

            var pem = key.ToPem();

            exported = provider.GetKey(pem);

            Assert.Equal(
                JsonConvert.SerializeObject(key.JsonWebKey),
                JsonConvert.SerializeObject(exported.JsonWebKey));
        }