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 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); } }
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)); }