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
- SmtpLoginAuthenticationModule.cs
- Accessible.cs
- ValueQuery.cs
- ArithmeticException.cs
- PartialList.cs
- TextWriter.cs
- ShellProvider.cs
- FullTrustAssemblyCollection.cs
- SAPICategories.cs
- XsltContext.cs
- WebPartManager.cs
- RecognitionResult.cs
- DBBindings.cs
- EntityDataSourceContextCreatedEventArgs.cs
- PersistChildrenAttribute.cs
- URIFormatException.cs
- TypeUtils.cs
- QilReplaceVisitor.cs
- ContextStack.cs
- AssociationTypeEmitter.cs
- EdmValidator.cs
- SemanticAnalyzer.cs
- CompilationRelaxations.cs
- SHA256Managed.cs
- CoreChannel.cs
- Stacktrace.cs
- HttpRequestWrapper.cs
- ExpressionBuilderContext.cs
- Formatter.cs
- SoapEnvelopeProcessingElement.cs
- FieldAccessException.cs
- GroupJoinQueryOperator.cs
- SurrogateSelector.cs
- ReferencedType.cs
- NullReferenceException.cs
- AssemblyResourceLoader.cs
- ThousandthOfEmRealPoints.cs
- NativeMethods.cs
- RegexGroupCollection.cs
- SharedRuntimeState.cs
- InternalMappingException.cs
- IPipelineRuntime.cs
- ApplicationCommands.cs
- BitmapDownload.cs
- CLSCompliantAttribute.cs
- Help.cs
- PKCS1MaskGenerationMethod.cs
- SelectionProviderWrapper.cs
- DataGrid.cs
- DropTarget.cs
- AppearanceEditorPart.cs
- CreateSequence.cs
- DataSetFieldSchema.cs
- LaxModeSecurityHeaderElementInferenceEngine.cs
- StackOverflowException.cs
- GridItemPatternIdentifiers.cs
- ParseChildrenAsPropertiesAttribute.cs
- SchemaName.cs
- activationcontext.cs
- ServerValidateEventArgs.cs
- CompressedStack.cs
- PropertyPath.cs
- GeneralTransform3DTo2D.cs
- TreeNodeBinding.cs
- SerializationTrace.cs
- AuthenticatedStream.cs
- DataPagerFieldCollection.cs
- Color.cs
- SessionIDManager.cs
- TextRange.cs
- CodeDelegateInvokeExpression.cs
- FilterQuery.cs
- PointUtil.cs
- BamlLocalizableResource.cs
- GroupBox.cs
- DependencyPropertyKind.cs
- ModelProperty.cs
- DoubleAnimationClockResource.cs
- ExpressionBindingCollection.cs
- HttpValueCollection.cs
- DecimalAnimationUsingKeyFrames.cs
- CheckBoxPopupAdapter.cs
- wgx_render.cs
- ClipboardData.cs
- KeyedCollection.cs
- ListSourceHelper.cs
- ResourceContainer.cs
- IfElseDesigner.xaml.cs
- PenContexts.cs
- DesignerDataView.cs
- ParameterCollection.cs
- RecognizerStateChangedEventArgs.cs
- IfAction.cs
- _Rfc2616CacheValidators.cs
- SqlErrorCollection.cs
- ExpressionConverter.cs
- ExpressionVisitorHelpers.cs
- PeerConnector.cs
- GridItemPattern.cs
- AssemblyBuilder.cs