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
- BufferModesCollection.cs
- CategoryNameCollection.cs
- RelOps.cs
- FileIOPermission.cs
- Codec.cs
- WebHeaderCollection.cs
- EventManager.cs
- FixUp.cs
- HandlerBase.cs
- AlternateView.cs
- ScrollBar.cs
- ValidatingCollection.cs
- MessageHeaderInfoTraceRecord.cs
- UpdateException.cs
- NotImplementedException.cs
- PageParserFilter.cs
- FocusManager.cs
- SqlServer2KCompatibilityCheck.cs
- ToolStripRendererSwitcher.cs
- ConditionalWeakTable.cs
- BitmapFrameDecode.cs
- PhonemeConverter.cs
- BaseCollection.cs
- JoinGraph.cs
- XmlElementList.cs
- NumberFunctions.cs
- BackStopAuthenticationModule.cs
- MenuItem.cs
- __TransparentProxy.cs
- XappLauncher.cs
- SqlBuffer.cs
- SoapAttributeAttribute.cs
- SafeNativeMethods.cs
- CompilerScopeManager.cs
- AppDomainAttributes.cs
- TemplatedAdorner.cs
- PackWebRequest.cs
- WorkflowDesignerMessageFilter.cs
- StateWorkerRequest.cs
- MulticastOption.cs
- InvokeProviderWrapper.cs
- RegularExpressionValidator.cs
- DataServiceQueryOfT.cs
- WebPartConnection.cs
- ArgumentValidation.cs
- Vector.cs
- SqlVisitor.cs
- DbProviderSpecificTypePropertyAttribute.cs
- LateBoundChannelParameterCollection.cs
- BaseComponentEditor.cs
- Viewport3DAutomationPeer.cs
- ADMembershipUser.cs
- arabicshape.cs
- SystemIPGlobalStatistics.cs
- CodeArgumentReferenceExpression.cs
- TemplateControlCodeDomTreeGenerator.cs
- TextSelectionProcessor.cs
- SettingsSavedEventArgs.cs
- WebCategoryAttribute.cs
- TrackingQuery.cs
- AppDomainProtocolHandler.cs
- Range.cs
- Brushes.cs
- ClipboardProcessor.cs
- commandenforcer.cs
- FormViewDeleteEventArgs.cs
- TimeSpanValidatorAttribute.cs
- OperationResponse.cs
- ComplusTypeValidator.cs
- DataGridViewTopLeftHeaderCell.cs
- AlignmentYValidation.cs
- Visual.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- TraceListeners.cs
- DbConnectionClosed.cs
- TreeNodeEventArgs.cs
- EffectiveValueEntry.cs
- DataTableClearEvent.cs
- ItemsChangedEventArgs.cs
- SubclassTypeValidatorAttribute.cs
- MenuItemStyleCollection.cs
- FileRegion.cs
- HitTestResult.cs
- PerformanceCounterPermission.cs
- TypeElement.cs
- OpCopier.cs
- Html32TextWriter.cs
- BindingWorker.cs
- AddInAttribute.cs
- BitmapData.cs
- Padding.cs
- XmlConverter.cs
- SystemWebExtensionsSectionGroup.cs
- ContainerControl.cs
- EdmItemCollection.cs
- SerializationFieldInfo.cs
- UserUseLicenseDictionaryLoader.cs
- UIElementParagraph.cs
- XpsInterleavingPolicy.cs
- AssociationType.cs