Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Security / Cryptography / X509Certificates / safex509handles.cs / 1 / 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 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
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
[MethodImplAttribute(MethodImplOptions.InternalCall)]
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
private static extern void _FreePCertContext(IntPtr pCert);
override protected bool ReleaseHandle()
{
_FreePCertContext(handle);
return true;
}
}
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
[MethodImplAttribute(MethodImplOptions.InternalCall)]
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
private static extern void _FreeCertStoreContext(IntPtr hCertStore);
override protected bool ReleaseHandle()
{
_FreeCertStoreContext(handle);
return true;
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DataSourceHelper.cs
- DeferredRunTextReference.cs
- ScriptingWebServicesSectionGroup.cs
- OutputCacheProfile.cs
- CompoundFileStreamReference.cs
- VectorCollectionValueSerializer.cs
- PingOptions.cs
- TemplateControlParser.cs
- OperatorExpressions.cs
- NodeLabelEditEvent.cs
- DataException.cs
- _FtpDataStream.cs
- ParentControlDesigner.cs
- WebExceptionStatus.cs
- DynamicValueConverter.cs
- AnnotationMap.cs
- SEHException.cs
- InputProcessorProfiles.cs
- DocumentSequence.cs
- EnumDataContract.cs
- DesignerDataSchemaClass.cs
- EdmTypeAttribute.cs
- ParserStack.cs
- QilExpression.cs
- ProxyGenerator.cs
- LambdaCompiler.cs
- MergeFilterQuery.cs
- WindowsFormsHelpers.cs
- DecimalFormatter.cs
- WizardForm.cs
- ProjectedWrapper.cs
- HtmlInputFile.cs
- DataGridViewBand.cs
- MonthChangedEventArgs.cs
- Model3D.cs
- BooleanAnimationBase.cs
- NativeMethods.cs
- CodeVariableDeclarationStatement.cs
- OdbcParameterCollection.cs
- CopyCodeAction.cs
- XPathNodeList.cs
- ErrorHandler.cs
- OptimisticConcurrencyException.cs
- TypefaceCollection.cs
- RemoteWebConfigurationHostServer.cs
- UIAgentMonitorHandle.cs
- Transform.cs
- JoinTreeNode.cs
- SafeRightsManagementSessionHandle.cs
- NetCodeGroup.cs
- CompositeFontInfo.cs
- PrintingPermission.cs
- NameScope.cs
- ArrayTypeMismatchException.cs
- PointHitTestParameters.cs
- CodeTypeParameterCollection.cs
- TemplateControlCodeDomTreeGenerator.cs
- WebPartManager.cs
- FormClosingEvent.cs
- HMACMD5.cs
- IOThreadTimer.cs
- SqlTrackingQuery.cs
- HostedImpersonationContext.cs
- CurrentChangedEventManager.cs
- EndpointIdentity.cs
- IntSecurity.cs
- SystemResourceHost.cs
- CommandEventArgs.cs
- CmsInterop.cs
- BaseParser.cs
- ObjectCloneHelper.cs
- HandlerMappingMemo.cs
- GraphicsPathIterator.cs
- ComboBoxAutomationPeer.cs
- CompositeKey.cs
- LayoutExceptionEventArgs.cs
- SQLBoolean.cs
- EncoderReplacementFallback.cs
- EditCommandColumn.cs
- Visitors.cs
- BinaryVersion.cs
- MergeFilterQuery.cs
- ConnectorRouter.cs
- UserControlCodeDomTreeGenerator.cs
- BaseDataList.cs
- RowBinding.cs
- UrlAuthFailedErrorFormatter.cs
- WebPartManager.cs
- EntitySet.cs
- CodeNamespaceCollection.cs
- TextRunTypographyProperties.cs
- RelationshipType.cs
- XsdValidatingReader.cs
- Dynamic.cs
- SignedInfo.cs
- DeobfuscatingStream.cs
- FacetDescriptionElement.cs
- M3DUtil.cs
- AudioDeviceOut.cs
- ActiveXHelper.cs