Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DSASignatureFormatter.cs
- MachineKeySection.cs
- XmlSchemaFacet.cs
- WebHeaderCollection.cs
- QilXmlReader.cs
- MessageContractAttribute.cs
- ColorPalette.cs
- ServiceDescriptionReflector.cs
- FieldToken.cs
- InputScopeAttribute.cs
- KeySplineConverter.cs
- QueryResult.cs
- XmlBoundElement.cs
- OptimizedTemplateContentHelper.cs
- AnnotationAdorner.cs
- DropTarget.cs
- InputLanguageEventArgs.cs
- SqlBulkCopyColumnMapping.cs
- DesignerDeviceConfig.cs
- WebPartTransformerAttribute.cs
- MultiPageTextView.cs
- WebPartEditorCancelVerb.cs
- KeyValueInternalCollection.cs
- GenericParameterDataContract.cs
- AppModelKnownContentFactory.cs
- TextSelectionHighlightLayer.cs
- AttributeProviderAttribute.cs
- EqualityArray.cs
- FormDocumentDesigner.cs
- Vector.cs
- NavigationProperty.cs
- Flattener.cs
- ProgressBarAutomationPeer.cs
- FreezableDefaultValueFactory.cs
- SmtpReplyReaderFactory.cs
- SwitchAttribute.cs
- CodeComment.cs
- ResXResourceSet.cs
- Message.cs
- ServiceBuildProvider.cs
- ComponentEvent.cs
- DataGridItemEventArgs.cs
- SubstitutionDesigner.cs
- Funcletizer.cs
- SurrogateEncoder.cs
- PipelineModuleStepContainer.cs
- XsdDataContractImporter.cs
- Label.cs
- LinkArea.cs
- ControlOperationBehavior.cs
- KeyInfo.cs
- XhtmlBasicListAdapter.cs
- InternalsVisibleToAttribute.cs
- ContextConfiguration.cs
- InputMethodStateChangeEventArgs.cs
- PassportAuthenticationModule.cs
- MatrixStack.cs
- SrgsGrammar.cs
- StateDesigner.CommentLayoutGlyph.cs
- Accessible.cs
- EditorBrowsableAttribute.cs
- RealizationContext.cs
- ColorMap.cs
- isolationinterop.cs
- SafeCoTaskMem.cs
- TextEditorSpelling.cs
- CacheAxisQuery.cs
- XamlReaderHelper.cs
- HyperLinkStyle.cs
- HttpListenerPrefixCollection.cs
- DbTransaction.cs
- XamlTreeBuilderBamlRecordWriter.cs
- IndicShape.cs
- SecurityDocument.cs
- Clause.cs
- HttpAsyncResult.cs
- PartialCachingControl.cs
- ToolStripDropTargetManager.cs
- MediaCommands.cs
- ResolveCriteria.cs
- ValueTable.cs
- FloatAverageAggregationOperator.cs
- TreeViewImageIndexConverter.cs
- MethodExecutor.cs
- AppSettingsSection.cs
- Asn1IntegerConverter.cs
- XmlWrappingReader.cs
- State.cs
- DrawListViewColumnHeaderEventArgs.cs
- ContentElement.cs
- FontStretches.cs
- PeerTransportBindingElement.cs
- Win32.cs
- DiscoveryDocumentSearchPattern.cs
- IERequestCache.cs
- DatasetMethodGenerator.cs
- MeasureData.cs
- UIPropertyMetadata.cs
- OdbcPermission.cs
- PolicyVersionConverter.cs