Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Security / Cryptography / X509Certificates / safex509handles.cs / 1305376 / safex509handles.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
//
// SafeX509Handles.cs
//
namespace System.Security.Cryptography.X509Certificates {
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
using System.Runtime.ConstrainedExecution;
using System.Runtime.Versioning;
using Microsoft.Win32.SafeHandles;
// Since we need sometimes to delete the key container associated with a cert
// context, the handle used in this class is actually a pointer
// to a CERT_CTX unmanaged structure defined in COMX509Certificate.h
[System.Security.SecurityCritical] // auto-generated
internal sealed class SafeCertContextHandle : SafeHandleZeroOrMinusOneIsInvalid {
private SafeCertContextHandle() : base (true) {}
// 0 is an Invalid Handle
internal SafeCertContextHandle(IntPtr handle) : base (true) {
SetHandle(handle);
}
internal static SafeCertContextHandle InvalidHandle {
get { return new SafeCertContextHandle(IntPtr.Zero); }
}
internal IntPtr pCertContext {
get {
if (handle == IntPtr.Zero)
return IntPtr.Zero;
return Marshal.ReadIntPtr(handle);
}
}
// This method handles the case where pCert == NULL
[ResourceExposure(ResourceScope.None)]
[MethodImplAttribute(MethodImplOptions.InternalCall)]
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
private static extern void _FreePCertContext(IntPtr pCert);
[System.Security.SecurityCritical]
override protected bool ReleaseHandle()
{
_FreePCertContext(handle);
return true;
}
}
[System.Security.SecurityCritical] // auto-generated
internal sealed class SafeCertStoreHandle : SafeHandleZeroOrMinusOneIsInvalid {
private SafeCertStoreHandle() : base (true) {}
// 0 is an Invalid Handle
internal SafeCertStoreHandle(IntPtr handle) : base (true) {
SetHandle(handle);
}
internal static SafeCertStoreHandle InvalidHandle {
get { return new SafeCertStoreHandle(IntPtr.Zero); }
}
// This method handles the case where hCertStore == NULL
[ResourceExposure(ResourceScope.None)]
[MethodImplAttribute(MethodImplOptions.InternalCall)]
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
private static extern void _FreeCertStoreContext(IntPtr hCertStore);
[System.Security.SecurityCritical]
override protected bool ReleaseHandle()
{
_FreeCertStoreContext(handle);
return true;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
//
// SafeX509Handles.cs
//
namespace System.Security.Cryptography.X509Certificates {
using System.Runtime.InteropServices;
using System.Runtime.CompilerServices;
using System.Runtime.ConstrainedExecution;
using System.Runtime.Versioning;
using Microsoft.Win32.SafeHandles;
// Since we need sometimes to delete the key container associated with a cert
// context, the handle used in this class is actually a pointer
// to a CERT_CTX unmanaged structure defined in COMX509Certificate.h
[System.Security.SecurityCritical] // auto-generated
internal sealed class SafeCertContextHandle : SafeHandleZeroOrMinusOneIsInvalid {
private SafeCertContextHandle() : base (true) {}
// 0 is an Invalid Handle
internal SafeCertContextHandle(IntPtr handle) : base (true) {
SetHandle(handle);
}
internal static SafeCertContextHandle InvalidHandle {
get { return new SafeCertContextHandle(IntPtr.Zero); }
}
internal IntPtr pCertContext {
get {
if (handle == IntPtr.Zero)
return IntPtr.Zero;
return Marshal.ReadIntPtr(handle);
}
}
// This method handles the case where pCert == NULL
[ResourceExposure(ResourceScope.None)]
[MethodImplAttribute(MethodImplOptions.InternalCall)]
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
private static extern void _FreePCertContext(IntPtr pCert);
[System.Security.SecurityCritical]
override protected bool ReleaseHandle()
{
_FreePCertContext(handle);
return true;
}
}
[System.Security.SecurityCritical] // auto-generated
internal sealed class SafeCertStoreHandle : SafeHandleZeroOrMinusOneIsInvalid {
private SafeCertStoreHandle() : base (true) {}
// 0 is an Invalid Handle
internal SafeCertStoreHandle(IntPtr handle) : base (true) {
SetHandle(handle);
}
internal static SafeCertStoreHandle InvalidHandle {
get { return new SafeCertStoreHandle(IntPtr.Zero); }
}
// This method handles the case where hCertStore == NULL
[ResourceExposure(ResourceScope.None)]
[MethodImplAttribute(MethodImplOptions.InternalCall)]
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
private static extern void _FreeCertStoreContext(IntPtr hCertStore);
[System.Security.SecurityCritical]
override protected bool ReleaseHandle()
{
_FreeCertStoreContext(handle);
return true;
}
}
}
// 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
- EntityDataSourceEntityTypeFilterItem.cs
- FontDifferentiator.cs
- EntityProxyTypeInfo.cs
- SafeFileHandle.cs
- ObjectDataSourceFilteringEventArgs.cs
- CompilationUnit.cs
- SqlTopReducer.cs
- TimeManager.cs
- RemoteWebConfigurationHost.cs
- ReturnEventArgs.cs
- PolyBezierSegment.cs
- InvokeHandlers.cs
- TransformCollection.cs
- Odbc32.cs
- Annotation.cs
- DesignerWidgets.cs
- UiaCoreTypesApi.cs
- DbgCompiler.cs
- ByteStream.cs
- WebBrowserPermission.cs
- AtomEntry.cs
- ScrollProviderWrapper.cs
- SectionInformation.cs
- PrintPreviewDialog.cs
- DispatcherFrame.cs
- EmbeddedMailObject.cs
- DeleteMemberBinder.cs
- XmlSerializerSection.cs
- InvokeProviderWrapper.cs
- SqlUtils.cs
- _ConnectOverlappedAsyncResult.cs
- GenerateScriptTypeAttribute.cs
- WrappedOptions.cs
- XamlTemplateSerializer.cs
- ResourceDescriptionAttribute.cs
- SerializationAttributes.cs
- ManagementException.cs
- ContractInstanceProvider.cs
- SignatureToken.cs
- AliasedSlot.cs
- SerialErrors.cs
- StreamReader.cs
- httpstaticobjectscollection.cs
- CharAnimationUsingKeyFrames.cs
- BaseParagraph.cs
- Attributes.cs
- PageContentCollection.cs
- DesignerMetadata.cs
- UIPermission.cs
- StylusEditingBehavior.cs
- SwitchExpression.cs
- _ProxyChain.cs
- DataSpaceManager.cs
- WebEvents.cs
- ServiceChannelFactory.cs
- DateTimeFormatInfo.cs
- RotateTransform.cs
- MaskDesignerDialog.cs
- ExpressionBuilder.cs
- ExtensibleSyndicationObject.cs
- LazyTextWriterCreator.cs
- PolyQuadraticBezierSegment.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- CommandField.cs
- SslStream.cs
- _LocalDataStore.cs
- ResourcePart.cs
- TableRowCollection.cs
- AlignmentYValidation.cs
- SchemaEntity.cs
- MenuScrollingVisibilityConverter.cs
- MembershipValidatePasswordEventArgs.cs
- XmlDeclaration.cs
- GridViewColumnCollection.cs
- WebDisplayNameAttribute.cs
- KnownTypeDataContractResolver.cs
- AdPostCacheSubstitution.cs
- TreeNodeConverter.cs
- StringFreezingAttribute.cs
- SqlException.cs
- OleDbConnectionFactory.cs
- DataContractSerializerSection.cs
- EntityDataSourceDesigner.cs
- XPathChildIterator.cs
- SqlPersistenceWorkflowInstanceDescription.cs
- _WinHttpWebProxyDataBuilder.cs
- UInt16.cs
- CodeTypeMember.cs
- SelectionProcessor.cs
- ToggleProviderWrapper.cs
- CompilationAssemblyInstallComponent.cs
- Int32Rect.cs
- CellPartitioner.cs
- MemoryStream.cs
- ExceptionNotification.cs
- BuildProvidersCompiler.cs
- ILGenerator.cs
- XmlSchemas.cs
- DESCryptoServiceProvider.cs
- RichTextBox.cs