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
- SelectedDatesCollection.cs
- WaveHeader.cs
- GlobalProxySelection.cs
- Odbc32.cs
- RoutedCommand.cs
- TransactionProtocol.cs
- MILUtilities.cs
- ImageListImage.cs
- RewritingProcessor.cs
- NumericUpDownAccelerationCollection.cs
- CultureInfoConverter.cs
- DrawingGroupDrawingContext.cs
- _BufferOffsetSize.cs
- XmlAtomicValue.cs
- SelectionHighlightInfo.cs
- ToolStripOverflowButton.cs
- KeyValuePair.cs
- CurrentTimeZone.cs
- AspNetRouteServiceHttpHandler.cs
- SafeLocalMemHandle.cs
- PrintingPermission.cs
- WpfWebRequestHelper.cs
- EventLogWatcher.cs
- CachedPathData.cs
- TextServicesLoader.cs
- TextServicesHost.cs
- JsonSerializer.cs
- PrtCap_Reader.cs
- DataGridViewColumnCollection.cs
- BamlRecordWriter.cs
- ConstraintCollection.cs
- DynamicValueConverter.cs
- TemplateComponentConnector.cs
- KeyValueSerializer.cs
- AtomMaterializerLog.cs
- PagesChangedEventArgs.cs
- ListViewInsertionMark.cs
- CopyOnWriteList.cs
- SystemColorTracker.cs
- SelectionProcessor.cs
- EtwTrace.cs
- SqlClientWrapperSmiStream.cs
- CommittableTransaction.cs
- Attributes.cs
- SQLBytesStorage.cs
- UnsafeNativeMethods.cs
- EntityCommand.cs
- Byte.cs
- TextRangeProviderWrapper.cs
- EdmComplexTypeAttribute.cs
- UIElement.cs
- SecurityStateEncoder.cs
- WebServiceClientProxyGenerator.cs
- HitTestDrawingContextWalker.cs
- Image.cs
- TraceData.cs
- FrameworkElementFactory.cs
- PinnedBufferMemoryStream.cs
- ListSortDescription.cs
- UserControlParser.cs
- MemoryResponseElement.cs
- RoleManagerSection.cs
- Vector3D.cs
- AssemblyCache.cs
- LogReservationCollection.cs
- DBSqlParser.cs
- CollectionCodeDomSerializer.cs
- EncoderParameter.cs
- UnionCqlBlock.cs
- MeasureItemEvent.cs
- ImageListDesigner.cs
- XmlSchemaSequence.cs
- KeyGestureConverter.cs
- FrugalMap.cs
- CodeDirectiveCollection.cs
- TextDecorationCollection.cs
- SplineQuaternionKeyFrame.cs
- ScriptComponentDescriptor.cs
- AsyncResult.cs
- EarlyBoundInfo.cs
- TraceContext.cs
- FrugalList.cs
- TableLayoutColumnStyleCollection.cs
- SecurityDescriptor.cs
- SRef.cs
- MarshalByRefObject.cs
- DbConnectionPoolGroup.cs
- QilScopedVisitor.cs
- InvalidEnumArgumentException.cs
- ColumnResult.cs
- TreeViewCancelEvent.cs
- ItemAutomationPeer.cs
- XPathDocumentIterator.cs
- UrlMappingCollection.cs
- AttributeData.cs
- TextProperties.cs
- StickyNote.cs
- CallTemplateAction.cs
- UriSection.cs
- TreeBuilderXamlTranslator.cs