Code:
/ 4.0 / 4.0 / 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. // ==++== // // 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
- PixelFormatConverter.cs
- DispatcherFrame.cs
- FontStretch.cs
- HelpFileFileNameEditor.cs
- DataSourceGroupCollection.cs
- WebPartConnectionsConnectVerb.cs
- StickyNoteHelper.cs
- AsyncCompletedEventArgs.cs
- FilePrompt.cs
- ExtensibleSyndicationObject.cs
- SystemException.cs
- NegationPusher.cs
- DesignerLoader.cs
- JsonFormatMapping.cs
- CompiledQueryCacheEntry.cs
- InfoCardBaseException.cs
- TextureBrush.cs
- XmlRootAttribute.cs
- UnorderedHashRepartitionStream.cs
- StringUtil.cs
- SoapMessage.cs
- GenericAuthenticationEventArgs.cs
- WebPartConnectVerb.cs
- CurrentChangingEventArgs.cs
- SubordinateTransaction.cs
- ProtocolInformationReader.cs
- SmtpNtlmAuthenticationModule.cs
- ColumnWidthChangingEvent.cs
- SchemaElement.cs
- FormsAuthenticationConfiguration.cs
- UpdatePanelControlTrigger.cs
- FullTextState.cs
- RunWorkerCompletedEventArgs.cs
- LogEntryHeaderDeserializer.cs
- TypeReference.cs
- BasicBrowserDialog.cs
- FormCollection.cs
- MessageHeaders.cs
- XamlRtfConverter.cs
- PrinterSettings.cs
- XhtmlBasicTextViewAdapter.cs
- GorillaCodec.cs
- Component.cs
- ScriptManagerProxy.cs
- TypeNameConverter.cs
- BaseCodePageEncoding.cs
- SqlTransaction.cs
- SignerInfo.cs
- AssemblyBuilder.cs
- DataSetMappper.cs
- MiniMapControl.xaml.cs
- ApplicationFileParser.cs
- InputMethodStateTypeInfo.cs
- ScrollableControlDesigner.cs
- EdmComplexTypeAttribute.cs
- SignatureToken.cs
- ClientFormsIdentity.cs
- CatalogZoneBase.cs
- DataBindEngine.cs
- HierarchicalDataBoundControlAdapter.cs
- KeyManager.cs
- WindowsEditBoxRange.cs
- ToolStripPanel.cs
- SettingsProviderCollection.cs
- FormsAuthentication.cs
- ContentTextAutomationPeer.cs
- ComplexTypeEmitter.cs
- CodeDOMUtility.cs
- ResourceDescriptionAttribute.cs
- GenericParameterDataContract.cs
- CodePageUtils.cs
- GregorianCalendar.cs
- HostExecutionContextManager.cs
- XmlNode.cs
- GroupBox.cs
- SystemKeyConverter.cs
- CodeMethodReturnStatement.cs
- XmlSchemaSubstitutionGroup.cs
- ConditionCollection.cs
- SqlInternalConnectionTds.cs
- SystemDiagnosticsSection.cs
- NetNamedPipeBindingCollectionElement.cs
- StyleSheetDesigner.cs
- Preprocessor.cs
- UriSectionReader.cs
- BitConverter.cs
- PolicyLevel.cs
- TableRowCollection.cs
- InvalidComObjectException.cs
- WebPartDisplayModeEventArgs.cs
- ProviderConnectionPointCollection.cs
- ServiceReference.cs
- DockProviderWrapper.cs
- EntityTransaction.cs
- GenerateScriptTypeAttribute.cs
- SchemaEntity.cs
- DateTimeUtil.cs
- ViewGenResults.cs
- mongolianshape.cs
- NullToBooleanConverter.cs