Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Core / Microsoft / Win32 / SafeHandles / BCryptSafeHandles.cs / 1305376 / BCryptSafeHandles.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== using System; using System.Runtime.ConstrainedExecution; using System.Runtime.InteropServices; using System.Security; using System.Security.Cryptography; using System.Diagnostics.Contracts; namespace Microsoft.Win32.SafeHandles { ////// SafeHandle representing a BCRYPT_ALG_HANDLE /// //// #pragma warning disable 618 // Have not migrated to v4 transparency yet [System.Security.SecurityCritical(System.Security.SecurityCriticalScope.Everything)] #pragma warning restore 618 internal sealed class SafeBCryptAlgorithmHandle : SafeHandleZeroOrMinusOneIsInvalid { private SafeBCryptAlgorithmHandle() : base(true) { } [DllImport("bcrypt")] [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] [SuppressUnmanagedCodeSecurity] private static extern BCryptNative.ErrorCode BCryptCloseAlgorithmProvider(IntPtr hAlgorithm, int flags); protected override bool ReleaseHandle() { return BCryptCloseAlgorithmProvider(handle, 0) == BCryptNative.ErrorCode.Success; } } ///// /// Safe handle representing a BCRYPT_HASH_HANDLE and the associated buffer holding the hash object /// //// #pragma warning disable 618 // Have not migrated to v4 transparency yet [System.Security.SecurityCritical(System.Security.SecurityCriticalScope.Everything)] #pragma warning restore 618 internal sealed class SafeBCryptHashHandle : SafeHandleZeroOrMinusOneIsInvalid { private IntPtr m_hashObject; private SafeBCryptHashHandle() : base(true) { } ///// /// Buffer holding the hash object. This buffer should be allocated with Marshal.AllocCoTaskMem. /// internal IntPtr HashObject { get { return m_hashObject; } set { Contract.Requires(value != IntPtr.Zero); m_hashObject = value; } } [DllImport("bcrypt")] [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] [SuppressUnmanagedCodeSecurity] private static extern BCryptNative.ErrorCode BCryptDestroyHash(IntPtr hHash); protected override bool ReleaseHandle() { bool success = BCryptDestroyHash(handle) == BCryptNative.ErrorCode.Success; // The hash object buffer must be released only after destroying the hash handle if (m_hashObject != IntPtr.Zero) { Marshal.FreeCoTaskMem(m_hashObject); } return success; } } } // 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
- ScriptResourceHandler.cs
- Funcletizer.cs
- ExpressionNormalizer.cs
- SiteMapHierarchicalDataSourceView.cs
- dbenumerator.cs
- MappingItemCollection.cs
- DataGridColumnStyleMappingNameEditor.cs
- HostedElements.cs
- EncodingDataItem.cs
- ProjectionPruner.cs
- MultipleViewProviderWrapper.cs
- NTAccount.cs
- ColumnResult.cs
- WCFModelStrings.Designer.cs
- FunctionNode.cs
- Int32AnimationUsingKeyFrames.cs
- MouseButton.cs
- DataGridTextBoxColumn.cs
- CheckStoreFileValidityRequest.cs
- QuaternionRotation3D.cs
- RadioButtonDesigner.cs
- XamlStackWriter.cs
- MemoryFailPoint.cs
- KnownTypesProvider.cs
- XPathNodeInfoAtom.cs
- SqlProfileProvider.cs
- PerSessionInstanceContextProvider.cs
- SystemIdentity.cs
- HtmlToClrEventProxy.cs
- BlockUIContainer.cs
- MetadataPropertyCollection.cs
- HwndTarget.cs
- KerberosSecurityTokenProvider.cs
- DiscoveryProxy.cs
- securitycriticaldataClass.cs
- NumberFunctions.cs
- XmlText.cs
- SchemaTableColumn.cs
- CacheMemory.cs
- Closure.cs
- Event.cs
- NumericExpr.cs
- XmlRawWriter.cs
- _StreamFramer.cs
- ListView.cs
- Operand.cs
- CodeExpressionRuleDeclaration.cs
- DataGrid.cs
- Component.cs
- FormsAuthenticationUserCollection.cs
- XPathNodeInfoAtom.cs
- ChannelManagerService.cs
- PropertyChangingEventArgs.cs
- CloudCollection.cs
- ConsoleCancelEventArgs.cs
- MeshGeometry3D.cs
- MatrixAnimationUsingKeyFrames.cs
- GridViewUpdateEventArgs.cs
- CssStyleCollection.cs
- DataGridViewButtonColumn.cs
- xmlglyphRunInfo.cs
- EventMemberCodeDomSerializer.cs
- Interlocked.cs
- HttpsChannelListener.cs
- RtfToXamlLexer.cs
- EdmSchemaAttribute.cs
- BitmapEffectDrawingContextWalker.cs
- DataGridViewColumnConverter.cs
- XmlDataSourceView.cs
- XmlEncodedRawTextWriter.cs
- PictureBox.cs
- CodeMemberField.cs
- MaterializeFromAtom.cs
- Triplet.cs
- PeerToPeerException.cs
- ISFTagAndGuidCache.cs
- Rules.cs
- ToolStripButton.cs
- ConsumerConnectionPointCollection.cs
- TextBlock.cs
- XmlSchemaDatatype.cs
- InvalidOperationException.cs
- InvalidOperationException.cs
- WebPartManager.cs
- DelegatingTypeDescriptionProvider.cs
- ButtonRenderer.cs
- FieldNameLookup.cs
- ConfigurationManager.cs
- WebPartConnectionsCancelVerb.cs
- NonDualMessageSecurityOverHttpElement.cs
- HtmlForm.cs
- ProfileBuildProvider.cs
- DecoderNLS.cs
- DataTemplateSelector.cs
- OdbcFactory.cs
- TreeChangeInfo.cs
- GeometryCombineModeValidation.cs
- Socket.cs
- SocketInformation.cs
- Accessible.cs