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
- OleDbMetaDataFactory.cs
- DataPagerFieldCollection.cs
- WorkflowQueueInfo.cs
- Grid.cs
- BuildProvider.cs
- MailAddressCollection.cs
- ArgIterator.cs
- PeerResolverMode.cs
- TemplateField.cs
- Unit.cs
- ValidationRuleCollection.cs
- StringValidatorAttribute.cs
- SegmentInfo.cs
- CharConverter.cs
- WindowsToolbarAsMenu.cs
- ListInitExpression.cs
- LinqDataSourceHelper.cs
- WindowPattern.cs
- MetaDataInfo.cs
- XmlDocument.cs
- EventLogLink.cs
- FormatterServices.cs
- VariableDesigner.xaml.cs
- SmiEventSink.cs
- ArrangedElementCollection.cs
- WindowsGraphicsWrapper.cs
- RSATokenProvider.cs
- ConnectionsZone.cs
- Viewport3DVisual.cs
- EnumUnknown.cs
- EnumCodeDomSerializer.cs
- BlockUIContainer.cs
- XPathNodePointer.cs
- DataTableClearEvent.cs
- TriggerActionCollection.cs
- RequestQueue.cs
- PTManager.cs
- Clipboard.cs
- ButtonField.cs
- ToolStripDesignerUtils.cs
- StateMachineSubscription.cs
- BezierSegment.cs
- RealProxy.cs
- TreeNodeClickEventArgs.cs
- SourceFilter.cs
- GeometryGroup.cs
- CaseInsensitiveHashCodeProvider.cs
- _TimerThread.cs
- MeasureData.cs
- ThumbButtonInfo.cs
- XmlQualifiedNameTest.cs
- DataGridViewColumn.cs
- ObjectPersistData.cs
- StringToken.cs
- RelationshipDetailsCollection.cs
- XXXOnTypeBuilderInstantiation.cs
- DataObjectPastingEventArgs.cs
- EventHandlersStore.cs
- StringCollectionEditor.cs
- printdlgexmarshaler.cs
- Error.cs
- IOException.cs
- MissingMemberException.cs
- ListItemViewAttribute.cs
- CorruptingExceptionCommon.cs
- PageTheme.cs
- PreProcessInputEventArgs.cs
- FixedSchema.cs
- COM2EnumConverter.cs
- ToolStripSeparatorRenderEventArgs.cs
- BaseCollection.cs
- CollectionChangedEventManager.cs
- DataGridViewMethods.cs
- WebPartRestoreVerb.cs
- StreamWriter.cs
- ScrollContentPresenter.cs
- HtmlInputReset.cs
- TabControl.cs
- SubordinateTransaction.cs
- GridItemProviderWrapper.cs
- TCEAdapterGenerator.cs
- ObjectListFieldsPage.cs
- NextPreviousPagerField.cs
- NumericUpDownAccelerationCollection.cs
- StylusPlugin.cs
- HighContrastHelper.cs
- WindowAutomationPeer.cs
- DecimalAnimationUsingKeyFrames.cs
- Compiler.cs
- HttpGetProtocolReflector.cs
- QilVisitor.cs
- DataGridViewCellStyleConverter.cs
- LogWriteRestartAreaState.cs
- SessionState.cs
- TypeResolver.cs
- SocketAddress.cs
- Double.cs
- WorkflowViewManager.cs
- initElementDictionary.cs
- FSWPathEditor.cs