public void DecryptOperationNotSupported() { JsonWebKey jwk = new JsonWebKey(RSA.Create(), keyOps: Array.Empty <KeyOperation>()); LocalCryptographyClient client = CreateClient <LocalCryptographyClient>(jwk); Assert.ThrowsAsync <NotSupportedException>(async() => await client.DecryptAsync(new EncryptionAlgorithm("ignored"), TestData)); }
public void EncryptAlgorithmNotSupported([EnumValues(Exclude = new[] { nameof(KeyType.Rsa), nameof(KeyType.RsaHsm), nameof(KeyType.Oct), nameof(KeyType.OctHsm) })] KeyType keyType) { JsonWebKey jwk = CreateKey(keyType); LocalCryptographyClient client = CreateClient <LocalCryptographyClient>(jwk); Assert.ThrowsAsync <NotSupportedException>(async() => await client.EncryptAsync(new EncryptionAlgorithm("ignored"), TestData)); }
public void AesEncryptAlgorithmNotSupported([EnumValues(nameof(EncryptionAlgorithm.A128Gcm), nameof(EncryptionAlgorithm.A192Gcm), nameof(EncryptionAlgorithm.A256Gcm))] EncryptionAlgorithm algorithm) { JsonWebKey jwk = CreateKey(KeyType.Oct); LocalCryptographyClient client = CreateClient <LocalCryptographyClient>(jwk); Assert.ThrowsAsync <NotSupportedException>(async() => await client.EncryptAsync(algorithm, TestData)); }
public void VerifyDataStreamAlgorithmNotSupported([EnumValues(Exclude = new[] { nameof(KeyType.Rsa), nameof(KeyType.RsaHsm), nameof(KeyType.Ec), nameof(KeyType.EcHsm) })] KeyType keyType) { JsonWebKey jwk = CreateKey(keyType); LocalCryptographyClient client = CreateClient <LocalCryptographyClient>(jwk); Assert.ThrowsAsync <NotSupportedException>(async() => await client.VerifyDataAsync(new SignatureAlgorithm("ignored"), TestStream, TestData)); }
public void SignDataStreamRequiresPrivateKey([EnumValues] SignatureAlgorithm algorithm) { JsonWebKey jwk = KeyUtilities.CreateKey(algorithm, keyOps: new[] { KeyOperation.Sign, KeyOperation.Verify }); LocalCryptographyClient client = CreateClient <LocalCryptographyClient>(jwk); Assert.ThrowsAsync(new InstanceOfTypeConstraint(typeof(CryptographicException)), async() => await client.SignDataAsync(algorithm, TestStream)); }
public void SignDataStreamOperationNotSupported() { JsonWebKey jwk = new JsonWebKey(RSA.Create(), keyOps: Array.Empty <KeyOperation>()); LocalCryptographyClient client = CreateClient <LocalCryptographyClient>(jwk); Assert.ThrowsAsync <NotSupportedException>(async() => await client.SignDataAsync(new SignatureAlgorithm("ignored"), TestStream)); }
public void SignRequiresPrivateKey([EnumValues] SignatureAlgorithm algorithm) { JsonWebKey jwk = KeyUtilities.CreateKey(algorithm, keyOps: new[] { KeyOperation.Sign, KeyOperation.Verify }); LocalCryptographyClient client = CreateClient <LocalCryptographyClient>(jwk); byte[] digest = algorithm.GetHashAlgorithm().ComputeHash(TestData); Assert.ThrowsAsync(new InstanceOfTypeConstraint(typeof(CryptographicException)), async() => await client.SignAsync(algorithm, digest)); }
public async Task UnwrapKeyRequiresPrivateKey() { JsonWebKey jwk = CreateKey(KeyType.Rsa, keyOps: new[] { KeyOperation.WrapKey, KeyOperation.UnwrapKey }); LocalCryptographyClient client = CreateClient <LocalCryptographyClient>(jwk); WrapResult wrapped = await client.WrapKeyAsync(KeyWrapAlgorithm.RsaOaep, TestData); Assert.ThrowsAsync(new InstanceOfTypeConstraint(typeof(CryptographicException)), async() => await client.UnwrapKeyAsync(KeyWrapAlgorithm.RsaOaep, wrapped.EncryptedKey)); }
public async Task DecryptRequiresPrivateKey() { JsonWebKey jwk = CreateKey(KeyType.Rsa, keyOps: new[] { KeyOperation.Encrypt, KeyOperation.Decrypt }); LocalCryptographyClient client = CreateClient <LocalCryptographyClient>(jwk); EncryptResult encrypted = await client.EncryptAsync(EncryptionAlgorithm.RsaOaep, TestData); Assert.ThrowsAsync(new InstanceOfTypeConstraint(typeof(CryptographicException)), async() => await client.DecryptAsync(EncryptionAlgorithm.RsaOaep, encrypted.Ciphertext)); }
public async Task WrapKeyUnwrapKeyRoundtrip([EnumValues(Exclude = new[] { nameof(KeyWrapAlgorithm.RsaOaep256) })] KeyWrapAlgorithm algorithm) { JsonWebKey jwk = KeyUtilities.CreateKey(algorithm, includePrivateParameters: true); LocalCryptographyClient client = CreateClient <LocalCryptographyClient>(jwk); WrapResult wrapped = await client.WrapKeyAsync(algorithm, TestKey); UnwrapResult unwrapped = await client.UnwrapKeyAsync(algorithm, wrapped.EncryptedKey); CollectionAssert.AreEqual(TestKey, unwrapped.Key); }
public async Task SignDataStreamVerifyDataStreamRoundtrip([EnumValues(Exclude = new[] { nameof(SignatureAlgorithm.PS256), nameof(SignatureAlgorithm.PS384), nameof(SignatureAlgorithm.PS512) })] SignatureAlgorithm algorithm) { JsonWebKey jwk = KeyUtilities.CreateKey(algorithm, includePrivateParameters: true); LocalCryptographyClient client = CreateClient <LocalCryptographyClient>(jwk); SignResult signed = await client.SignDataAsync(algorithm, TestStream); VerifyResult verified = await client.VerifyDataAsync(algorithm, TestStream, signed.Signature); Assert.IsTrue(verified.IsValid); }
public void KeyIdFromJsonWebKey() { JsonWebKey jwk = new JsonWebKey(null) { Id = nameof(KeyIdFromJsonWebKey), KeyType = KeyType.Rsa, }; LocalCryptographyClient client = new LocalCryptographyClient(jwk); Assert.AreEqual(nameof(KeyIdFromJsonWebKey), client.KeyId); }
public async Task SignVerifyRoundtrip([EnumValues(Exclude = new[] { nameof(SignatureAlgorithm.PS256), nameof(SignatureAlgorithm.PS384), nameof(SignatureAlgorithm.PS512) })] SignatureAlgorithm algorithm) { JsonWebKey jwk = KeyUtilities.CreateKey(algorithm, includePrivateParameters: true); LocalCryptographyClient client = CreateClient <LocalCryptographyClient>(jwk); byte[] digest = algorithm.GetHashAlgorithm().ComputeHash(TestData); SignResult signed = await client.SignAsync(algorithm, digest); VerifyResult verified = await client.VerifyAsync(algorithm, digest, signed.Signature); Assert.IsTrue(verified.IsValid); }
public async Task EncryptDecryptRoundtrip([EnumValues(nameof(EncryptionAlgorithm.Rsa15), nameof(EncryptionAlgorithm.RsaOaep))] EncryptionAlgorithm algorithm) { JsonWebKey jwk = CreateKey(KeyType.Rsa, includePrivateParameters: true); LocalCryptographyClient client = CreateClient <LocalCryptographyClient>(jwk); EncryptResult encrypted = await client.EncryptAsync(algorithm, TestData); DecryptResult decrypted = await client.DecryptAsync(algorithm, encrypted.Ciphertext); string actual = Encoding.UTF8.GetString(decrypted.Plaintext); Assert.AreEqual("test", actual); }