Example #1
0
        public void SymmetricCryptoProviderWithDisabledPolicyIsRemoved()
        {
            MockConfigurationElementManageabilityProvider registeredProvider
                = new MockConfigurationElementManageabilityProvider();
            Dictionary <Type, ConfigurationElementManageabilityProvider> subProviders
                = new Dictionary <Type, ConfigurationElementManageabilityProvider>();

            subProviders.Add(typeof(SymmetricAlgorithmProviderData), registeredProvider);
            provider = new ConfigurationSectionManageabilityProviderWrapper(
                new CryptographySettingsManageabilityProvider(subProviders));

            SymmetricAlgorithmProviderData symmetricCryptoProvider1Data
                = new SymmetricAlgorithmProviderData("symmetricCryptoProvider1", typeof(Object), "key", DataProtectionScope.CurrentUser);

            section.SymmetricCryptoProviders.Add(symmetricCryptoProvider1Data);
            SymmetricAlgorithmProviderData symmetricCryptoProvider2Data
                = new SymmetricAlgorithmProviderData("symmetricCryptoProvider2", typeof(Object), "key", DataProtectionScope.CurrentUser);

            section.SymmetricCryptoProviders.Add(symmetricCryptoProvider2Data);

            MockRegistryKey machineSymmetricCryptoProvidersKey = new MockRegistryKey(false);

            machineKey.AddSubKey(CryptographySettingsManageabilityProvider.SymmetricCryptoProvidersKeyName, machineSymmetricCryptoProvidersKey);
            MockRegistryKey machineSymmetricCryptoProvider2Key = new MockRegistryKey(false);

            machineSymmetricCryptoProvidersKey.AddSubKey("symmetricCryptoProvider2", machineSymmetricCryptoProvider2Key);
            machineSymmetricCryptoProvider2Key.AddBooleanValue(CryptographySettingsManageabilityProvider.PolicyValueName, false);

            provider.InvokeOverrideWithGroupPoliciesAndGenerateWmiObjects(section, true, machineKey, userKey, true, wmiSettings);

            Assert.AreEqual(1, section.SymmetricCryptoProviders.Count);
            Assert.IsNotNull(section.SymmetricCryptoProviders.Get("symmetricCryptoProvider1"));

            Assert.IsTrue(MockRegistryKey.CheckAllClosed(machineSymmetricCryptoProvidersKey, machineSymmetricCryptoProvider2Key));
        }
 public void SetUp()
 {
     provider = new SymmetricAlgorithmProviderDataManageabilityProvider();
     machineKey = new MockRegistryKey(true);
     userKey = new MockRegistryKey(true);
     configurationObject = new SymmetricAlgorithmProviderData();
 }
Example #3
0
 public ProtectedKeySettingsProperty(IServiceProvider serviceProvider, SymmetricAlgorithmProviderData configuration)
     : base(serviceProvider, "Key",
            new EditorAttribute(typeof(KeyManagerEditor), typeof(UITypeEditor)),
            new EditorWithReadOnlyTextAttribute(true))
 {
     this.configuration = configuration;
 }
Example #4
0
 public void SetUp()
 {
     provider            = new SymmetricAlgorithmProviderDataManageabilityProvider();
     machineKey          = new MockRegistryKey(true);
     userKey             = new MockRegistryKey(true);
     configurationObject = new SymmetricAlgorithmProviderData();
 }
Example #5
0
 public void SetUp()
 {
     provider            = new ConfigurationElementManageabilityProviderWrapper(new SymmetricAlgorithmProviderDataManageabilityProvider());
     machineKey          = new MockRegistryKey(true);
     userKey             = new MockRegistryKey(true);
     wmiSettings         = new List <ConfigurationSetting>();
     configurationObject = new SymmetricAlgorithmProviderData();
 }
Example #6
0
 public EncryptUsingSymmetricProviderNamedBuilder(IConfigureCryptography context, string algorithmProviderName)
     : base(context)
 {
     providerData = new SymmetricAlgorithmProviderData
     {
         Name = algorithmProviderName,
         Type = typeof(SymmetricAlgorithmProvider)
     };
     base.CryptographySettings.SymmetricCryptoProviders.Add(providerData);
 }
        public void Properties()
        {
            string algorithmType = "e59y8ue";
            byte[] key = new byte[] {1, 2, 3, 4};

            SymmetricAlgorithmProviderData data = new SymmetricAlgorithmProviderData();
            data.AlgorithmType = algorithmType;
            data.Key = key;

            Assert.AreEqual(key, data.Key);
            Assert.AreEqual(algorithmType, data.AlgorithmType, "algorithm");
        }
        public void Properties()
        {
            string algorithmType = "e59y8ue";

            byte[] key = new byte[] { 1, 2, 3, 4 };

            SymmetricAlgorithmProviderData data = new SymmetricAlgorithmProviderData();

            data.AlgorithmType = algorithmType;
            data.Key           = key;

            Assert.AreEqual(key, data.Key);
            Assert.AreEqual(algorithmType, data.AlgorithmType, "algorithm");
        }
Example #9
0
        /// <summary>
        /// Decrypts a secret using the configured <c>SymmetricAlgorithm</c>.
        /// <seealso cref="ISymmetricCryptoProvider.Decrypt"/>
        /// </summary>
        /// <param name="ciphertext"><para>The cipher text for which you want to decrypt.</para></param>
        /// <returns><para>The resulting plain text.</para></returns>
        /// <seealso cref="ISymmetricCryptoProvider.Decrypt"/>
        public byte[] Decrypt(byte[] ciphertext)
        {
            ArgumentValidation.CheckForNullReference(ciphertext, "encryptedText");
            ArgumentValidation.CheckForZeroBytes(ciphertext, "encryptedText");

            byte[] output = null;

            SymmetricAlgorithmProviderData data = GetSymmetricAlgorithmProviderDataFromCursor();

            SymmetricCryptographer crypto = new SymmetricCryptographer(data.AlgorithmType, data.Key);

            output = crypto.Decrypt(ciphertext);
            SecurityCryptoSymmetricDecryptionEvent.Fire(string.Empty);
            return(output);
        }
Example #10
0
        public void RegisteredSymmetricCryptoProviderDataProviderIsCalledWithCorrectOverrides()
        {
            MockConfigurationElementManageabilityProvider registeredProvider
                = new MockConfigurationElementManageabilityProvider();
            Dictionary <Type, ConfigurationElementManageabilityProvider> subProviders
                = new Dictionary <Type, ConfigurationElementManageabilityProvider>();

            subProviders.Add(typeof(SymmetricAlgorithmProviderData), registeredProvider);
            provider = new ConfigurationSectionManageabilityProviderWrapper(
                new CryptographySettingsManageabilityProvider(subProviders));

            SymmetricAlgorithmProviderData symmetricCryptoProviderData = new SymmetricAlgorithmProviderData("symmetricCryptoProvider1", typeof(Object), "key", DataProtectionScope.CurrentUser);

            section.SymmetricCryptoProviders.Add(symmetricCryptoProviderData);

            MockRegistryKey machinesymmetricCryptoProvidersKey = new MockRegistryKey(false);

            machineKey.AddSubKey(CryptographySettingsManageabilityProvider.SymmetricCryptoProvidersKeyName, machinesymmetricCryptoProvidersKey);
            MockRegistryKey machinesymmetricCryptoProviderKey = new MockRegistryKey(false);

            machinesymmetricCryptoProvidersKey.AddSubKey("symmetricCryptoProvider1", machinesymmetricCryptoProviderKey);
            MockRegistryKey machineOthersymmetricCryptoProviderKey = new MockRegistryKey(false);

            machinesymmetricCryptoProvidersKey.AddSubKey("symmetricCryptoProvider2", machineOthersymmetricCryptoProviderKey);

            MockRegistryKey usersymmetricCryptoProvidersKey = new MockRegistryKey(false);

            userKey.AddSubKey(CryptographySettingsManageabilityProvider.SymmetricCryptoProvidersKeyName, usersymmetricCryptoProvidersKey);
            MockRegistryKey usersymmetricCryptoProviderKey = new MockRegistryKey(false);

            usersymmetricCryptoProvidersKey.AddSubKey("symmetricCryptoProvider1", usersymmetricCryptoProviderKey);
            MockRegistryKey userOthersymmetricCryptoProviderKey = new MockRegistryKey(false);

            usersymmetricCryptoProvidersKey.AddSubKey("symmetricCryptoProvider2", userOthersymmetricCryptoProviderKey);

            provider.InvokeOverrideWithGroupPoliciesAndGenerateWmiObjects(section, true, machineKey, userKey, true, wmiSettings);

            Assert.IsTrue(registeredProvider.called);
            Assert.AreSame(symmetricCryptoProviderData, registeredProvider.LastConfigurationObject);
            Assert.AreSame(machinesymmetricCryptoProviderKey, registeredProvider.machineKey);
            Assert.AreSame(usersymmetricCryptoProviderKey, registeredProvider.userKey);

            Assert.IsTrue(
                MockRegistryKey.CheckAllClosed(machinesymmetricCryptoProvidersKey, machinesymmetricCryptoProviderKey, machineOthersymmetricCryptoProviderKey,
                                               usersymmetricCryptoProvidersKey, usersymmetricCryptoProviderKey, userOthersymmetricCryptoProviderKey));
        }
        public void SymmetricAlgorithmProviderDataTest()
        {
            Type algorithmType = typeof(RijndaelManaged);
            string protectedKeyFilename = "some filename";
            DataProtectionScope protectedKeyProtectionScope = DataProtectionScope.LocalMachine;
            string name = "some name";

            SymmetricAlgorithmProviderData data = new SymmetricAlgorithmProviderData();
            data.Name = name;
            data.AlgorithmType = algorithmType;
            data.ProtectedKeyFilename = protectedKeyFilename;
            data.ProtectedKeyProtectionScope = protectedKeyProtectionScope;

            SymmetricAlgorithmProviderNode node = new SymmetricAlgorithmProviderNode(data);
            Assert.AreEqual(name, node.Name);
            Assert.AreEqual(algorithmType, node.AlgorithmType);
            Assert.AreEqual(protectedKeyProtectionScope, node.Key.Scope);
            Assert.AreEqual(protectedKeyFilename, node.Key.Filename);
        }
        public void RegisteredSymmetricCryptoProviderDataProviderIsCalledWithNoOverrides()
        {
            MockConfigurationElementManageabilityProvider registeredProvider
                = new MockConfigurationElementManageabilityProvider();
            Dictionary <Type, ConfigurationElementManageabilityProvider> subProviders
                = new Dictionary <Type, ConfigurationElementManageabilityProvider>();

            subProviders.Add(typeof(SymmetricAlgorithmProviderData), registeredProvider);
            provider = new CryptographySettingsManageabilityProvider(subProviders);

            SymmetricAlgorithmProviderData symmetricCryptoProviderData = new SymmetricAlgorithmProviderData("symmetricCryptoProvider1", typeof(Object), "key", DataProtectionScope.CurrentUser);

            section.SymmetricCryptoProviders.Add(symmetricCryptoProviderData);

            provider.OverrideWithGroupPolicies(section, true, machineKey, userKey);

            Assert.IsTrue(registeredProvider.called);
            Assert.AreSame(symmetricCryptoProviderData, registeredProvider.LastConfigurationObject);
            Assert.AreEqual(null, registeredProvider.machineKey);
            Assert.AreEqual(null, registeredProvider.userKey);
        }
Example #13
0
        public void SymmetricAlgorithmProviderDataTest()
        {
            Type   algorithmType        = typeof(RijndaelManaged);
            string protectedKeyFilename = "some filename";
            DataProtectionScope protectedKeyProtectionScope = DataProtectionScope.LocalMachine;
            string name = "some name";

            SymmetricAlgorithmProviderData data = new SymmetricAlgorithmProviderData();

            data.Name                        = name;
            data.AlgorithmType               = algorithmType;
            data.ProtectedKeyFilename        = protectedKeyFilename;
            data.ProtectedKeyProtectionScope = protectedKeyProtectionScope;

            SymmetricAlgorithmProviderNode node = new SymmetricAlgorithmProviderNode(data);

            Assert.AreEqual(name, node.Name);
            Assert.AreEqual(algorithmType, node.AlgorithmType);
            Assert.AreEqual(protectedKeyProtectionScope, node.Key.Scope);
            Assert.AreEqual(protectedKeyFilename, node.Key.Filename);
        }
Example #14
0
        public void SymmetricAlgorithmProviderNodeTest()
        {
            Type algorithmType = typeof(RijndaelManaged);
            ProtectedKeySettings keySettings = new ProtectedKeySettings("some filename", DataProtectionScope.CurrentUser);
            string name = "some name";

            SymmetricAlgorithmProviderNode node = new SymmetricAlgorithmProviderNode();

            node.Name          = name;
            node.AlgorithmType = algorithmType;
            node.Key           = keySettings;

            Assert.AreEqual(name, node.Name);
            Assert.AreEqual(algorithmType, node.AlgorithmType);
            Assert.AreEqual(keySettings.Filename, node.Key.Filename);
            Assert.AreEqual(keySettings.Scope, node.Key.Scope);

            SymmetricAlgorithmProviderData data = (SymmetricAlgorithmProviderData)node.SymmetricCryptoProviderData;

            Assert.AreEqual(name, data.Name);
            Assert.AreEqual(algorithmType, data.AlgorithmType);
            Assert.AreEqual(keySettings.Filename, data.ProtectedKeyFilename);
            Assert.AreEqual(keySettings.Scope, data.ProtectedKeyProtectionScope);
        }
        public void RegisteredSymmetricCryptoProviderDataProviderIsCalledWithNoOverrides()
        {
            MockConfigurationElementManageabilityProvider registeredProvider
                = new MockConfigurationElementManageabilityProvider();
            Dictionary<Type, ConfigurationElementManageabilityProvider> subProviders
                = new Dictionary<Type, ConfigurationElementManageabilityProvider>();
            subProviders.Add(typeof(SymmetricAlgorithmProviderData), registeredProvider);
            provider = new CryptographySettingsManageabilityProvider(subProviders);

            SymmetricAlgorithmProviderData symmetricCryptoProviderData = new SymmetricAlgorithmProviderData("symmetricCryptoProvider1", typeof(Object), "key", DataProtectionScope.CurrentUser);
            section.SymmetricCryptoProviders.Add(symmetricCryptoProviderData);

            provider.OverrideWithGroupPolicies(section, true, machineKey, userKey);

            Assert.IsTrue(registeredProvider.called);
            Assert.AreSame(symmetricCryptoProviderData, registeredProvider.LastConfigurationObject);
            Assert.AreEqual(null, registeredProvider.machineKey);
            Assert.AreEqual(null, registeredProvider.userKey);
        }
Example #16
0
 /// <summary>
 /// Constructs a new instance
 /// with the corresponding runtime configuration data.
 /// </summary>
 /// <param name="symmetricAlgorithmProviderData">The corresponding runtime configuration data.</param>
 public SymmetricAlgorithmProviderNode(SymmetricAlgorithmProviderData symmetricAlgorithmProviderData) : base(symmetricAlgorithmProviderData)
 {
     key           = new ProtectedKeySettings(symmetricAlgorithmProviderData.ProtectedKeyFilename, symmetricAlgorithmProviderData.ProtectedKeyProtectionScope);
     algorithmType = symmetricAlgorithmProviderData.AlgorithmType;
 }
 /// <summary>
 /// Constructs a new instance 
 /// with the corresponding runtime configuration data.
 /// </summary>
 /// <param name="symmetricAlgorithmProviderData">The corresponding runtime configuration data.</param>
 public SymmetricAlgorithmProviderNode(SymmetricAlgorithmProviderData symmetricAlgorithmProviderData)
     : base(symmetricAlgorithmProviderData)
 {
     key = new ProtectedKeySettings(symmetricAlgorithmProviderData.ProtectedKeyFilename, symmetricAlgorithmProviderData.ProtectedKeyProtectionScope);
     algorithmType = symmetricAlgorithmProviderData.AlgorithmType;
 }
        public void SymmetricCryptoProviderWithDisabledPolicyIsNotRemovedIfGroupPoliciesAreDisabled()
        {
            MockConfigurationElementManageabilityProvider registeredProvider
                = new MockConfigurationElementManageabilityProvider();
            Dictionary<Type, ConfigurationElementManageabilityProvider> subProviders
                = new Dictionary<Type, ConfigurationElementManageabilityProvider>();
            subProviders.Add(typeof(SymmetricAlgorithmProviderData), registeredProvider);
            provider = new CryptographySettingsManageabilityProvider(subProviders);

            SymmetricAlgorithmProviderData symmetricCryptoProvider1Data
                = new SymmetricAlgorithmProviderData("symmetricCryptoProvider1", typeof(Object), "key", DataProtectionScope.CurrentUser);
            section.SymmetricCryptoProviders.Add(symmetricCryptoProvider1Data);
            SymmetricAlgorithmProviderData symmetricCryptoProvider2Data
                = new SymmetricAlgorithmProviderData("symmetricCryptoProvider2", typeof(Object), "key", DataProtectionScope.CurrentUser);
            section.SymmetricCryptoProviders.Add(symmetricCryptoProvider2Data);

            MockRegistryKey machineSymmetricCryptoProvidersKey = new MockRegistryKey(false);
            machineKey.AddSubKey(CryptographySettingsManageabilityProvider.SymmetricCryptoProvidersKeyName, machineSymmetricCryptoProvidersKey);
            MockRegistryKey machineSymmetricCryptoProvider2Key = new MockRegistryKey(false);
            machineSymmetricCryptoProvidersKey.AddSubKey("symmetricCryptoProvider2", machineSymmetricCryptoProvider2Key);
            machineSymmetricCryptoProvider2Key.AddBooleanValue(CryptographySettingsManageabilityProvider.PolicyValueName, false);

            provider.OverrideWithGroupPolicies(section, false, machineKey, userKey);

            Assert.AreEqual(2, section.SymmetricCryptoProviders.Count);
            Assert.IsNotNull(section.SymmetricCryptoProviders.Get("symmetricCryptoProvider1"));
            Assert.IsNotNull(section.SymmetricCryptoProviders.Get("symmetricCryptoProvider2"));

            Assert.IsTrue(MockRegistryKey.CheckAllClosed(machineSymmetricCryptoProvidersKey, machineSymmetricCryptoProvider2Key));
        }
 /// <summary>
 /// Constructs a new instance 
 /// with the corresponding runtime configuration data.
 /// </summary>
 /// <param name="symmetricAlgorithmProviderData">The corresponding runtime configuration data.</param>
 public SymmetricAlgorithmProviderNode(SymmetricAlgorithmProviderData symmetricAlgorithmProviderData)
     : base(symmetricAlgorithmProviderData)
 {
     this.symmetricAlgorithmProviderData = symmetricAlgorithmProviderData;
 }
        public void RegisteredSymmetricCryptoProviderDataProviderIsCalledWithCorrectOverrides()
        {
            MockConfigurationElementManageabilityProvider registeredProvider
                = new MockConfigurationElementManageabilityProvider();
            Dictionary<Type, ConfigurationElementManageabilityProvider> subProviders
                = new Dictionary<Type, ConfigurationElementManageabilityProvider>();
            subProviders.Add(typeof(SymmetricAlgorithmProviderData), registeredProvider);
            provider = new CryptographySettingsManageabilityProvider(subProviders);

            SymmetricAlgorithmProviderData symmetricCryptoProviderData = new SymmetricAlgorithmProviderData("symmetricCryptoProvider1", typeof(Object), "key", DataProtectionScope.CurrentUser);
            section.SymmetricCryptoProviders.Add(symmetricCryptoProviderData);

            MockRegistryKey machinesymmetricCryptoProvidersKey = new MockRegistryKey(false);
            machineKey.AddSubKey(CryptographySettingsManageabilityProvider.SymmetricCryptoProvidersKeyName, machinesymmetricCryptoProvidersKey);
            MockRegistryKey machinesymmetricCryptoProviderKey = new MockRegistryKey(false);
            machinesymmetricCryptoProvidersKey.AddSubKey("symmetricCryptoProvider1", machinesymmetricCryptoProviderKey);
            MockRegistryKey machineOthersymmetricCryptoProviderKey = new MockRegistryKey(false);
            machinesymmetricCryptoProvidersKey.AddSubKey("symmetricCryptoProvider2", machineOthersymmetricCryptoProviderKey);

            MockRegistryKey usersymmetricCryptoProvidersKey = new MockRegistryKey(false);
            userKey.AddSubKey(CryptographySettingsManageabilityProvider.SymmetricCryptoProvidersKeyName, usersymmetricCryptoProvidersKey);
            MockRegistryKey usersymmetricCryptoProviderKey = new MockRegistryKey(false);
            usersymmetricCryptoProvidersKey.AddSubKey("symmetricCryptoProvider1", usersymmetricCryptoProviderKey);
            MockRegistryKey userOthersymmetricCryptoProviderKey = new MockRegistryKey(false);
            usersymmetricCryptoProvidersKey.AddSubKey("symmetricCryptoProvider2", userOthersymmetricCryptoProviderKey);

            provider.OverrideWithGroupPolicies(section, true, machineKey, userKey);

            Assert.IsTrue(registeredProvider.called);
            Assert.AreSame(symmetricCryptoProviderData, registeredProvider.LastConfigurationObject);
            Assert.AreSame(machinesymmetricCryptoProviderKey, registeredProvider.machineKey);
            Assert.AreSame(usersymmetricCryptoProviderKey, registeredProvider.userKey);

            Assert.IsTrue(
                MockRegistryKey.CheckAllClosed(machinesymmetricCryptoProvidersKey, machinesymmetricCryptoProviderKey, machineOthersymmetricCryptoProviderKey,
                                               usersymmetricCryptoProvidersKey, usersymmetricCryptoProviderKey, userOthersymmetricCryptoProviderKey));
        }
Example #21
0
 /// <summary>
 /// Constructs a new instance
 /// with the corresponding runtime configuration data.
 /// </summary>
 /// <param name="symmetricAlgorithmProviderData">The corresponding runtime configuration data.</param>
 public SymmetricAlgorithmProviderNode(SymmetricAlgorithmProviderData symmetricAlgorithmProviderData) : base(symmetricAlgorithmProviderData)
 {
     this.symmetricAlgorithmProviderData = symmetricAlgorithmProviderData;
 }