protected IHashProvider CreateProvider(HashProviderData providerData)
        {
            IHashProvider provider = GetProvider();

            provider.Initialize(new TestCryptographyConfigurationView(providerData));
            return(provider);
        }
Exemple #2
0
        private HashAlgorithmProviderData GetHashAlgorithmProviderDataFromCursor()
        {
            HashProviderData hashProviderData = cryptoConfigurationView.GetHashProviderData(ConfigurationName);

            ArgumentValidation.CheckExpectedType(hashProviderData, typeof(HashAlgorithmProviderData));
            return((HashAlgorithmProviderData)hashProviderData);
        }
        /// <summary>
        /// <para>Gets the <see cref="Type"/> of the <see cref="IHashProvider"/> to create based on the name.</para>
        /// </summary>
        /// <param name="hashProviderName">
        /// <para>The name of the configuration object to create.</para>
        /// </param>
        /// <returns>
        /// <para>The <see cref="Type"/> of <see cref="IHashProvider"/> to create.</para>
        /// </returns>
        protected override Type GetConfigurationType(string hashProviderName)
        {
            CryptographyConfigurationView cryptoConfigurationView = (CryptographyConfigurationView)CreateConfigurationView();
            HashProviderData hashProviderData = cryptoConfigurationView.GetHashProviderData(hashProviderName);

            return(GetType(hashProviderData.TypeName));
        }
Exemple #4
0
 /// <summary>
 /// Initializes with a defined display name and with defined configuration.
 /// </summary>
 /// <param name="hashProviderData"></param>
 protected HashProviderNode(HashProviderData hashProviderData) : base(/*SR.HashProviderNodeName*/)
 {
     if (hashProviderData == null)
     {
         throw new ArgumentNullException("hashProviderData");
     }
     this.hashProviderData = hashProviderData;
 }
Exemple #5
0
 /// <summary>
 /// Initializes with a defined display name and with defined configuration.
 /// </summary>
 /// <param name="hashProviderData"></param>
 protected HashProviderNode(HashProviderData hashProviderData)
     : base(/*SR.HashProviderNodeName*/)
 {
     if (hashProviderData == null)
     {
         throw new ArgumentNullException("hashProviderData");
     }
     this.hashProviderData = hashProviderData;
 }
Exemple #6
0
        /// <summary>
        /// Initializes with a defined display name and with defined configuration.
        /// </summary>
        /// <param name="hashProviderData"></param>
        protected HashProviderNode(HashProviderData hashProviderData)
        {
            if (hashProviderData == null)
            {
                throw new ArgumentNullException("hashProviderData");
            }

            Rename(hashProviderData.Name);
        }
Exemple #7
0
        /// <summary>
        /// Initializes with a defined display name and with defined configuration.
        /// </summary>
        /// <param name="hashProviderData"></param>
        protected HashProviderNode(HashProviderData hashProviderData)
        {
            if (hashProviderData == null)
            {
                throw new ArgumentNullException("hashProviderData");
            }

            Rename(hashProviderData.Name);
        }
        /// <summary>
        /// Gets the cryptographer used for hashing.
        /// </summary>
        /// <returns>The cryptographer initialized with the configured key.</returns>
        protected override HashCryptographer GetHashCryptographer()
        {
            HashProviderData hashProviderData = CryptoConfigurationView.GetHashProviderData(ConfigurationName);

            ArgumentValidation.CheckExpectedType(hashProviderData, typeof(KeyedHashAlgorithmProviderData));

            KeyedHashAlgorithmProviderData keyedHashAlgorithmProviderData = (KeyedHashAlgorithmProviderData)hashProviderData;

            return(new HashCryptographer(keyedHashAlgorithmProviderData.AlgorithmType, keyedHashAlgorithmProviderData.Key));
        }
		private void CreateHashProviderNode(HashProviderCollectionNode hashProviderCollectionNode, HashProviderData hashProviderData)
		{
			HashProviderNode hashProviderNode = NodeCreationService.CreateNodeByDataType(hashProviderData.GetType(), new object[] { hashProviderData }) as HashProviderNode;
			if (null == hashProviderNode)
			{
				LogNodeMapError(hashProviderCollectionNode, hashProviderData.GetType());
				return;
			}

			if (string.Compare(hashProviderNode.Name, cryptographySettings.DefaultHashProviderName) == 0)
			{
				defaultHashProviderNode = hashProviderNode;
			}

			hashProviderCollectionNode.AddNode(hashProviderNode);
		}
        public void Indexer()
        {
            HashProviderDataCollection collection   = new HashProviderDataCollection();
            MockHashProviderData       providerData = new MockHashProviderData();

            providerData.Name             = "provider1";
            collection[providerData.Name] = providerData;
            Assert.AreEqual(1, collection.Count, "count");
            HashProviderData compareData1 = collection["provider1"];

            Assert.AreSame(providerData, compareData1, "string indexer");

            HashProviderData compareData2 = collection[0];

            Assert.AreSame(providerData, compareData2, "int indexer");
        }
        /// <summary>
        /// <para>Gets the named <see cref="HashProviderData"/> from the <see cref="CryptographySettings"/>.</para>
        /// </summary>
        /// <param name="hashProviderName">
        /// <para>The name of the <see cref="HashProviderData"/>.</para>
        /// </param>
        /// <returns>
        /// <para>The named <see cref="HashProviderData"/> from the <see cref="CryptographySettings"/>.</para>
        /// </returns>
        public virtual HashProviderData GetHashProviderData(string hashProviderName)
        {
            ArgumentValidation.CheckForNullReference(hashProviderName, "instanceName");
            ArgumentValidation.CheckForEmptyString(hashProviderName, "instanceName");

            CryptographySettings settings = GetCryptographySettings();

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

            HashProviderData hashProviderData = settings.HashProviders[hashProviderName];

            if (hashProviderData == null)
            {
                throw new ConfigurationException(SR.ExceptionNoCryptoProvider(hashProviderName));
            }

            return(hashProviderData);
        }
 public TestCryptographyConfigurationView(HashProviderData data) : base(new ConfigurationContext(new ConfigurationDictionary()))
 {
     this.data = data;
 }
Exemple #13
0
        public void ManageabilityProviderGeneratesProperAdmContent()
        {
            HashProviderData hash = new HashProviderData("hash", typeof(object));

            section.HashProviders.Add(hash);
            SymmetricProviderData symmetric = new SymmetricProviderData("symmetric", typeof(object));

            section.SymmetricCryptoProviders.Add(symmetric);

            MockConfigurationElementManageabilityProvider subProvider = new MockConfigurationElementManageabilityProvider(true, false);
            Dictionary <Type, ConfigurationElementManageabilityProvider> subProviders
                = new Dictionary <Type, ConfigurationElementManageabilityProvider>();

            subProviders.Add(typeof(HashProviderData), subProvider);
            subProviders.Add(typeof(SymmetricProviderData), subProvider);
            provider = new ConfigurationSectionManageabilityProviderWrapper(new CryptographySettingsManageabilityProvider(subProviders));

            MockAdmContentBuilder contentBuilder = new MockAdmContentBuilder();

            provider.InvokeAddAdministrativeTemplateDirectives(contentBuilder, section, configurationSource, "TestApp");

            Assert.AreEqual(2, subProvider.configurationObjects.Count);
            Assert.AreSame(hash, subProvider.configurationObjects[0]);
            Assert.AreSame(symmetric, subProvider.configurationObjects[1]);

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

            Assert.IsTrue(categoriesEnumerator.MoveNext());
            Assert.AreEqual(Resources.CryptographySectionCategoryName, categoriesEnumerator.Current.Name);
            IEnumerator <AdmCategory> subCategoriesEnumerator = categoriesEnumerator.Current.Categories.GetEnumerator();

            Assert.IsTrue(subCategoriesEnumerator.MoveNext());
            Assert.AreEqual(Resources.HashProvidersCategoryName, subCategoriesEnumerator.Current.Name);
            IEnumerator <AdmPolicy> policiesEnumerator = subCategoriesEnumerator.Current.Policies.GetEnumerator();

            Assert.IsTrue(policiesEnumerator.MoveNext());
            Assert.AreEqual(MockConfigurationElementManageabilityProvider.Policy, policiesEnumerator.Current.Name);
            Assert.IsFalse(policiesEnumerator.MoveNext());

            Assert.IsTrue(subCategoriesEnumerator.MoveNext());
            Assert.AreEqual(Resources.SymmetricCryptoProvidersCategoryName, subCategoriesEnumerator.Current.Name);
            policiesEnumerator = subCategoriesEnumerator.Current.Policies.GetEnumerator();
            Assert.IsTrue(policiesEnumerator.MoveNext());
            Assert.AreEqual(MockConfigurationElementManageabilityProvider.Policy, policiesEnumerator.Current.Name);
            Assert.IsFalse(policiesEnumerator.MoveNext());

            Assert.IsFalse(subCategoriesEnumerator.MoveNext());
            IEnumerator <AdmPolicy> sectionPoliciesEnumerator = categoriesEnumerator.Current.Policies.GetEnumerator();

            Assert.IsTrue(sectionPoliciesEnumerator.MoveNext());
            Assert.AreEqual(Resources.CryptographySettingsPolicyName, sectionPoliciesEnumerator.Current.Name);
            IEnumerator <AdmPart> sectionPartsEnumerator = sectionPoliciesEnumerator.Current.Parts.GetEnumerator();

            Assert.IsTrue(sectionPartsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmDropDownListPart), sectionPartsEnumerator.Current.GetType());
            Assert.AreEqual(CryptographySettingsManageabilityProvider.DefaultHashProviderPropertyName,
                            sectionPartsEnumerator.Current.ValueName);
            Assert.AreEqual(Resources.CryptographySettingsDefaultHashProviderPartName,
                            sectionPartsEnumerator.Current.PartName);

            Assert.IsTrue(sectionPartsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmDropDownListPart), sectionPartsEnumerator.Current.GetType());
            Assert.AreEqual(CryptographySettingsManageabilityProvider.DefaultSymmetricCryptoProviderPropertyName,
                            sectionPartsEnumerator.Current.ValueName);
            Assert.AreEqual(Resources.CryptographySettingsDefaultSymmetricCryptoProviderPartName,
                            sectionPartsEnumerator.Current.PartName);

            Assert.IsFalse(sectionPartsEnumerator.MoveNext());
            Assert.IsFalse(sectionPoliciesEnumerator.MoveNext());
            Assert.IsFalse(categoriesEnumerator.MoveNext());
        }
Exemple #14
0
        private void CreateHashProviderNode(HashProviderCollectionNode hashProviderCollectionNode, HashProviderData hashProviderData)
        {
            HashProviderNode hashProviderNode = NodeCreationService.CreateNodeByDataType(hashProviderData.GetType(), new object[] { hashProviderData }) as HashProviderNode;

            if (null == hashProviderNode)
            {
                LogNodeMapError(hashProviderCollectionNode, hashProviderData.GetType());
                return;
            }

            if (string.Compare(hashProviderNode.Name, cryptographySettings.DefaultHashProviderName) == 0)
            {
                defaultHashProviderNode = hashProviderNode;
            }

            hashProviderCollectionNode.AddNode(hashProviderNode);
        }
        public void ManageabilityProviderGeneratesProperAdmContent()
        {
            HashProviderData hash = new HashProviderData("hash", typeof(object));
            section.HashProviders.Add(hash);
            SymmetricProviderData symmetric = new SymmetricProviderData("symmetric", typeof(object));
            section.SymmetricCryptoProviders.Add(symmetric);

            MockConfigurationElementManageabilityProvider subProvider = new MockConfigurationElementManageabilityProvider(true, false);
            Dictionary<Type, ConfigurationElementManageabilityProvider> subProviders
                = new Dictionary<Type, ConfigurationElementManageabilityProvider>();
            subProviders.Add(typeof(HashProviderData), subProvider);
            subProviders.Add(typeof(SymmetricProviderData), subProvider);
            provider = new CryptographySettingsManageabilityProvider(subProviders);

            MockAdmContentBuilder contentBuilder = new MockAdmContentBuilder();

            provider.AddAdministrativeTemplateDirectives(contentBuilder, section, configurationSource, "TestApp");

            Assert.AreEqual(2, subProvider.configurationObjects.Count);
            Assert.AreSame(hash, subProvider.configurationObjects[0]);
            Assert.AreSame(symmetric, subProvider.configurationObjects[1]);

            MockAdmContent content = contentBuilder.GetMockContent();
            IEnumerator<AdmCategory> categoriesEnumerator = content.Categories.GetEnumerator();
            Assert.IsTrue(categoriesEnumerator.MoveNext());
            IEnumerator<AdmCategory> subCategoriesEnumerator = categoriesEnumerator.Current.Categories.GetEnumerator();

            Assert.IsTrue(subCategoriesEnumerator.MoveNext());
            IEnumerator<AdmPolicy> policiesEnumerator = subCategoriesEnumerator.Current.Policies.GetEnumerator();
            Assert.IsTrue(policiesEnumerator.MoveNext());
            Assert.AreEqual(MockConfigurationElementManageabilityProvider.Policy, policiesEnumerator.Current.Name);
            Assert.IsFalse(policiesEnumerator.MoveNext());

            Assert.IsTrue(subCategoriesEnumerator.MoveNext());
            policiesEnumerator = subCategoriesEnumerator.Current.Policies.GetEnumerator();
            Assert.IsTrue(policiesEnumerator.MoveNext());
            Assert.AreEqual(MockConfigurationElementManageabilityProvider.Policy, policiesEnumerator.Current.Name);
            Assert.IsFalse(policiesEnumerator.MoveNext());

            Assert.IsFalse(subCategoriesEnumerator.MoveNext());
            IEnumerator<AdmPolicy> sectionPoliciesEnumerator = categoriesEnumerator.Current.Policies.GetEnumerator();

            Assert.IsTrue(sectionPoliciesEnumerator.MoveNext());
            IEnumerator<AdmPart> sectionPartsEnumerator = sectionPoliciesEnumerator.Current.Parts.GetEnumerator();

            Assert.IsTrue(sectionPartsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmDropDownListPart), sectionPartsEnumerator.Current.GetType());
            Assert.AreEqual(CryptographySettingsManageabilityProvider.DefaultHashProviderPropertyName,
                            sectionPartsEnumerator.Current.ValueName);

            Assert.IsTrue(sectionPartsEnumerator.MoveNext());
            Assert.AreSame(typeof(AdmDropDownListPart), sectionPartsEnumerator.Current.GetType());
            Assert.AreEqual(CryptographySettingsManageabilityProvider.DefaultSymmetricCryptoProviderPropertyName,
                            sectionPartsEnumerator.Current.ValueName);

            Assert.IsFalse(sectionPartsEnumerator.MoveNext());
            Assert.IsFalse(sectionPoliciesEnumerator.MoveNext());
            Assert.IsFalse(categoriesEnumerator.MoveNext());
        }