Пример #1
0
        public void ManageabilityProviderGeneratesProperAdmContent()
        {
            DictionaryConfigurationSource configurationSource  = new DictionaryConfigurationSource();
            CryptographySettings          cryptographySettings = new CryptographySettings();

            configurationSource.Add("securityCryptographyConfiguration", cryptographySettings);

            MockAdmContentBuilder contentBuilder = new MockAdmContentBuilder();

            contentBuilder.StartCategory("category");
            contentBuilder.StartPolicy("policy", "policy key");
            provider.InvokeAddAdministrativeTemplateDirectives(contentBuilder, configurationObject, configurationSource, "TestApp");
            contentBuilder.EndPolicy();
            contentBuilder.EndCategory();

            MockAdmContent            content = contentBuilder.GetMockContent();
            IEnumerator <AdmCategory> categoriesEnumerator = content.Categories.GetEnumerator();

            categoriesEnumerator.MoveNext();
            IEnumerator <AdmPolicy> policiesEnumerator = categoriesEnumerator.Current.Policies.GetEnumerator();

            policiesEnumerator.MoveNext();
            IEnumerator <AdmPart> partsEnumerator = policiesEnumerator.Current.Parts.GetEnumerator();

            Assert.IsTrue(partsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmDropDownListPart), partsEnumerator.Current.GetType());
            Assert.IsNotNull(partsEnumerator.Current.KeyName);
            Assert.AreEqual(SymmetricStorageEncryptionProviderDataManageabilityProvider.SymmetricInstancePropertyName,
                            partsEnumerator.Current.ValueName);
            Assert.AreEqual(Resources.SymmetricStorageEncryptionProviderSymmetricInstancePartName,
                            partsEnumerator.Current.PartName);

            Assert.IsFalse(partsEnumerator.MoveNext());
        }
        /// <summary>
        /// <para>Saves the configuration settings created for the application.</para>
        /// </summary>
        /// <param name="serviceProvider">
        /// <para>The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.</para>
        /// </param>
        public void Save(IServiceProvider serviceProvider)
        {
            ConfigurationContext configurationContext = ServiceHelper.GetCurrentConfigurationContext(serviceProvider);

            if (configurationContext.IsValidSection(CryptographySettings.SectionName))
            {
                CryptographySettingsNode securitySettingsNode = null;
                try
                {
                    IUIHierarchy hierarchy = ServiceHelper.GetCurrentHierarchy(serviceProvider);
                    securitySettingsNode = hierarchy.FindNodeByType(typeof(CryptographySettingsNode)) as CryptographySettingsNode;
                    if (securitySettingsNode == null)
                    {
                        return;
                    }
                    CryptographySettings securitySettings = securitySettingsNode.CryptographySettings;
                    configurationContext.WriteConfiguration(CryptographySettings.SectionName, securitySettings);
                }
                catch (ConfigurationException e)
                {
                    ServiceHelper.LogError(serviceProvider, securitySettingsNode, e);
                }
                catch (InvalidOperationException e)
                {
                    ServiceHelper.LogError(serviceProvider, securitySettingsNode, e);
                }
            }
        }
 public void Given()
 {
     cryptographySettings   = new CryptographySettings();
     customHashProviderData = new CustomHashProviderData("custom", typeof(MockCustomHashProvider));
     customHashProviderData.Attributes["foo"] = "bar";
     cryptographySettings.HashProviders.Add(customHashProviderData);
 }
Пример #4
0
        private static CryptographySettings GenerateCryptographySettings()
        {
            CryptographySettings settings = new CryptographySettings();

            settings.SymmetricCryptoProviders.Add(new DpapiSymmetricCryptoProviderData("dpapi1", DataProtectionScope.CurrentUser));
            return(settings);
        }
 public void Given()
 {
     cryptographySettings = new CryptographySettings {
         DefaultHashProviderName = "name"
     };
     cryptographySettings.HashProviders.Add(
         new HashAlgorithmProviderData("name", typeof(RijndaelManaged), true));
 }
        public void FixtureSetup()
        {
            byte[] key = new byte[] { 0, 1, 2, 3, 4 };

            CryptographySettings settings = (CryptographySettings)context.GetConfiguration(CryptographySettings.SectionName);

            ((KeyedHashAlgorithmProviderData)settings.HashProviders[hashInstance]).Key = key;
        }
 public void SetUp()
 {
     provider = new CryptographySettingsManageabilityProvider(new Dictionary<Type, ConfigurationElementManageabilityProvider>(0));
     machineKey = new MockRegistryKey(true);
     userKey = new MockRegistryKey(true);
     section = new CryptographySettings();
     configurationSource = new DictionaryConfigurationSource();
     configurationSource.Add("securityCryptographyConfiguration", section);
 }
 public void SetUp()
 {
     provider            = new CryptographySettingsManageabilityProvider(new Dictionary <Type, ConfigurationElementManageabilityProvider>(0));
     machineKey          = new MockRegistryKey(true);
     userKey             = new MockRegistryKey(true);
     section             = new CryptographySettings();
     configurationSource = new DictionaryConfigurationSource();
     configurationSource.Add("securityCryptographyConfiguration", section);
 }
 public void Given()
 {
     cryptographySettings = new CryptographySettings();
     cryptographySettings.SymmetricCryptoProviders.Add(
         new SymmetricAlgorithmProviderData(
             "name",
             typeof(RijndaelManaged),
             "protected key",
             DataProtectionScope.LocalMachine));
 }
Пример #10
0
        public void SetUp()
        {
            settings = new CryptographySettings();

            configurationSource = new DictionaryConfigurationSource();
            configurationSource.Add(CryptographySettings.SectionName, settings);

            configurationSource.Add(InstrumentationConfigurationSection.SectionName,
                                    new InstrumentationConfigurationSection(false, false));
        }
Пример #11
0
        public void AddTo(IConfigurationSource configurationSource)
        {
            var section = new CryptographySettings();

            foreach (var builder in hashProviderBuilders)
            {
                builder.AddTo(section);
            }
            configurationSource.Add(BlockSectionNames.Cryptography, section);
        }
        /// <summary>
        /// <para>Adds to the dictionary configuration data for
        /// the enterpriselibrary.configurationSettings configuration section.</para>
        /// </summary>
        /// <param name="serviceProvider">
        /// <para>The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.</para>
        /// </param>
        /// <param name="configurationDictionary">
        /// <para>A <see cref="ConfigurationDictionary"/> to add
        /// configuration data to.</para></param>
        public void BuildContext(IServiceProvider serviceProvider, ConfigurationDictionary configurationDictionary)
        {
            CryptographySettingsNode node = GetCryptographySettingsNode(serviceProvider);

            if (node != null)
            {
                CryptographySettings settings = node.CryptographySettings;
                configurationDictionary[CryptographySettings.SectionName] = settings;
            }
        }
Пример #13
0
        /// <summary>
        /// Test key needs to be >= 128 characters
        /// </summary>
        /// <returns></returns>
        internal IOptions <CryptographySettings> BuildCryptographySettings()
        {
            CryptographySettings mySeTings = new CryptographySettings()
            {
                // 68+68 characters
                JwtSecret = Guid.NewGuid().ToString("X") + Guid.NewGuid().ToString("X")
            };

            return(Options.Create <CryptographySettings>(mySeTings));
        }
Пример #14
0
            public void AddTo(CryptographySettings settings)
            {
                var providerSetting = new HashAlgorithmProviderData(providerSettings.Name, providerSettings.Type, true);

                settings.HashProviders.Add(providerSetting);
                if (isDefault)
                {
                    settings.DefaultHashProviderName = providerSetting.Name;
                }
            }
Пример #15
0
        IConfigurationSource CreateSource(string defaultName)
        {
            DictionaryConfigurationSource sections = new DictionaryConfigurationSource();
            CryptographySettings          settings = new CryptographySettings();

            settings.DefaultHashProviderName = defaultName;
            settings.HashProviders.Add(new KeyedHashAlgorithmProviderData(providerName, typeof(HMACSHA1), false, keyedHashKeyFile, DataProtectionScope.CurrentUser));
            settings.HashProviders.Add(new HashAlgorithmProviderData(hashAlgorithm, typeof(SHA1Managed), false));
            sections.Add(CryptographySettings.SectionName, settings);
            return(sections);
        }
 public void Given()
 {
     cryptographySettings =
         new CryptographySettings
     {
         DefaultSymmetricCryptoProviderName = "name"
     };
     cryptographySettings.SymmetricCryptoProviders.Add(
         new SymmetricAlgorithmProviderData(
             "name", typeof(RijndaelManaged), "protected key", DataProtectionScope.CurrentUser));
 }
 public void Given()
 {
     cryptographySettings = new CryptographySettings();
     cryptographySettings.HashProviders.Add(
         new KeyedHashAlgorithmProviderData(
             "keyed",
             typeof(RijndaelManaged),
             true,
             "protected key",
             DataProtectionScope.LocalMachine));
 }
        IConfigurationSource CreateSource(string defaultName)
        {
            DictionaryConfigurationSource sections = new DictionaryConfigurationSource();
            CryptographySettings          settings = new CryptographySettings();

            settings.DefaultSymmetricCryptoProviderName = defaultName;
            settings.SymmetricCryptoProviders.Add(new DpapiSymmetricCryptoProviderData(providerName, DataProtectionScope.CurrentUser));
            settings.SymmetricCryptoProviders.Add(new SymmetricAlgorithmProviderData(symmetricAlgorithm, typeof(RijndaelManaged), "ProtectedKey.file", DataProtectionScope.CurrentUser));
            sections.Add(CryptographySettings.SectionName, settings);
            return(sections);
        }
        public void FixtureSetup()
        {
            byte[] key = new byte[32];
            CryptographyUtility.GetRandomBytes(key);
            CryptographySettings settings = (CryptographySettings)context.GetConfiguration(CryptographySettings.SectionName);

            ((SymmetricAlgorithmProviderData)settings.SymmetricCryptoProviders[symmetricInstanceName]).Key = key;

            SymmetricCryptoProviderFactory factory = new SymmetricCryptoProviderFactory(context);

            symmProvider = factory.CreateSymmetricCryptoProvider(symmetricInstanceName);
        }
Пример #20
0
        public static void ModifProtectedKeyFilename(string keyFilePath)
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

            if (config.HasFile)
            {
                ConfigurationSection configurationSection = config.Sections["securityCryptographyConfiguration"];
                CryptographySettings cryptographySettings = configurationSection as CryptographySettings;
                NameTypeConfigurationElementCollection <SymmetricProviderData, CustomSymmetricCryptoProviderData> elementCollection = cryptographySettings.SymmetricCryptoProviders;
                SymmetricProviderData symmetricProviderData = elementCollection.Get("DESCryptoServiceProvider");
                symmetricProviderData.ElementInformation.Properties["protectedKeyFilename"].Value = keyFilePath;
                config.Save(ConfigurationSaveMode.Minimal);
            }
        }
        public void SetUp()
        {
            cryptoSettings = new CryptographySettings();
            settings       = new CacheManagerSettings();

            SymmetricStorageEncryptionProviderData encrytionProvider = new SymmetricStorageEncryptionProviderData(providerName, symmetricInstance);

            settings.EncryptionProviders.Add(encrytionProvider);

            cryptoSettings.SymmetricCryptoProviders.Add(new DpapiSymmetricCryptoProviderData(symmetricInstance, DataProtectionScope.CurrentUser));

            configurationSource = new DictionaryConfigurationSource();
            configurationSource.Add(CacheManagerSettings.SectionName, settings);
            configurationSource.Add(CryptographySettings.SectionName, cryptoSettings);
        }
Пример #22
0
        /// <summary>
        /// Get the named <see cref="HashProviderData"/> instance.
        /// </summary>
        /// <param name="hashProviderName">The name of the instance to retrieve.</param>
        /// <returns>The named <see cref="HashProviderData"/> instance.</returns>
        public HashProviderData GetHashProviderData(string hashProviderName)
        {
            if (string.IsNullOrEmpty(hashProviderName))
            {
                throw new ArgumentException(Resources.ExceptionNullOrEmptyString, "hashProviderName");
            }

            CryptographySettings settings = this.CryptographySettings;

            if (settings.HashProviders.Contains(hashProviderName))
            {
                return(settings.HashProviders.Get(hashProviderName));
            }
            throw new ConfigurationErrorsException(string.Format(Resources.Culture, Resources.ExceptionNoHashProviderDefined, hashProviderName));
        }
Пример #23
0
        /// <summary>
        /// Get the named <see cref="SymmetricProviderData"/> instance.
        /// </summary>
        /// <param name="symetricCryptoProviderName">The name of the instance to retrieve.</param>
        /// <returns>The named <see cref="SymmetricProviderData"/> instance.</returns>
        public SymmetricProviderData GetSymetricCryptoProviderData(string symetricCryptoProviderName)
        {
            if (string.IsNullOrEmpty(symetricCryptoProviderName))
            {
                throw new ArgumentException(Resources.ExceptionNullOrEmptyString, "symetricCryptoProviderName");
            }

            CryptographySettings settings = this.CryptographySettings;

            if (settings.SymmetricCryptoProviders.Contains(symetricCryptoProviderName))
            {
                return(settings.SymmetricCryptoProviders.Get(symetricCryptoProviderName));
            }
            throw new ConfigurationErrorsException(string.Format(Resources.Culture, Resources.ExceptionNoSymmetricCrytoProviderDefined, symetricCryptoProviderName));
        }
        protected override void AddElementAdministrativeTemplateParts(AdmContentBuilder contentBuilder,
                                                                      SymmetricStorageEncryptionProviderData configurationObject,
                                                                      IConfigurationSource configurationSource,
                                                                      String elementPolicyKeyName)
        {
            CryptographySettings cryptographySection
                = configurationSource.GetSection("securityCryptographyConfiguration") as CryptographySettings;

            contentBuilder.AddDropDownListPartForNamedElementCollection <SymmetricProviderData>(Resources.SymmetricStorageEncryptionProviderSymmetricInstancePartName,
                                                                                                elementPolicyKeyName,
                                                                                                SymmetricInstancePropertyName,
                                                                                                cryptographySection.SymmetricCryptoProviders,
                                                                                                configurationObject.SymmetricInstance,
                                                                                                false);
        }
Пример #25
0
        public void Properties()
        {
            Guid appID = Guid.NewGuid();
            CryptographySettings settings = new CryptographySettings();

            KeyedHashAlgorithmProviderData hashData = new KeyedHashAlgorithmProviderData();
            hashData.Name = "name";
            settings.HashProviders.Add(hashData);
            Assert.AreEqual(1, settings.HashProviders.Count, "hash collection");

            DpapiSymmetricCryptoProviderData symmData = new DpapiSymmetricCryptoProviderData();
            symmData.Name = "name";
            settings.SymmetricCryptoProviders.Add(symmData);
            Assert.AreEqual(1, settings.SymmetricCryptoProviders.Count, "symmetric collection");
        }
Пример #26
0
        public void Properties()
        {
            Guid appID = Guid.NewGuid();
            CryptographySettings settings = new CryptographySettings();

            KeyedHashAlgorithmProviderData hashData = new KeyedHashAlgorithmProviderData();

            hashData.Name = "name";
            settings.HashProviders.Add(hashData);
            Assert.AreEqual(1, settings.HashProviders.Count, "hash collection");

            DpapiSymmetricCryptoProviderData symmData = new DpapiSymmetricCryptoProviderData();

            symmData.Name = "name";
            settings.SymmetricCryptoProviders.Add(symmData);
            Assert.AreEqual(1, settings.SymmetricCryptoProviders.Count, "symmetric collection");
        }
        /// <summary>
        /// <para>Gets the named <see cref="SymmetricCryptoProviderData"/> from the <see cref="CryptographySettings"/>.</para>
        /// </summary>
        /// <param name="symmetricProviderName">
        /// <para>The name of the <see cref="SymmetricCryptoProviderData"/>.</para>
        /// </param>
        /// <returns>
        /// <para>The named <see cref="SymmetricCryptoProviderData"/> from the <see cref="CryptographySettings"/>.</para>
        /// </returns>
        public virtual SymmetricCryptoProviderData GetSymmetricCryptoProviderData(string symmetricProviderName)
        {
            CryptographySettings settings = ConfigurationContext.GetConfiguration(CryptographySettings.SectionName) as CryptographySettings;

            if (settings == null)
            {
                throw new ConfigurationException(SR.ExceptionCryptoSettingsMissing);
            }

            SymmetricCryptoProviderData symmetricCryptoProviderData = settings.SymmetricCryptoProviders[symmetricProviderName];

            if (symmetricCryptoProviderData == null)
            {
                throw new ConfigurationException(SR.ExceptionNoCryptoProvider(symmetricProviderName));
            }

            return(symmetricCryptoProviderData);
        }
Пример #28
0
        public static void ModifProtectedKeyFilename()
        {
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

            if (config.HasFile)
            {
                ConfigurationSection configurationSection = config.Sections["securityCryptographyConfiguration"];
                CryptographySettings cryptographySettings = configurationSection as CryptographySettings;
                NameTypeConfigurationElementCollection <SymmetricProviderData, CustomSymmetricCryptoProviderData> elementCollection = cryptographySettings.SymmetricCryptoProviders;
                SymmetricProviderData symmetricProviderData = elementCollection.Get("AesCryptoServiceProvider");
                string keyFilePath = symmetricProviderData.ElementInformation.Properties["protectedKeyFilename"].Value.ToString();
                if (keyFilePath.Split('\\').Length == 1)
                {
                    symmetricProviderData.ElementInformation.Properties["protectedKeyFilename"].Value = AppDomain.CurrentDomain.BaseDirectory + "\\" + keyFilePath;
                    config.Save(ConfigurationSaveMode.Minimal);
                }
            }
        }
Пример #29
0
        private static CryptographySettings GenerateBlockSettings()
        {
            CryptographySettings settings = new CryptographySettings();

            settings.HashProviders.Add(new CustomHashProviderData("mockHashProvider1", typeof(MockHashProvider).AssemblyQualifiedName));
            settings.HashProviders.Add(new KeyedHashAlgorithmProviderData("hmac1", typeof(HMACSHA1).AssemblyQualifiedName, true, new byte[] {}));
            settings.HashProviders.Add(new HashAlgorithmProviderData("hashAlgorithm1", typeof(SHA1Managed).AssemblyQualifiedName, false));
            settings.HashProviders.Add(new CustomHashProviderData("provider1", typeof(MockHashProvider).AssemblyQualifiedName));
            settings.HashProviders.Add(new CustomHashProviderData("provider2", typeof(MockHashProvider).AssemblyQualifiedName));

            settings.SymmetricCryptoProviders.Add(new CustomSymmetricCryptoProviderData("mockSymmetric1", typeof(MockSymmetricCryptoProvider).AssemblyQualifiedName));
            settings.SymmetricCryptoProviders.Add(new DpapiSymmetricCryptoProviderData("dpapiSymmetric1", new DpapiSettingsData(new byte[] {}, DpapiStorageMode.User)));
            settings.SymmetricCryptoProviders.Add(new SymmetricAlgorithmProviderData("symmetricAlgorithm1", typeof(RijndaelManaged).AssemblyQualifiedName, Encoding.UTF8.GetBytes("TODO")));
            settings.SymmetricCryptoProviders.Add(new CustomSymmetricCryptoProviderData("provider1", typeof(MockSymmetricCryptoProvider).AssemblyQualifiedName));
            settings.SymmetricCryptoProviders.Add(new CustomSymmetricCryptoProviderData("provider2", typeof(MockSymmetricCryptoProvider).AssemblyQualifiedName));

            return(settings);
        }
        protected override void Arrange()
        {
            updatableConfigurationSource = new ConfigurationSourceUpdatable();
            cryptoSettings = new CryptographySettings();

            hashProvider = new HashAlgorithmProviderData("hash provider", typeof(MD5), true);
            cryptoSettings.HashProviders.Add(hashProvider);
            cryptoSettings.DefaultHashProviderName = hashProvider.Name;

            symmetricAlgorithmProvider = new CustomSymmetricCryptoProviderData("symm provider", typeof(MockCustomSymmetricProvider));
            cryptoSettings.SymmetricCryptoProviders.Add(symmetricAlgorithmProvider);
            cryptoSettings.DefaultSymmetricCryptoProviderName = symmetricAlgorithmProvider.Name;
            updatableConfigurationSource.Add(CryptographySettings.SectionName, cryptoSettings);

            container             = new UnityContainer();
            containerConfigurator = new UnityContainerConfigurator(container);
            EnterpriseLibraryContainer.ConfigureContainer(containerConfigurator, updatableConfigurationSource);
        }
        public void CanDeserializeSerializedConfiguration()
        {
            string name1 = "name1";
            string name2 = "name2";
            string name3 = "name3";

            CryptographySettings settings = new CryptographySettings();

            settings.DefaultHashProviderName = name1;
            settings.HashProviders.Add(new HashAlgorithmProviderData(name1, typeof(SHA1Managed), true));
            settings.HashProviders.Add(new KeyedHashAlgorithmProviderData(name2, typeof(HMACSHA1), false, keyedHashKeyFile, DataProtectionScope.CurrentUser));
            settings.HashProviders.Add(new CustomHashProviderData(name3, typeof(MockCustomHashProvider)));

            IDictionary <string, ConfigurationSection> sections = new Dictionary <string, ConfigurationSection>();

            sections[CryptographySettings.SectionName] = settings;
            IConfigurationSource configurationSource
                = ConfigurationTestHelper.SaveSectionsInFileAndReturnConfigurationSource(sections);

            CryptographySettings roSettings = (CryptographySettings)configurationSource.GetSection(CryptographySettings.SectionName);

            Assert.IsNotNull(roSettings);
            Assert.AreEqual(name1, roSettings.DefaultHashProviderName);
            Assert.AreEqual(3, roSettings.HashProviders.Count);

            Assert.IsNotNull(roSettings.HashProviders.Get(name1));
            Assert.AreSame(typeof(HashAlgorithmProviderData), roSettings.HashProviders.Get(name1).GetType());
            Assert.AreSame(typeof(HashAlgorithmProvider), roSettings.HashProviders.Get(name1).Type);
            Assert.AreSame(typeof(SHA1Managed), ((HashAlgorithmProviderData)roSettings.HashProviders.Get(name1)).AlgorithmType);
            Assert.AreEqual(true, ((HashAlgorithmProviderData)roSettings.HashProviders.Get(name1)).SaltEnabled);

            Assert.IsNotNull(roSettings.HashProviders.Get(name2));
            Assert.AreSame(typeof(KeyedHashAlgorithmProviderData), roSettings.HashProviders.Get(name2).GetType());
            Assert.AreSame(typeof(KeyedHashAlgorithmProvider), roSettings.HashProviders.Get(name2).Type);
            Assert.AreSame(typeof(HMACSHA1), ((KeyedHashAlgorithmProviderData)roSettings.HashProviders.Get(name2)).AlgorithmType);
            Assert.AreEqual(false, ((KeyedHashAlgorithmProviderData)roSettings.HashProviders.Get(name2)).SaltEnabled);
            Assert.AreEqual(keyedHashKeyFile, ((KeyedHashAlgorithmProviderData)roSettings.HashProviders.Get(name2)).ProtectedKeyFilename);
            Assert.AreEqual(DataProtectionScope.CurrentUser, ((KeyedHashAlgorithmProviderData)roSettings.HashProviders.Get(name2)).ProtectedKeyProtectionScope);

            Assert.IsNotNull(roSettings.HashProviders.Get(name3));
            Assert.AreSame(typeof(CustomHashProviderData), roSettings.HashProviders.Get(name3).GetType());
            Assert.AreSame(typeof(MockCustomHashProvider), roSettings.HashProviders.Get(name3).Type);
        }
        public void CanDeserializeSerializedConfiguration()
        {
            string name1 = "name1";
            string name2 = "name2";
            string name3 = "name3";

            CryptographySettings settings = new CryptographySettings();

            settings.DefaultHashProviderName = name1;
            settings.HashProviders.Add(new HashAlgorithmProviderData(name1, typeof(SHA1Managed), true));
            settings.HashProviders.Add(new KeyedHashAlgorithmProviderData(name2, typeof(HMACSHA1), false, keyedHashKeyFile, DataProtectionScope.CurrentUser));
            settings.HashProviders.Add(new CustomHashProviderData(name3, typeof(MockCustomHashProvider)));

            IDictionary<string, ConfigurationSection> sections = new Dictionary<string, ConfigurationSection>();
            sections[CryptographyConfigurationView.SectionName] = settings;
            IConfigurationSource configurationSource
                = ConfigurationTestHelper.SaveSectionsInFileAndReturnConfigurationSource(sections);

            CryptographySettings roSettings = (CryptographySettings)configurationSource.GetSection(CryptographyConfigurationView.SectionName);

            Assert.IsNotNull(roSettings);
            Assert.AreEqual(name1, roSettings.DefaultHashProviderName);
            Assert.AreEqual(3, roSettings.HashProviders.Count);

            Assert.IsNotNull(roSettings.HashProviders.Get(name1));
            Assert.AreSame(typeof(HashAlgorithmProviderData), roSettings.HashProviders.Get(name1).GetType());
            Assert.AreSame(typeof(HashAlgorithmProvider), roSettings.HashProviders.Get(name1).Type);
            Assert.AreSame(typeof(SHA1Managed), ((HashAlgorithmProviderData)roSettings.HashProviders.Get(name1)).AlgorithmType);
            Assert.AreEqual(true, ((HashAlgorithmProviderData)roSettings.HashProviders.Get(name1)).SaltEnabled);

            Assert.IsNotNull(roSettings.HashProviders.Get(name2));
            Assert.AreSame(typeof(KeyedHashAlgorithmProviderData), roSettings.HashProviders.Get(name2).GetType());
            Assert.AreSame(typeof(KeyedHashAlgorithmProvider), roSettings.HashProviders.Get(name2).Type);
            Assert.AreSame(typeof(HMACSHA1), ((KeyedHashAlgorithmProviderData)roSettings.HashProviders.Get(name2)).AlgorithmType);
            Assert.AreEqual(false, ((KeyedHashAlgorithmProviderData)roSettings.HashProviders.Get(name2)).SaltEnabled);
            Assert.AreEqual(keyedHashKeyFile, ((KeyedHashAlgorithmProviderData)roSettings.HashProviders.Get(name2)).ProtectedKeyFilename);
            Assert.AreEqual(DataProtectionScope.CurrentUser, ((KeyedHashAlgorithmProviderData)roSettings.HashProviders.Get(name2)).ProtectedKeyProtectionScope);

            Assert.IsNotNull(roSettings.HashProviders.Get(name3));
            Assert.AreSame(typeof(CustomHashProviderData), roSettings.HashProviders.Get(name3).GetType());
            Assert.AreSame(typeof(MockCustomHashProvider), roSettings.HashProviders.Get(name3).Type);
        }
        public void CanBuildCustomHashProviderFromGivenConfiguration()
        {
            CustomHashProviderData customData
                = new CustomHashProviderData("custom", typeof(MockCustomHashProvider));

            customData.SetAttributeValue(MockCustomProviderBase.AttributeKey, "value1");
            CryptographySettings settings = new CryptographySettings();

            settings.HashProviders.Add(customData);
            DictionaryConfigurationSource configurationSource = new DictionaryConfigurationSource();

            configurationSource.Add(CryptographyConfigurationView.SectionName, settings);

            IHashProvider custom
                = EnterpriseLibraryFactory.BuildUp <IHashProvider>("custom", configurationSource);

            Assert.IsNotNull(custom);
            Assert.AreSame(typeof(MockCustomHashProvider), custom.GetType());
            Assert.AreEqual("value1", ((MockCustomHashProvider)custom).customValue);
        }
        public void CanDeserializeSerializedConfiguration()
        {
            byte[] key = new byte[] { 1, 2, 3, 4 };
            string name1 = "name1";
            string name2 = "name2";
            string name3 = "name3";

            CryptographySettings settings = new CryptographySettings();

            settings.DefaultSymmetricCryptoProviderName = name1;
            settings.SymmetricCryptoProviders.Add(new DpapiSymmetricCryptoProviderData(name1, DataProtectionScope.CurrentUser));
            settings.SymmetricCryptoProviders.Add(new SymmetricAlgorithmProviderData(name2, typeof(RijndaelManaged), "ProtectedKey.file", DataProtectionScope.CurrentUser));
            settings.SymmetricCryptoProviders.Add(new CustomSymmetricCryptoProviderData(name3, typeof(MockCustomSymmetricProvider)));

            IDictionary<string, ConfigurationSection> sections = new Dictionary<string, ConfigurationSection>();
            sections[CryptographyConfigurationView.SectionName] = settings;
            IConfigurationSource configurationSource
                = ConfigurationTestHelper.SaveSectionsInFileAndReturnConfigurationSource(sections);

            CryptographySettings roSettings = (CryptographySettings)configurationSource.GetSection(CryptographyConfigurationView.SectionName);

            Assert.IsNotNull(roSettings);
            Assert.AreEqual(name1, roSettings.DefaultSymmetricCryptoProviderName);
            Assert.AreEqual(3, roSettings.SymmetricCryptoProviders.Count);

            Assert.IsNotNull(roSettings.SymmetricCryptoProviders.Get(name1));
            Assert.AreSame(typeof(DpapiSymmetricCryptoProviderData), roSettings.SymmetricCryptoProviders.Get(name1).GetType());
            Assert.AreSame(typeof(DpapiSymmetricCryptoProvider), roSettings.SymmetricCryptoProviders.Get(name1).Type);
            Assert.AreEqual(DataProtectionScope.CurrentUser, ((DpapiSymmetricCryptoProviderData)roSettings.SymmetricCryptoProviders.Get(name1)).Scope);

            Assert.IsNotNull(roSettings.SymmetricCryptoProviders.Get(name2));
            Assert.AreSame(typeof(SymmetricAlgorithmProviderData), roSettings.SymmetricCryptoProviders.Get(name2).GetType());
            Assert.AreSame(typeof(SymmetricAlgorithmProvider), roSettings.SymmetricCryptoProviders.Get(name2).Type);
            Assert.AreSame(typeof(RijndaelManaged), ((SymmetricAlgorithmProviderData)roSettings.SymmetricCryptoProviders.Get(name2)).AlgorithmType);
            Assert.AreEqual("ProtectedKey.file", ((SymmetricAlgorithmProviderData)roSettings.SymmetricCryptoProviders.Get(name2)).ProtectedKeyFilename);
            Assert.AreEqual(DataProtectionScope.CurrentUser, ((SymmetricAlgorithmProviderData)roSettings.SymmetricCryptoProviders.Get(name2)).ProtectedKeyProtectionScope);
            Assert.IsNotNull(roSettings.SymmetricCryptoProviders.Get(name3));
            Assert.AreSame(typeof(CustomSymmetricCryptoProviderData), roSettings.SymmetricCryptoProviders.Get(name3).GetType());
            Assert.AreSame(typeof(MockCustomSymmetricProvider), roSettings.SymmetricCryptoProviders.Get(name3).Type);
        }
Пример #35
0
 /// <summary>
 /// Constructs a new instance 
 /// with the corresponding runtime configuration data.
 /// </summary>
 /// <param name="data">The corresponding runtime configuration data.</param>
 public CryptographySettingsNode(CryptographySettings data)
     : base()
 {
     this.cryptographySettings = data;
 }
		public CryptographyManagerSettingsNodeBuilder(IServiceProvider serviceProvider, CryptographySettings cryptographySettings)
			: base(serviceProvider)
		{
			this.cryptographySettings = cryptographySettings;
		}
 public CryptographyManagerSettingsBuilder(IServiceProvider serviceProvider, CryptographySettingsNode cryptographySettingsNode)
 {
     this.cryptographySettingsNode = cryptographySettingsNode;
     hierarchy = ServiceHelper.GetCurrentHierarchy(serviceProvider);
     cryptographySettings = new CryptographySettings();
 }