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
- ConnectionInterfaceCollection.cs
- SafeMemoryMappedFileHandle.cs
- TypeConverter.cs
- FilteredXmlReader.cs
- x509store.cs
- TypeConverterHelper.cs
- ConditionalBranch.cs
- FormViewRow.cs
- ColorConvertedBitmapExtension.cs
- ClientUrlResolverWrapper.cs
- AssociationTypeEmitter.cs
- TemplatedMailWebEventProvider.cs
- DbConnectionPool.cs
- ButtonPopupAdapter.cs
- EmptyControlCollection.cs
- TraceHandler.cs
- InternalsVisibleToAttribute.cs
- SqlSupersetValidator.cs
- OutputCacheSettings.cs
- TcpClientChannel.cs
- LabelLiteral.cs
- ColorConverter.cs
- DrawItemEvent.cs
- GPPOINT.cs
- BamlCollectionHolder.cs
- SearchForVirtualItemEventArgs.cs
- XPathNodeList.cs
- XamlParser.cs
- CodeObjectCreateExpression.cs
- ServiceMoniker.cs
- CodeStatement.cs
- UndirectedGraph.cs
- SmiEventSink.cs
- HtmlTable.cs
- GcHandle.cs
- XmlChildEnumerator.cs
- CrossSiteScriptingValidation.cs
- ErrorFormatterPage.cs
- ForwardPositionQuery.cs
- TextEndOfParagraph.cs
- TextFormatterContext.cs
- metadatamappinghashervisitor.cs
- Dump.cs
- ButtonField.cs
- MetadataException.cs
- Quaternion.cs
- ObjectTokenCategory.cs
- DesignerRegionMouseEventArgs.cs
- _AcceptOverlappedAsyncResult.cs
- SemanticBasicElement.cs
- RSAProtectedConfigurationProvider.cs
- BoundsDrawingContextWalker.cs
- MDIControlStrip.cs
- CodeLabeledStatement.cs
- XmlUnspecifiedAttribute.cs
- CommonXSendMessage.cs
- TemplatingOptionsDialog.cs
- CompositeCollection.cs
- Choices.cs
- CodeNamespaceCollection.cs
- BinaryNode.cs
- Variable.cs
- TimeoutException.cs
- Touch.cs
- ExpressionDumper.cs
- LogReservationCollection.cs
- DataConnectionHelper.cs
- InputLangChangeRequestEvent.cs
- ExpressionBuilder.cs
- QilLoop.cs
- JsonDataContract.cs
- ProxyWebPart.cs
- ImageCodecInfo.cs
- DocumentViewerAutomationPeer.cs
- Executor.cs
- TypeForwardedFromAttribute.cs
- PassportPrincipal.cs
- StylusTouchDevice.cs
- Binding.cs
- WebBaseEventKeyComparer.cs
- RelatedCurrencyManager.cs
- CursorInteropHelper.cs
- Point3DIndependentAnimationStorage.cs
- DataSpaceManager.cs
- WindowsImpersonationContext.cs
- JapaneseLunisolarCalendar.cs
- CommandPlan.cs
- PolicyUtility.cs
- UncommonField.cs
- WindowManager.cs
- FlowThrottle.cs
- ProxyWebPartManager.cs
- BamlStream.cs
- RoleManagerEventArgs.cs
- AssertSection.cs
- RootBuilder.cs
- WebEvents.cs
- DoubleAnimationUsingPath.cs
- PageStatePersister.cs
- ConcurrentDictionary.cs