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
- TdsParserStateObject.cs
- MenuItem.cs
- SmiMetaDataProperty.cs
- MobileContainerDesigner.cs
- NavigatingCancelEventArgs.cs
- Binding.cs
- DesignerCatalogPartChrome.cs
- KeyedCollection.cs
- EditorZoneBase.cs
- ButtonBase.cs
- CoTaskMemSafeHandle.cs
- TdsParserHelperClasses.cs
- XmlUnspecifiedAttribute.cs
- DetailsViewAutoFormat.cs
- CapabilitiesUse.cs
- LabelTarget.cs
- DSASignatureFormatter.cs
- COM2TypeInfoProcessor.cs
- LongTypeConverter.cs
- AccessDataSource.cs
- SocketException.cs
- CodeTypeReferenceExpression.cs
- FontSourceCollection.cs
- HelpInfo.cs
- MimeFormatter.cs
- TextLineBreak.cs
- ClientRequest.cs
- DisplayClaim.cs
- Matrix.cs
- String.cs
- FloatUtil.cs
- DataGridComponentEditor.cs
- assemblycache.cs
- Animatable.cs
- _HelperAsyncResults.cs
- SqlRetyper.cs
- SQLMoneyStorage.cs
- TraceProvider.cs
- EnumerableRowCollection.cs
- PointF.cs
- ExtractorMetadata.cs
- XmlObjectSerializer.cs
- XPathBuilder.cs
- MessageSecurityOverMsmq.cs
- TemplateColumn.cs
- SchemaImporter.cs
- CompilationUnit.cs
- SqlCaseSimplifier.cs
- XPathAncestorIterator.cs
- Mapping.cs
- exports.cs
- ResourcePool.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- NeutralResourcesLanguageAttribute.cs
- ThemeDirectoryCompiler.cs
- StrongTypingException.cs
- CssStyleCollection.cs
- XmlSchemaRedefine.cs
- CookieProtection.cs
- DbConnectionClosed.cs
- ProcessManager.cs
- WorkingDirectoryEditor.cs
- SchemeSettingElement.cs
- PerfCounterSection.cs
- MouseEvent.cs
- _WebProxyDataBuilder.cs
- SpeechSeg.cs
- TempEnvironment.cs
- DummyDataSource.cs
- UserPreferenceChangedEventArgs.cs
- TextSelectionHighlightLayer.cs
- StrokeCollectionConverter.cs
- InputChannelBinder.cs
- ModelServiceImpl.cs
- Rect3D.cs
- KnownIds.cs
- FormView.cs
- SafeBitVector32.cs
- ListViewCommandEventArgs.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- Adorner.cs
- ListCollectionView.cs
- NegationPusher.cs
- ItemCollection.cs
- RegisteredHiddenField.cs
- GenericEnumerator.cs
- StrokeSerializer.cs
- x509store.cs
- AcceptorSessionSymmetricTransportSecurityProtocol.cs
- BaseConfigurationRecord.cs
- GroupQuery.cs
- KeyGesture.cs
- MethodBody.cs
- ScriptComponentDescriptor.cs
- rsa.cs
- MemberProjectedSlot.cs
- SimpleRecyclingCache.cs
- StreamGeometry.cs
- RegexReplacement.cs
- WebPartTransformer.cs