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
- ScriptServiceAttribute.cs
- WebPartsPersonalizationAuthorization.cs
- InheritedPropertyDescriptor.cs
- SecurityElement.cs
- UnmanagedMarshal.cs
- ConnectionManagementSection.cs
- CatalogPart.cs
- ControlBindingsCollection.cs
- HttpPostProtocolImporter.cs
- GridSplitter.cs
- autovalidator.cs
- WebBrowserDesigner.cs
- ConfigurationPropertyCollection.cs
- EncoderNLS.cs
- nulltextnavigator.cs
- _WebProxyDataBuilder.cs
- RadioButton.cs
- CacheMode.cs
- DictionaryItemsCollection.cs
- ListItem.cs
- TouchFrameEventArgs.cs
- DataContractFormatAttribute.cs
- EmbeddedMailObjectsCollection.cs
- DefaultShape.cs
- TextPenaltyModule.cs
- DataSourceSelectArguments.cs
- Point3D.cs
- StorageAssociationSetMapping.cs
- StringComparer.cs
- DynamicValueConverter.cs
- MailSettingsSection.cs
- MessagePropertyFilter.cs
- UserPersonalizationStateInfo.cs
- _ConnectionGroup.cs
- Faults.cs
- FilterEventArgs.cs
- MyContact.cs
- OutgoingWebResponseContext.cs
- ProgressChangedEventArgs.cs
- MenuItemAutomationPeer.cs
- log.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- Page.cs
- Number.cs
- InteropDesigner.xaml.cs
- _TLSstream.cs
- FixedFindEngine.cs
- CalloutQueueItem.cs
- EntityDataSourceWrapperPropertyDescriptor.cs
- FileFormatException.cs
- Convert.cs
- GridViewEditEventArgs.cs
- EncoderNLS.cs
- WebPartHelpVerb.cs
- GeneratedView.cs
- ValidatedControlConverter.cs
- CommandEventArgs.cs
- StringUtil.cs
- TextFormatterHost.cs
- KeyInstance.cs
- DataReaderContainer.cs
- CustomAttribute.cs
- MouseGesture.cs
- UnsafeNativeMethods.cs
- CompilerScope.cs
- BaseDataList.cs
- CheckBox.cs
- SpecularMaterial.cs
- TemplateControlParser.cs
- EncoderExceptionFallback.cs
- DataSourceGroupCollection.cs
- _CookieModule.cs
- DataTableExtensions.cs
- XmlSchemaAttributeGroup.cs
- SiteMapNode.cs
- Thumb.cs
- ValueType.cs
- DelegateSerializationHolder.cs
- AutomationElementCollection.cs
- KoreanLunisolarCalendar.cs
- XmlDataLoader.cs
- SizeFConverter.cs
- ThousandthOfEmRealPoints.cs
- StylusButtonEventArgs.cs
- Decimal.cs
- ListComponentEditor.cs
- OutputCacheProfile.cs
- AutomationPropertyInfo.cs
- InternalDispatchObject.cs
- SQLSingle.cs
- RawUIStateInputReport.cs
- SamlAssertion.cs
- SafeNativeMethods.cs
- KeyValuePair.cs
- GetMemberBinder.cs
- XMLSyntaxException.cs
- HtmlInputHidden.cs
- ValidationPropertyAttribute.cs
- XmlSchemaSimpleContentRestriction.cs
- PriorityQueue.cs