Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Security / Cryptography / CngProvider.cs / 1305376 / CngProvider.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== using System; using System.Diagnostics.CodeAnalysis; using System.Diagnostics.Contracts; namespace System.Security.Cryptography { ////// Utility class to strongly type providers used with CNG. Since all CNG APIs which require a /// provider name take the name as a string, we use this string wrapper class to specifically mark /// which parameters are expected to be providers. We also provide a list of well known provider /// names, which helps Intellisense users find a set of good providernames to use. /// [Serializable] [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)] public sealed class CngProvider : IEquatable{ private static CngProvider s_msSmartCardKsp; private static CngProvider s_msSoftwareKsp; private string m_provider; public CngProvider(string provider) { Contract.Ensures(!String.IsNullOrEmpty(m_provider)); if (provider == null) { throw new ArgumentNullException("provider"); } if (provider.Length == 0) { throw new ArgumentException(SR.GetString(SR.Cryptography_InvalidProviderName, provider), "provider"); } m_provider = provider; } /// /// Name of the CNG provider /// public string Provider { get { Contract.Ensures(!String.IsNullOrEmpty(Contract.Result())); return m_provider; } } public static bool operator ==(CngProvider left, CngProvider right) { if (Object.ReferenceEquals(left, null)) { return Object.ReferenceEquals(right, null); } return left.Equals(right); } [Pure] public static bool operator !=(CngProvider left, CngProvider right) { if (Object.ReferenceEquals(left, null)) { return !Object.ReferenceEquals(right, null); } return !left.Equals(right); } public override bool Equals(object obj) { Contract.Assert(m_provider != null); return Equals(obj as CngProvider); } public bool Equals(CngProvider other) { if (Object.ReferenceEquals(other, null)) { return false; } return m_provider.Equals(other.Provider); } public override int GetHashCode() { Contract.Assert(m_provider != null); return m_provider.GetHashCode(); } public override string ToString() { Contract.Assert(m_provider != null); return m_provider.ToString(); } // // Well known NCrypt KSPs // [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "CardKey", Justification = "This is not 'Smart Cardkey', but 'Smart Card Key'")] [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "SmartCard", Justification = "Smart Card is two words in the ncrypt usage")] public static CngProvider MicrosoftSmartCardKeyStorageProvider { get { Contract.Ensures(Contract.Result () != null); if (s_msSmartCardKsp == null) { s_msSmartCardKsp = new CngProvider("Microsoft Smart Card Key Storage Provider"); // MS_SMART_CARD_KEY_STORAGE_PROVIDER } return s_msSmartCardKsp; } } public static CngProvider MicrosoftSoftwareKeyStorageProvider { get { Contract.Ensures(Contract.Result () != null); if (s_msSoftwareKsp == null) { s_msSoftwareKsp = new CngProvider("Microsoft Software Key Storage Provider"); // MS_KEY_STORAGE_PROVIDER } return s_msSoftwareKsp; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== using System; using System.Diagnostics.CodeAnalysis; using System.Diagnostics.Contracts; namespace System.Security.Cryptography { /// /// Utility class to strongly type providers used with CNG. Since all CNG APIs which require a /// provider name take the name as a string, we use this string wrapper class to specifically mark /// which parameters are expected to be providers. We also provide a list of well known provider /// names, which helps Intellisense users find a set of good providernames to use. /// [Serializable] [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)] public sealed class CngProvider : IEquatable{ private static CngProvider s_msSmartCardKsp; private static CngProvider s_msSoftwareKsp; private string m_provider; public CngProvider(string provider) { Contract.Ensures(!String.IsNullOrEmpty(m_provider)); if (provider == null) { throw new ArgumentNullException("provider"); } if (provider.Length == 0) { throw new ArgumentException(SR.GetString(SR.Cryptography_InvalidProviderName, provider), "provider"); } m_provider = provider; } /// /// Name of the CNG provider /// public string Provider { get { Contract.Ensures(!String.IsNullOrEmpty(Contract.Result())); return m_provider; } } public static bool operator ==(CngProvider left, CngProvider right) { if (Object.ReferenceEquals(left, null)) { return Object.ReferenceEquals(right, null); } return left.Equals(right); } [Pure] public static bool operator !=(CngProvider left, CngProvider right) { if (Object.ReferenceEquals(left, null)) { return !Object.ReferenceEquals(right, null); } return !left.Equals(right); } public override bool Equals(object obj) { Contract.Assert(m_provider != null); return Equals(obj as CngProvider); } public bool Equals(CngProvider other) { if (Object.ReferenceEquals(other, null)) { return false; } return m_provider.Equals(other.Provider); } public override int GetHashCode() { Contract.Assert(m_provider != null); return m_provider.GetHashCode(); } public override string ToString() { Contract.Assert(m_provider != null); return m_provider.ToString(); } // // Well known NCrypt KSPs // [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "CardKey", Justification = "This is not 'Smart Cardkey', but 'Smart Card Key'")] [SuppressMessage("Microsoft.Naming", "CA1702:CompoundWordsShouldBeCasedCorrectly", MessageId = "SmartCard", Justification = "Smart Card is two words in the ncrypt usage")] public static CngProvider MicrosoftSmartCardKeyStorageProvider { get { Contract.Ensures(Contract.Result () != null); if (s_msSmartCardKsp == null) { s_msSmartCardKsp = new CngProvider("Microsoft Smart Card Key Storage Provider"); // MS_SMART_CARD_KEY_STORAGE_PROVIDER } return s_msSmartCardKsp; } } public static CngProvider MicrosoftSoftwareKeyStorageProvider { get { Contract.Ensures(Contract.Result () != null); if (s_msSoftwareKsp == null) { s_msSoftwareKsp = new CngProvider("Microsoft Software Key Storage Provider"); // MS_KEY_STORAGE_PROVIDER } return s_msSoftwareKsp; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SecurityTokenSerializer.cs
- PropertyTab.cs
- MimeMapping.cs
- ServerIdentity.cs
- EvidenceBase.cs
- XPathEmptyIterator.cs
- UserPreferenceChangingEventArgs.cs
- updateconfighost.cs
- exports.cs
- BasicHttpMessageSecurity.cs
- AssociationSet.cs
- PrinterResolution.cs
- FixedPage.cs
- DataGridViewColumnCollection.cs
- SafeWaitHandle.cs
- contentDescriptor.cs
- BooleanAnimationUsingKeyFrames.cs
- UserControl.cs
- ListSortDescriptionCollection.cs
- PictureBox.cs
- MultiViewDesigner.cs
- DataColumnMappingCollection.cs
- MenuRendererClassic.cs
- ArglessEventHandlerProxy.cs
- NavigationPropertyEmitter.cs
- RuleRefElement.cs
- RelationshipConverter.cs
- CustomErrorsSectionWrapper.cs
- MemoryStream.cs
- TextChange.cs
- WebPermission.cs
- HtmlForm.cs
- MergePropertyDescriptor.cs
- DispatcherSynchronizationContext.cs
- CollectionViewGroupInternal.cs
- BufferedWebEventProvider.cs
- _HelperAsyncResults.cs
- SystemInfo.cs
- TableStyle.cs
- Operators.cs
- TabControl.cs
- NamespaceImport.cs
- ValidationRule.cs
- MasterPageCodeDomTreeGenerator.cs
- HwndProxyElementProvider.cs
- XmlSchemaInfo.cs
- WindowsAuthenticationModule.cs
- DataGridViewIntLinkedList.cs
- CompiledAction.cs
- DocumentPaginator.cs
- BuildProvider.cs
- DefaultValueTypeConverter.cs
- ImpersonationContext.cs
- XmlAtomicValue.cs
- ValueUnavailableException.cs
- WindowsSolidBrush.cs
- HMACSHA1.cs
- DoubleStorage.cs
- COM2PropertyDescriptor.cs
- XPathNodeHelper.cs
- HtmlInputSubmit.cs
- XPathNode.cs
- IssuedTokenClientBehaviorsElement.cs
- SafeNativeHandle.cs
- WebRequest.cs
- BindingGroup.cs
- RTLAwareMessageBox.cs
- RegisteredArrayDeclaration.cs
- hwndwrapper.cs
- ReadOnlyTernaryTree.cs
- TripleDES.cs
- ColorInterpolationModeValidation.cs
- CryptographicAttribute.cs
- XmlQueryOutput.cs
- DispatcherExceptionEventArgs.cs
- ProcessRequestArgs.cs
- DynamicMethod.cs
- BasicHttpMessageSecurity.cs
- MSAAEventDispatcher.cs
- NativeMethodsOther.cs
- GeometryDrawing.cs
- XmlSchemaCollection.cs
- RepeaterItem.cs
- WriteTimeStream.cs
- ResXResourceReader.cs
- XmlAttributeOverrides.cs
- ShimAsPublicXamlType.cs
- DependencyObjectProvider.cs
- PrintControllerWithStatusDialog.cs
- TextTreeFixupNode.cs
- CngUIPolicy.cs
- WindowProviderWrapper.cs
- CompositeControl.cs
- SerialReceived.cs
- DataBindingHandlerAttribute.cs
- shaperfactoryquerycacheentry.cs
- CompilerErrorCollection.cs
- InheritedPropertyChangedEventArgs.cs
- SHA384.cs
- DBConnectionString.cs