public void CtorWithInvalidAlgo() { var provider = new KeyAlgorithmProvider(); Assert.Throws <ArgumentException>(() => provider.Get((KeyAlgorithm)100)); }
public void InvalidPrivateKey() { var provider = new KeyAlgorithmProvider(); var algo = provider.Get(KeyAlgorithm.ES256); var key = algo.GenerateKey(); Assert.Throws <ArgumentException>(() => new RS256Signer(key)); }
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); }
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)); }
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); }
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); } }
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)); }
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)); }