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
- PersonalizationDictionary.cs
- PrimitiveCodeDomSerializer.cs
- NullableDoubleMinMaxAggregationOperator.cs
- ListBase.cs
- CryptoStream.cs
- wmiutil.cs
- Privilege.cs
- InputBinding.cs
- StringFormat.cs
- SimpleTextLine.cs
- WindowVisualStateTracker.cs
- BindingExpressionUncommonField.cs
- XmlQualifiedName.cs
- ErrorProvider.cs
- ActivityDesignerResources.cs
- StreamReader.cs
- SchemaMerger.cs
- TextBlock.cs
- AbstractSvcMapFileLoader.cs
- VirtualDirectoryMappingCollection.cs
- XmlName.cs
- ChannelManager.cs
- Rectangle.cs
- CodeSubDirectoriesCollection.cs
- BamlLocalizableResource.cs
- DataTableClearEvent.cs
- ZoomPercentageConverter.cs
- WebResourceUtil.cs
- RuleSettings.cs
- ModelItemKeyValuePair.cs
- FontSizeConverter.cs
- SimpleTextLine.cs
- SimpleType.cs
- LinkLabel.cs
- XPathPatternBuilder.cs
- DragEventArgs.cs
- SerializableAttribute.cs
- GridViewRow.cs
- CdpEqualityComparer.cs
- HTMLTagNameToTypeMapper.cs
- StrokeDescriptor.cs
- CompilationUnit.cs
- BitmapEffectDrawing.cs
- WindowsListViewSubItem.cs
- TargetInvocationException.cs
- KnownTypesProvider.cs
- StandardCommands.cs
- XmlSchemaObjectCollection.cs
- ImmComposition.cs
- TypeReference.cs
- DrawingGroup.cs
- DecimalConstantAttribute.cs
- Rotation3DAnimationBase.cs
- BindingGroup.cs
- Soap12FormatExtensions.cs
- TextDecorationUnitValidation.cs
- IntAverageAggregationOperator.cs
- RelationshipSet.cs
- HostVisual.cs
- XmlWrappingReader.cs
- ClientConfigPaths.cs
- KeyEventArgs.cs
- BindingSource.cs
- XmlSchemaSimpleContentExtension.cs
- ServiceProviders.cs
- XmlCDATASection.cs
- XmlNamedNodeMap.cs
- _HTTPDateParse.cs
- Style.cs
- SignedXml.cs
- CreateUserWizardStep.cs
- FontUnitConverter.cs
- Border.cs
- HighContrastHelper.cs
- LayoutTable.cs
- RequiredFieldValidator.cs
- VirtualPath.cs
- PipeConnection.cs
- EFDataModelProvider.cs
- TransformGroup.cs
- MetadataItem.cs
- DirectoryNotFoundException.cs
- DataGridViewAccessibleObject.cs
- WebUtil.cs
- BrowserInteropHelper.cs
- NamespaceList.cs
- MaterialGroup.cs
- ZipQueryOperator.cs
- SimpleFileLog.cs
- ThemeInfoAttribute.cs
- RelatedView.cs
- TextSelectionProcessor.cs
- DSASignatureFormatter.cs
- AutomationPeer.cs
- SafeLibraryHandle.cs
- CacheMode.cs
- Pool.cs
- CombinedGeometry.cs
- XmlSignatureProperties.cs
- SecurityKeyIdentifier.cs