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
- NullRuntimeConfig.cs
- XmlIlGenerator.cs
- FileDetails.cs
- Underline.cs
- PropertyGroupDescription.cs
- CanonicalFontFamilyReference.cs
- IntegerCollectionEditor.cs
- Int16Animation.cs
- StagingAreaInputItem.cs
- SchemaTypeEmitter.cs
- DocumentGridContextMenu.cs
- XsdValidatingReader.cs
- AsyncPostBackTrigger.cs
- Point3DConverter.cs
- DoubleKeyFrameCollection.cs
- HtmlInputPassword.cs
- SymbolEqualComparer.cs
- StringBlob.cs
- XmlElement.cs
- ListDictionaryInternal.cs
- ObjectSet.cs
- SecurityException.cs
- DrawingAttributesDefaultValueFactory.cs
- HealthMonitoringSection.cs
- EntityDesignerBuildProvider.cs
- MetadataPropertyCollection.cs
- SqlConnectionStringBuilder.cs
- DynamicResourceExtension.cs
- TextRenderer.cs
- DataSourceXmlSubItemAttribute.cs
- TrustLevel.cs
- ExpandCollapseProviderWrapper.cs
- ResourceContainer.cs
- DiagnosticEventProvider.cs
- TypeContext.cs
- _CookieModule.cs
- AutomationAttributeInfo.cs
- MaskPropertyEditor.cs
- AddInControllerImpl.cs
- HScrollBar.cs
- XmlChoiceIdentifierAttribute.cs
- coordinator.cs
- ZipIOCentralDirectoryBlock.cs
- PackageProperties.cs
- SQLDoubleStorage.cs
- PictureBox.cs
- ToolboxComponentsCreatingEventArgs.cs
- MSG.cs
- StringWriter.cs
- ResourcesChangeInfo.cs
- StringSource.cs
- TrackingConditionCollection.cs
- ExceptionWrapper.cs
- EdmRelationshipRoleAttribute.cs
- ConstNode.cs
- XmlObjectSerializerReadContext.cs
- CodeCommentStatementCollection.cs
- StylusCaptureWithinProperty.cs
- ManagementEventArgs.cs
- GridItemPattern.cs
- RepeaterCommandEventArgs.cs
- XmlDictionary.cs
- SyndicationDeserializer.cs
- ProcessThread.cs
- SortKey.cs
- QilVisitor.cs
- SafeArrayTypeMismatchException.cs
- LockCookie.cs
- ElementUtil.cs
- StrongNameUtility.cs
- BufferedReadStream.cs
- SafeFileMappingHandle.cs
- Activator.cs
- NameTable.cs
- DBConnectionString.cs
- XsltQilFactory.cs
- OdbcConnectionStringbuilder.cs
- MetaModel.cs
- SqlCacheDependencyDatabase.cs
- RedistVersionInfo.cs
- StringReader.cs
- RowParagraph.cs
- CqlBlock.cs
- WindowsRegion.cs
- EntityDataSourceEntityTypeFilterConverter.cs
- Function.cs
- DefaultEvaluationContext.cs
- ValueSerializerAttribute.cs
- InternalConfigHost.cs
- PageStatePersister.cs
- WindowProviderWrapper.cs
- PeerTransportListenAddressConverter.cs
- PathSegmentCollection.cs
- ObjectStateManager.cs
- HttpContextBase.cs
- BoolExpression.cs
- ProtocolsSection.cs
- TcpHostedTransportConfiguration.cs
- StyleBamlRecordReader.cs
- XmlKeywords.cs