Ejemplo n.º 1
0
        public void ShouldInteropWithEncryptedXml(KeyWrapProviderTestData data)
        {
            var crypto  = CreateCryptoProviderFactory();
            var wrapped = null as string;

            if (data.Wrap && data.Unwrap)
            {
                var provider = crypto.CreateKeyWrapProvider(data.SecurityKey, data.Algorithm);
                Assert.NotNull(provider);
                wrapped = Convert.ToBase64String(provider.WrapKey(Convert.FromBase64String(data.PlainText)));
            }
            if (data.Unwrap)
            {
                var provider = crypto.CreateKeyWrapProviderForUnwrap(data.SecurityKey, data.Algorithm);
                Assert.NotNull(provider);
                var unwrapped = Convert.ToBase64String(provider.UnwrapKey(Convert.FromBase64String(data.Wrapped)));
                Assert.Equal(data.PlainText, unwrapped);

                if (wrapped != null)
                {
                    var rsa = null as RSA;
                    if (data.SecurityKey is X509SecurityKey x509SecurityKey)
                    {
                        rsa = x509SecurityKey.Certificate.GetRSAPrivateKey();
                    }
                    if (data.SecurityKey is RsaSecurityKey rsaSecurityKey)
                    {
                        rsa = rsaSecurityKey.Rsa ?? RSA.Create(rsaSecurityKey.Parameters);
                    }
                    var unwrapped2 = Convert.ToBase64String(EncryptedXml.DecryptKey(Convert.FromBase64String(wrapped), rsa, true));
                    Assert.Equal(data.PlainText, unwrapped2);
                }
            }
        }
Ejemplo n.º 2
0
        public void ShouldGetKeyWrapProvider(KeyWrapProviderTestData data)
        {
            var crypto  = CreateCryptoProviderFactory();
            var wrapped = null as string;

            if (data.Wrap)
            {
                var provider = crypto.CreateKeyWrapProvider(data.SecurityKey, data.Algorithm);
                Assert.NotNull(provider);
                wrapped = Convert.ToBase64String(provider.WrapKey(Convert.FromBase64String(data.PlainText)));
            }
            if (data.Unwrap)
            {
                var provider = crypto.CreateKeyWrapProviderForUnwrap(data.SecurityKey, data.Algorithm);
                Assert.NotNull(provider);
                var unwrapped = Convert.ToBase64String(provider.UnwrapKey(Convert.FromBase64String(data.Wrapped)));
                Assert.Equal(data.PlainText, unwrapped);

                if (wrapped != null)
                {
                    var unwrapped2 = Convert.ToBase64String(provider.UnwrapKey(Convert.FromBase64String(wrapped)));
                    Assert.Equal(data.PlainText, unwrapped2);
                }
            }
        }