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
- StylusEventArgs.cs
- BaseCollection.cs
- DataStreamFromComStream.cs
- WpfPayload.cs
- XmlParser.cs
- FlowDocumentPage.cs
- ViewManager.cs
- StartFileNameEditor.cs
- CryptoApi.cs
- Facet.cs
- ClassImporter.cs
- RowBinding.cs
- WindowsFormsHostAutomationPeer.cs
- ViewStateModeByIdAttribute.cs
- XmlValueConverter.cs
- WebBrowserNavigatingEventHandler.cs
- TokenFactoryCredential.cs
- DataServiceRequestException.cs
- ContractMapping.cs
- NonSerializedAttribute.cs
- SerializationSectionGroup.cs
- AsyncSerializedWorker.cs
- ExpressionHelper.cs
- DataTableTypeConverter.cs
- CompensatableTransactionScopeActivityDesigner.cs
- FormClosedEvent.cs
- ZoneIdentityPermission.cs
- IteratorFilter.cs
- PrinterResolution.cs
- MetafileHeader.cs
- HttpServerChannel.cs
- GridViewPageEventArgs.cs
- MoveSizeWinEventHandler.cs
- DefaultBinder.cs
- ScriptReferenceBase.cs
- WindowsSlider.cs
- Vector3DIndependentAnimationStorage.cs
- StylusPointProperties.cs
- WebConfigurationHost.cs
- WebDisplayNameAttribute.cs
- ReadOnlyTernaryTree.cs
- StylusCollection.cs
- QilIterator.cs
- LoginCancelEventArgs.cs
- InvalidOleVariantTypeException.cs
- Triangle.cs
- ByteAnimationUsingKeyFrames.cs
- SortQuery.cs
- Timer.cs
- ClipboardData.cs
- LostFocusEventManager.cs
- PolyLineSegmentFigureLogic.cs
- WebPartsPersonalization.cs
- RelationshipWrapper.cs
- DeviceContext.cs
- Point3DIndependentAnimationStorage.cs
- CleanUpVirtualizedItemEventArgs.cs
- Script.cs
- _NtlmClient.cs
- DataSetSchema.cs
- UpDownBase.cs
- CqlGenerator.cs
- ProcessActivityTreeOptions.cs
- UserPersonalizationStateInfo.cs
- TraceSection.cs
- ReadOnlyPermissionSet.cs
- DateTimeConstantAttribute.cs
- WebPartConnectionsConnectVerb.cs
- WinEventTracker.cs
- PrimaryKeyTypeConverter.cs
- UInt32Converter.cs
- Menu.cs
- SqlBuilder.cs
- DataPagerFieldItem.cs
- EmulateRecognizeCompletedEventArgs.cs
- LinearQuaternionKeyFrame.cs
- PropertyDescriptorGridEntry.cs
- DataSourceBooleanViewSchemaConverter.cs
- TextOptionsInternal.cs
- _LazyAsyncResult.cs
- SoapIncludeAttribute.cs
- SqlDataRecord.cs
- EntityContainerEmitter.cs
- brushes.cs
- CultureInfo.cs
- OdbcConnectionHandle.cs
- FileEnumerator.cs
- input.cs
- RTLAwareMessageBox.cs
- WebEventCodes.cs
- EpmSyndicationContentSerializer.cs
- GetImportedCardRequest.cs
- ActivityUtilities.cs
- MsdtcWrapper.cs
- DbFunctionCommandTree.cs
- WebPartExportVerb.cs
- HttpServerUtilityBase.cs
- Event.cs
- XmlSchemaObject.cs
- ObjectDataSourceFilteringEventArgs.cs