Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / System / Security / Cryptography / CngKeyBlobFormat.cs / 1305376 / CngKeyBlobFormat.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== using System; using System.Diagnostics.Contracts; namespace System.Security.Cryptography { ////// Utility class to strongly type the format of key blobs used with CNG. Since all CNG APIs which /// require or return a key blob format take the name as a string, we use this string wrapper class to /// specifically mark which parameters and return values are expected to be key blob formats. We also /// provide a list of well known blob formats, which helps Intellisense users find a set of good blob /// formats to use. /// [Serializable] [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)] public sealed class CngKeyBlobFormat : IEquatable{ private static CngKeyBlobFormat s_eccPrivate; private static CngKeyBlobFormat s_eccPublic; private static CngKeyBlobFormat s_genericPrivate; private static CngKeyBlobFormat s_genericPublic; private static CngKeyBlobFormat s_opaqueTransport; private static CngKeyBlobFormat s_pkcs8Private; private string m_format; public CngKeyBlobFormat(string format) { Contract.Ensures(!String.IsNullOrEmpty(m_format)); if (format == null) { throw new ArgumentNullException("format"); } if (format.Length == 0) { throw new ArgumentException(SR.GetString(SR.Cryptography_InvalidKeyBlobFormat, format), "format"); } m_format = format; } /// /// Name of the blob format /// public string Format { get { Contract.Ensures(!String.IsNullOrEmpty(Contract.Result())); return m_format; } } public static bool operator ==(CngKeyBlobFormat left, CngKeyBlobFormat right) { if (Object.ReferenceEquals(left, null)) { return Object.ReferenceEquals(right, null); } return left.Equals(right); } [Pure] public static bool operator !=(CngKeyBlobFormat left, CngKeyBlobFormat right) { if (Object.ReferenceEquals(left, null)) { return !Object.ReferenceEquals(right, null); } return !left.Equals(right); } public override bool Equals(object obj) { Contract.Assert(m_format != null); return Equals(obj as CngKeyBlobFormat); } public bool Equals(CngKeyBlobFormat other) { if (Object.ReferenceEquals(other, null)) { return false; } return m_format.Equals(other.Format); } public override int GetHashCode() { Contract.Assert(m_format != null); return m_format.GetHashCode(); } public override string ToString() { Contract.Assert(m_format != null); return m_format; } // // Well known key blob formats // public static CngKeyBlobFormat EccPrivateBlob { get { Contract.Ensures(Contract.Result () != null); if (s_eccPrivate == null) { s_eccPrivate = new CngKeyBlobFormat("ECCPRIVATEBLOB"); // BCRYPT_ECCPRIVATE_BLOB } return s_eccPrivate; } } public static CngKeyBlobFormat EccPublicBlob { get { Contract.Ensures(Contract.Result () != null); if (s_eccPublic == null) { s_eccPublic = new CngKeyBlobFormat("ECCPUBLICBLOB"); // BCRYPT_ECCPUBLIC_BLOB } return s_eccPublic; } } public static CngKeyBlobFormat GenericPrivateBlob { get { Contract.Ensures(Contract.Result () != null); if (s_genericPrivate == null) { s_genericPrivate = new CngKeyBlobFormat("PRIVATEBLOB"); // BCRYPT_PRIVATE_KEY_BLOB } return s_genericPrivate; } } public static CngKeyBlobFormat GenericPublicBlob { get { Contract.Ensures(Contract.Result () != null); if (s_genericPublic == null) { s_genericPublic = new CngKeyBlobFormat("PUBLICBLOB"); // BCRYPT_PUBLIC_KEY_BLOB } return s_genericPublic; } } public static CngKeyBlobFormat OpaqueTransportBlob { get { Contract.Ensures(Contract.Result () != null); if (s_opaqueTransport == null) { s_opaqueTransport = new CngKeyBlobFormat("OpaqueTransport"); // NCRYPT_OPAQUETRANSPORT_BLOB } return s_opaqueTransport; } } public static CngKeyBlobFormat Pkcs8PrivateBlob { get { Contract.Ensures(Contract.Result () != null); if (s_pkcs8Private == null) { s_pkcs8Private = new CngKeyBlobFormat("PKCS8_PRIVATEKEY"); // NCRYPT_PKCS8_PRIVATE_KEY_BLOB } return s_pkcs8Private; } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== using System; using System.Diagnostics.Contracts; namespace System.Security.Cryptography { /// /// Utility class to strongly type the format of key blobs used with CNG. Since all CNG APIs which /// require or return a key blob format take the name as a string, we use this string wrapper class to /// specifically mark which parameters and return values are expected to be key blob formats. We also /// provide a list of well known blob formats, which helps Intellisense users find a set of good blob /// formats to use. /// [Serializable] [System.Security.Permissions.HostProtection(MayLeakOnAbort = true)] public sealed class CngKeyBlobFormat : IEquatable{ private static CngKeyBlobFormat s_eccPrivate; private static CngKeyBlobFormat s_eccPublic; private static CngKeyBlobFormat s_genericPrivate; private static CngKeyBlobFormat s_genericPublic; private static CngKeyBlobFormat s_opaqueTransport; private static CngKeyBlobFormat s_pkcs8Private; private string m_format; public CngKeyBlobFormat(string format) { Contract.Ensures(!String.IsNullOrEmpty(m_format)); if (format == null) { throw new ArgumentNullException("format"); } if (format.Length == 0) { throw new ArgumentException(SR.GetString(SR.Cryptography_InvalidKeyBlobFormat, format), "format"); } m_format = format; } /// /// Name of the blob format /// public string Format { get { Contract.Ensures(!String.IsNullOrEmpty(Contract.Result())); return m_format; } } public static bool operator ==(CngKeyBlobFormat left, CngKeyBlobFormat right) { if (Object.ReferenceEquals(left, null)) { return Object.ReferenceEquals(right, null); } return left.Equals(right); } [Pure] public static bool operator !=(CngKeyBlobFormat left, CngKeyBlobFormat right) { if (Object.ReferenceEquals(left, null)) { return !Object.ReferenceEquals(right, null); } return !left.Equals(right); } public override bool Equals(object obj) { Contract.Assert(m_format != null); return Equals(obj as CngKeyBlobFormat); } public bool Equals(CngKeyBlobFormat other) { if (Object.ReferenceEquals(other, null)) { return false; } return m_format.Equals(other.Format); } public override int GetHashCode() { Contract.Assert(m_format != null); return m_format.GetHashCode(); } public override string ToString() { Contract.Assert(m_format != null); return m_format; } // // Well known key blob formats // public static CngKeyBlobFormat EccPrivateBlob { get { Contract.Ensures(Contract.Result () != null); if (s_eccPrivate == null) { s_eccPrivate = new CngKeyBlobFormat("ECCPRIVATEBLOB"); // BCRYPT_ECCPRIVATE_BLOB } return s_eccPrivate; } } public static CngKeyBlobFormat EccPublicBlob { get { Contract.Ensures(Contract.Result () != null); if (s_eccPublic == null) { s_eccPublic = new CngKeyBlobFormat("ECCPUBLICBLOB"); // BCRYPT_ECCPUBLIC_BLOB } return s_eccPublic; } } public static CngKeyBlobFormat GenericPrivateBlob { get { Contract.Ensures(Contract.Result () != null); if (s_genericPrivate == null) { s_genericPrivate = new CngKeyBlobFormat("PRIVATEBLOB"); // BCRYPT_PRIVATE_KEY_BLOB } return s_genericPrivate; } } public static CngKeyBlobFormat GenericPublicBlob { get { Contract.Ensures(Contract.Result () != null); if (s_genericPublic == null) { s_genericPublic = new CngKeyBlobFormat("PUBLICBLOB"); // BCRYPT_PUBLIC_KEY_BLOB } return s_genericPublic; } } public static CngKeyBlobFormat OpaqueTransportBlob { get { Contract.Ensures(Contract.Result () != null); if (s_opaqueTransport == null) { s_opaqueTransport = new CngKeyBlobFormat("OpaqueTransport"); // NCRYPT_OPAQUETRANSPORT_BLOB } return s_opaqueTransport; } } public static CngKeyBlobFormat Pkcs8PrivateBlob { get { Contract.Ensures(Contract.Result () != null); if (s_pkcs8Private == null) { s_pkcs8Private = new CngKeyBlobFormat("PKCS8_PRIVATEKEY"); // NCRYPT_PKCS8_PRIVATE_KEY_BLOB } return s_pkcs8Private; } } } } // 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
- FixedDSBuilder.cs
- HashHelpers.cs
- TextAction.cs
- __ComObject.cs
- TypeInitializationException.cs
- TerminatorSinks.cs
- HtmlInputButton.cs
- StylusCollection.cs
- DetailsViewInsertEventArgs.cs
- HtmlInputHidden.cs
- RepeatButtonAutomationPeer.cs
- TableItemPatternIdentifiers.cs
- RectConverter.cs
- BamlResourceContent.cs
- CultureInfoConverter.cs
- TextReader.cs
- DefaultHttpHandler.cs
- DataGridViewRowCancelEventArgs.cs
- TempFiles.cs
- TerminatorSinks.cs
- SmiGettersStream.cs
- BoundField.cs
- Point3DIndependentAnimationStorage.cs
- BookmarkOptionsHelper.cs
- TextDecorationLocationValidation.cs
- CodeParameterDeclarationExpressionCollection.cs
- RangeValueProviderWrapper.cs
- HostProtectionPermission.cs
- DataServiceKeyAttribute.cs
- ContextStack.cs
- CorrelationTokenInvalidatedHandler.cs
- EdmRelationshipRoleAttribute.cs
- RequestCacheManager.cs
- ObjectDataSource.cs
- ParameterCollection.cs
- XmlHierarchicalEnumerable.cs
- AlphaSortedEnumConverter.cs
- IndicFontClient.cs
- SecurityTokenSerializer.cs
- SafeFileHandle.cs
- VerticalAlignConverter.cs
- Parallel.cs
- Base64Encoding.cs
- DataGridPageChangedEventArgs.cs
- ResourceAssociationSetEnd.cs
- HttpConfigurationSystem.cs
- SafeFileMapViewHandle.cs
- GeneralTransform2DTo3DTo2D.cs
- NetworkCredential.cs
- Int64KeyFrameCollection.cs
- SuppressIldasmAttribute.cs
- XmlHierarchicalEnumerable.cs
- Types.cs
- SystemColors.cs
- InitializationEventAttribute.cs
- ChameleonKey.cs
- XsltSettings.cs
- _TimerThread.cs
- ExternalFile.cs
- CompiledRegexRunner.cs
- InstancePersistenceCommandException.cs
- HandleCollector.cs
- IndependentAnimationStorage.cs
- FutureFactory.cs
- TextContainerChangedEventArgs.cs
- XmlNode.cs
- IntersectQueryOperator.cs
- ProfileSettingsCollection.cs
- IdentityNotMappedException.cs
- GridErrorDlg.cs
- RequestCache.cs
- PrimitiveXmlSerializers.cs
- SQLBinaryStorage.cs
- TextMessageEncoder.cs
- SystemException.cs
- WebPartCancelEventArgs.cs
- IDQuery.cs
- UserPrincipalNameElement.cs
- EntityDataSourceConfigureObjectContextPanel.cs
- IdentityNotMappedException.cs
- AuthenticationConfig.cs
- AssociationSetEnd.cs
- ManifestBasedResourceGroveler.cs
- WebPartZone.cs
- HtmlInputControl.cs
- CommentGlyph.cs
- SyntaxCheck.cs
- Animatable.cs
- XmlSubtreeReader.cs
- printdlgexmarshaler.cs
- TransactionChannelFactory.cs
- XmlValueConverter.cs
- ReflectEventDescriptor.cs
- HtmlForm.cs
- UserPersonalizationStateInfo.cs
- SiteMapProvider.cs
- HttpListenerRequest.cs
- EncoderParameters.cs
- MouseGestureValueSerializer.cs
- HScrollBar.cs