Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / Security / Cryptography / SafeCryptoHandles.cs / 1305376 / SafeCryptoHandles.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== //[....] // // // SafeCryptoHandles.cs // namespace System.Security.Cryptography { using System.Runtime.InteropServices; using System.Runtime.CompilerServices; using System.Runtime.ConstrainedExecution; using System.Runtime.Versioning; using Microsoft.Win32.SafeHandles; ////// Safe handle representing a mscorwks!CRYPT_PROV_CTX /// ////// Since we need sometimes to delete the key container created in the context of the CSP, the handle /// used in this class is actually a pointer to a CRYPT_PROV_CTX unmanaged structure defined in /// COMCryptography.h /// [System.Security.SecurityCritical] // auto-generated internal sealed class SafeProvHandle : SafeHandleZeroOrMinusOneIsInvalid { private SafeProvHandle() : base(true) { SetHandle(IntPtr.Zero); } private SafeProvHandle(IntPtr handle) : base (true) { SetHandle(handle); } internal static SafeProvHandle InvalidHandle { get { return new SafeProvHandle(); } } [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode)] [ResourceExposure(ResourceScope.None)] [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] [SuppressUnmanagedCodeSecurity] private static extern void FreeCsp(IntPtr pProviderContext); [System.Security.SecurityCritical] protected override bool ReleaseHandle() { FreeCsp(handle); return true; } } #if FEATURE_CRYPTO ////// Safe handle representing a mscorkws!CRYPT_KEY_CTX /// ////// Since we need to delete the key handle before the provider is released we need to actually hold a /// pointer to a CRYPT_KEY_CTX unmanaged structure whose destructor decrements a refCount. Only when /// the provider refCount is 0 it is deleted. This way, we loose a ---- in the critical finalization /// of the key handle and provider handle. This also applies to hash handles, which point to a /// CRYPT_HASH_CTX. Those strucutres are defined in COMCryptography.h /// [System.Security.SecurityCritical] // auto-generated internal sealed class SafeKeyHandle : SafeHandleZeroOrMinusOneIsInvalid { private SafeKeyHandle() : base(true) { SetHandle(IntPtr.Zero); } private SafeKeyHandle(IntPtr handle) : base (true) { SetHandle(handle); } internal static SafeKeyHandle InvalidHandle { get { return new SafeKeyHandle(); } } [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode)] [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] [ResourceExposure(ResourceScope.None)] [SuppressUnmanagedCodeSecurity] private static extern void FreeKey(IntPtr pKeyCotext); [System.Security.SecurityCritical] protected override bool ReleaseHandle() { FreeKey(handle); return true; } } ////// SafeHandle representing a mscorwks!CRYPT_HASH_CTX /// ////// See code:System.Security.Cryptography.SafeKeyHandle for information about the release process /// for a CRYPT_HASH_CTX. /// [System.Security.SecurityCritical] // auto-generated internal sealed class SafeHashHandle : SafeHandleZeroOrMinusOneIsInvalid { private SafeHashHandle() : base(true) { SetHandle(IntPtr.Zero); } private SafeHashHandle(IntPtr handle) : base (true) { SetHandle(handle); } internal static SafeHashHandle InvalidHandle { get { return new SafeHashHandle(); } } [DllImport(JitHelpers.QCall, CharSet = CharSet.Unicode)] [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] [ResourceExposure(ResourceScope.None)] [SuppressUnmanagedCodeSecurity] private static extern void FreeHash(IntPtr pHashContext); [System.Security.SecurityCritical] protected override bool ReleaseHandle() { FreeHash(handle); return true; } } #endif // #if FEATURE_CRYPTO } // 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
- CoTaskMemHandle.cs
- QilSortKey.cs
- HighlightComponent.cs
- SmiRequestExecutor.cs
- KeyFrames.cs
- SelectionRangeConverter.cs
- CodeSubDirectoriesCollection.cs
- GuidelineCollection.cs
- TypeDescriptorFilterService.cs
- DataGridColumnHeaderCollection.cs
- IPEndPointCollection.cs
- ListViewTableRow.cs
- PenLineJoinValidation.cs
- InvalidOperationException.cs
- ListViewCancelEventArgs.cs
- AccessViolationException.cs
- Constraint.cs
- TraceListeners.cs
- BigInt.cs
- ProcessModelSection.cs
- ExceptionTrace.cs
- ChangeNode.cs
- UnsafeNativeMethods.cs
- Utils.cs
- SmiEventSink_DeferedProcessing.cs
- WebPartMovingEventArgs.cs
- NullableFloatMinMaxAggregationOperator.cs
- StringOutput.cs
- CriticalHandle.cs
- EntityDataSourceUtil.cs
- Serialization.cs
- DictionaryContent.cs
- ScriptServiceAttribute.cs
- autovalidator.cs
- ListChangedEventArgs.cs
- DataGridAutoFormatDialog.cs
- HttpResponseHeader.cs
- DataGridViewCheckBoxCell.cs
- GZipStream.cs
- StackOverflowException.cs
- ListComponentEditorPage.cs
- PartialList.cs
- CodeTypeDeclarationCollection.cs
- ImageCodecInfoPrivate.cs
- Camera.cs
- AbstractDataSvcMapFileLoader.cs
- ParallelQuery.cs
- PlaceHolder.cs
- CustomSignedXml.cs
- RedistVersionInfo.cs
- XmlBaseWriter.cs
- ReadContentAsBinaryHelper.cs
- DbParameterCollectionHelper.cs
- CriticalExceptions.cs
- ButtonField.cs
- Knowncolors.cs
- JsonFormatWriterGenerator.cs
- DictionarySectionHandler.cs
- TagPrefixAttribute.cs
- SpellCheck.cs
- StateInitializationDesigner.cs
- WebHttpSecurity.cs
- ListControlDataBindingHandler.cs
- ReferenceConverter.cs
- EmptyStringExpandableObjectConverter.cs
- BindingsSection.cs
- AppDomain.cs
- URLAttribute.cs
- WpfWebRequestHelper.cs
- XmlReflectionImporter.cs
- LazyTextWriterCreator.cs
- DefaultWorkflowLoaderService.cs
- ApplicationBuildProvider.cs
- InertiaRotationBehavior.cs
- GraphicsState.cs
- VectorCollectionValueSerializer.cs
- RelatedImageListAttribute.cs
- SoapReflectionImporter.cs
- HtmlMeta.cs
- EncoderExceptionFallback.cs
- PropertyMapper.cs
- ErrorFormatterPage.cs
- Int32Rect.cs
- DefaultObjectMappingItemCollection.cs
- EntityConnectionStringBuilder.cs
- ParseNumbers.cs
- HttpCacheVaryByContentEncodings.cs
- COM2ComponentEditor.cs
- DrawingVisual.cs
- HideDisabledControlAdapter.cs
- MulticastNotSupportedException.cs
- CorrelationRequestContext.cs
- Point3DAnimation.cs
- XD.cs
- RenderData.cs
- HtmlImageAdapter.cs
- _Connection.cs
- DynamicVirtualDiscoSearcher.cs
- InkCanvasInnerCanvas.cs
- ZipFileInfo.cs