Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Security / Cryptography / CngAlgorithmGroup.cs / 1305376 / CngAlgorithmGroup.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== using System; using System.Diagnostics.Contracts; namespace System.Security.Cryptography { ////// Utility class to strongly type algorithm groups used with CNG. Since all CNG APIs which require or /// return an algorithm group name take the name as a string, we use this string wrapper class to /// specifically mark which parameters and return values are expected to be algorithm groups. We also /// provide a list of well known algorithm group names, which helps Intellisense users find a set of /// good algorithm group names to use. /// [Serializable] [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)] public sealed class CngAlgorithmGroup : IEquatable{ private static CngAlgorithmGroup s_dh; private static CngAlgorithmGroup s_dsa; private static CngAlgorithmGroup s_ecdh; private static CngAlgorithmGroup s_ecdsa; private static CngAlgorithmGroup s_rsa; private string m_algorithmGroup; public CngAlgorithmGroup(string algorithmGroup) { Contract.Ensures(!String.IsNullOrEmpty(m_algorithmGroup)); if (algorithmGroup == null) { throw new ArgumentNullException("algorithmGroup"); } if (algorithmGroup.Length == 0) { throw new ArgumentException(SR.GetString(SR.Cryptography_InvalidAlgorithmGroup, algorithmGroup), "algorithmGroup"); } m_algorithmGroup = algorithmGroup; } /// /// Name of the algorithm group /// public string AlgorithmGroup { get { Contract.Ensures(!String.IsNullOrEmpty(Contract.Result())); return m_algorithmGroup; } } [Pure] public static bool operator ==(CngAlgorithmGroup left, CngAlgorithmGroup right) { if (Object.ReferenceEquals(left, null)) { return Object.ReferenceEquals(right, null); } return left.Equals(right); } [Pure] public static bool operator !=(CngAlgorithmGroup left, CngAlgorithmGroup right) { if (Object.ReferenceEquals(left, null)) { return !Object.ReferenceEquals(right, null); } return !left.Equals(right); } public override bool Equals(object obj) { Contract.Assert(m_algorithmGroup != null); return Equals(obj as CngAlgorithmGroup); } public bool Equals(CngAlgorithmGroup other) { if (Object.ReferenceEquals(other, null)) { return false; } return m_algorithmGroup.Equals(other.AlgorithmGroup); } public override int GetHashCode() { Contract.Assert(m_algorithmGroup != null); return m_algorithmGroup.GetHashCode(); } public override string ToString() { Contract.Assert(m_algorithmGroup != null); return m_algorithmGroup; } // // Well known algorithm groups // public static CngAlgorithmGroup DiffieHellman { get { Contract.Ensures(Contract.Result () != null); if (s_dh == null) { s_dh = new CngAlgorithmGroup("DH"); // NCRYPT_DH_ALGORITHM_GROUP } return s_dh; } } public static CngAlgorithmGroup Dsa { get { Contract.Ensures(Contract.Result () != null); if (s_dsa == null) { s_dsa = new CngAlgorithmGroup("DSA"); // NCRYPT_DSA_ALGORITHM_GROUP } return s_dsa; } } public static CngAlgorithmGroup ECDiffieHellman { [Pure] get { Contract.Ensures(Contract.Result () != null); if (s_ecdh == null) { s_ecdh = new CngAlgorithmGroup("ECDH"); // NCRYPT_ECDH_ALGORITHM_GROUP } return s_ecdh; } } public static CngAlgorithmGroup ECDsa { [Pure] get { Contract.Ensures(Contract.Result () != null); if (s_ecdsa == null) { s_ecdsa = new CngAlgorithmGroup("ECDSA"); // NCRYPT_ECDSA_ALGORITHM_GROUP } return s_ecdsa; } } public static CngAlgorithmGroup Rsa { get { Contract.Ensures(Contract.Result () != null); if (s_rsa == null) { s_rsa = new CngAlgorithmGroup("RSA"); // NCRYPT_RSA_ALGORITHM_GROUP } return s_rsa; } } } } // 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
- SchemaCollectionCompiler.cs
- XamlVector3DCollectionSerializer.cs
- DefaultAsyncDataDispatcher.cs
- IssuedTokensHeader.cs
- ValidatingPropertiesEventArgs.cs
- HealthMonitoringSection.cs
- JpegBitmapEncoder.cs
- ModuleElement.cs
- TrustManagerMoreInformation.cs
- DropShadowBitmapEffect.cs
- SqlProfileProvider.cs
- StringToken.cs
- CodeDOMProvider.cs
- NumericPagerField.cs
- FlowDocumentPageViewerAutomationPeer.cs
- SafeRightsManagementPubHandle.cs
- PerfCounters.cs
- CompoundFileStorageReference.cs
- Comparer.cs
- MaskedTextProvider.cs
- EnumBuilder.cs
- AnimatedTypeHelpers.cs
- XmlSerializer.cs
- DataGridViewTextBoxCell.cs
- CompositeFontParser.cs
- WebPartEventArgs.cs
- Tablet.cs
- LinkUtilities.cs
- HttpContextServiceHost.cs
- SurrogateSelector.cs
- Keywords.cs
- PermissionRequestEvidence.cs
- LinqDataSourceUpdateEventArgs.cs
- HandleCollector.cs
- ListBoxItemWrapperAutomationPeer.cs
- SoapCommonClasses.cs
- WindowsPen.cs
- LifetimeServices.cs
- SizeKeyFrameCollection.cs
- ProcessInfo.cs
- SchemaInfo.cs
- ValidatorCollection.cs
- WindowHideOrCloseTracker.cs
- QilPatternFactory.cs
- EDesignUtil.cs
- TextWriter.cs
- ExpanderAutomationPeer.cs
- BitmapEffectDrawingContextState.cs
- EncoderParameters.cs
- PathParser.cs
- ExtentCqlBlock.cs
- MembershipSection.cs
- XmlChildEnumerator.cs
- InheritanceAttribute.cs
- EntityDataSourceState.cs
- ContextProperty.cs
- DependencyObjectProvider.cs
- ManagedFilter.cs
- ResourceReferenceExpression.cs
- BigIntegerStorage.cs
- TransactionScope.cs
- ToolStripStatusLabel.cs
- ResourceExpressionBuilder.cs
- ParsedAttributeCollection.cs
- CapabilitiesSection.cs
- UserPreferenceChangedEventArgs.cs
- EnvelopedPkcs7.cs
- DiffuseMaterial.cs
- EventRouteFactory.cs
- DefaultAsyncDataDispatcher.cs
- Queue.cs
- Decimal.cs
- coordinatorfactory.cs
- EnumerableRowCollection.cs
- PropertyManager.cs
- FormDocumentDesigner.cs
- Vector3DIndependentAnimationStorage.cs
- TemplatedControlDesigner.cs
- Int32.cs
- Form.cs
- EventTask.cs
- TableRow.cs
- UrlAuthorizationModule.cs
- PassportAuthenticationEventArgs.cs
- DocumentViewerAutomationPeer.cs
- TranslateTransform.cs
- WinEventTracker.cs
- TrustSection.cs
- RelationshipEndCollection.cs
- TextElement.cs
- ContractSearchPattern.cs
- XslTransformFileEditor.cs
- DBSqlParserTableCollection.cs
- odbcmetadatafactory.cs
- CheckableControlBaseAdapter.cs
- ContentHostHelper.cs
- ObjectStateFormatter.cs
- WebPartAuthorizationEventArgs.cs
- InfiniteTimeSpanConverter.cs
- Emitter.cs