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
- TypeNameConverter.cs
- ComboBoxAutomationPeer.cs
- PolyQuadraticBezierSegment.cs
- XPathException.cs
- SamlEvidence.cs
- CodeCommentStatementCollection.cs
- SymbolDocumentInfo.cs
- RangeBaseAutomationPeer.cs
- AppSettingsExpressionBuilder.cs
- Descriptor.cs
- ResponseBodyWriter.cs
- PropertyChangeTracker.cs
- UICuesEvent.cs
- DecoderFallback.cs
- ProfileService.cs
- XmlSchemaDatatype.cs
- XmlUtf8RawTextWriter.cs
- KnownAssembliesSet.cs
- XsdBuildProvider.cs
- ConnectionOrientedTransportBindingElement.cs
- GeneratedView.cs
- BCLDebug.cs
- PKCS1MaskGenerationMethod.cs
- exports.cs
- EditorAttribute.cs
- EditorPart.cs
- ProviderUtil.cs
- unsafenativemethodsother.cs
- HostProtectionPermission.cs
- SafeEventLogWriteHandle.cs
- PageClientProxyGenerator.cs
- BitmapEffectOutputConnector.cs
- CompilerState.cs
- OptimisticConcurrencyException.cs
- Codec.cs
- EntityConnection.cs
- RegularExpressionValidator.cs
- StringValueConverter.cs
- System.Data.OracleClient_BID.cs
- NullableLongMinMaxAggregationOperator.cs
- EntityDataSourceDesignerHelper.cs
- regiisutil.cs
- TimeSpanHelper.cs
- OutputBuffer.cs
- DataGridViewAdvancedBorderStyle.cs
- ObjectStateEntryDbDataRecord.cs
- PropertyDescriptorGridEntry.cs
- login.cs
- RequestUriProcessor.cs
- TableItemPattern.cs
- SelectionEditor.cs
- InvalidOleVariantTypeException.cs
- DataGridTextBoxColumn.cs
- AdRotator.cs
- _SafeNetHandles.cs
- Vector.cs
- EncodingInfo.cs
- BamlBinaryWriter.cs
- LocatorPart.cs
- Transform3DCollection.cs
- ObjectSecurityT.cs
- ReferenceConverter.cs
- XmlSchemaElement.cs
- PropertyChangedEventArgs.cs
- selecteditemcollection.cs
- CompilerCollection.cs
- Utils.cs
- DBCommandBuilder.cs
- AutomationTextAttribute.cs
- SqlExpressionNullability.cs
- GraphicsPathIterator.cs
- TreeNodeSelectionProcessor.cs
- XPathNavigatorReader.cs
- TokenBasedSetEnumerator.cs
- ToolstripProfessionalRenderer.cs
- CultureSpecificStringDictionary.cs
- SendActivityDesigner.cs
- DetailsViewPagerRow.cs
- CommandPlan.cs
- SoapAttributeAttribute.cs
- NamedPermissionSet.cs
- CardSpacePolicyElement.cs
- SettingsPropertyWrongTypeException.cs
- SchemaCollectionPreprocessor.cs
- SelectionChangedEventArgs.cs
- QueryTaskGroupState.cs
- CroppedBitmap.cs
- BitmapFrameDecode.cs
- PrintPreviewControl.cs
- PeerNearMe.cs
- KeyProperty.cs
- DataGridViewTopLeftHeaderCell.cs
- CallTemplateAction.cs
- ResourceCodeDomSerializer.cs
- TargetConverter.cs
- DBConnectionString.cs
- Atom10FormatterFactory.cs
- HGlobalSafeHandle.cs
- ProfileParameter.cs
- ArcSegment.cs