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
- Point3DAnimation.cs
- WebPartZoneCollection.cs
- SafeCryptoHandles.cs
- exports.cs
- ValidationErrorCollection.cs
- SocketElement.cs
- HTTPNotFoundHandler.cs
- PrintEvent.cs
- ScrollContentPresenter.cs
- UserControl.cs
- XmlSchemaSequence.cs
- Msec.cs
- WindowsSpinner.cs
- DotExpr.cs
- KeyValueSerializer.cs
- ReadOnlyCollectionBase.cs
- ConstantSlot.cs
- SmiSettersStream.cs
- ListViewPagedDataSource.cs
- XPathParser.cs
- ArrangedElement.cs
- DiagnosticTrace.cs
- ControlTemplate.cs
- Mapping.cs
- VisualProxy.cs
- IResourceProvider.cs
- RelationshipDetailsCollection.cs
- XmlDataSource.cs
- Pair.cs
- ColumnWidthChangingEvent.cs
- SqlSupersetValidator.cs
- DelegateSerializationHolder.cs
- ClaimComparer.cs
- XmlEventCache.cs
- ArithmeticException.cs
- SHA1.cs
- SqlServer2KCompatibilityAnnotation.cs
- DataGridPageChangedEventArgs.cs
- Psha1DerivedKeyGenerator.cs
- ParentUndoUnit.cs
- SignatureToken.cs
- SecurityRuntime.cs
- ColorTransformHelper.cs
- DataGridViewRowConverter.cs
- Rect3DValueSerializer.cs
- ProviderIncompatibleException.cs
- Transform3D.cs
- FacetDescriptionElement.cs
- ScrollChrome.cs
- assertwrapper.cs
- WebPartUtil.cs
- HostedBindingBehavior.cs
- KnowledgeBase.cs
- Frame.cs
- Rotation3DAnimationUsingKeyFrames.cs
- RuleSetDialog.cs
- HttpServerUtilityWrapper.cs
- BitConverter.cs
- StreamBodyWriter.cs
- ResizeGrip.cs
- AuthenticationSchemesHelper.cs
- HtmlGenericControl.cs
- CryptoApi.cs
- shaperfactory.cs
- CryptoStream.cs
- ThumbAutomationPeer.cs
- OletxDependentTransaction.cs
- ScriptingRoleServiceSection.cs
- ReadOnlyDataSource.cs
- SQLConvert.cs
- SeekableReadStream.cs
- TypeDelegator.cs
- Trace.cs
- StringExpressionSet.cs
- EventKeyword.cs
- XPathSingletonIterator.cs
- BitVector32.cs
- LinkTarget.cs
- OverlappedAsyncResult.cs
- DataGridViewRowHeaderCell.cs
- DLinqAssociationProvider.cs
- CompilerLocalReference.cs
- ContractAdapter.cs
- ScrollBar.cs
- ConditionedDesigner.cs
- TerminatorSinks.cs
- CapabilitiesUse.cs
- DynamicResourceExtensionConverter.cs
- SqlConnectionString.cs
- OpenTypeCommon.cs
- XmlProcessingInstruction.cs
- PageAdapter.cs
- ListSourceHelper.cs
- ConfigViewGenerator.cs
- DecimalAnimationUsingKeyFrames.cs
- FamilyTypefaceCollection.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- Point3DAnimationBase.cs
- RayHitTestParameters.cs
- _ProxyChain.cs