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
- PropertyInformation.cs
- ToolStripDesignerUtils.cs
- SHA1Managed.cs
- EnumBuilder.cs
- DataGridViewSelectedRowCollection.cs
- TimeSpanConverter.cs
- WCFModelStrings.Designer.cs
- CryptoConfig.cs
- LocalFileSettingsProvider.cs
- AdPostCacheSubstitution.cs
- LinkUtilities.cs
- _HelperAsyncResults.cs
- ByteStorage.cs
- DiscoveryClientReferences.cs
- ColorPalette.cs
- InvalidOleVariantTypeException.cs
- HierarchicalDataSourceConverter.cs
- CookielessHelper.cs
- CodeMemberMethod.cs
- DataControlCommands.cs
- PlatformCulture.cs
- AttachedPropertyMethodSelector.cs
- CheckedListBox.cs
- compensatingcollection.cs
- CodeAccessSecurityEngine.cs
- SmtpClient.cs
- SponsorHelper.cs
- ObjectItemLoadingSessionData.cs
- XMLDiffLoader.cs
- OleDbException.cs
- DockEditor.cs
- WindowsStatic.cs
- AttributeProviderAttribute.cs
- ReflectionHelper.cs
- WebHttpBindingCollectionElement.cs
- GeneralTransform3DTo2D.cs
- SQLCharsStorage.cs
- PtsHost.cs
- WebPartConnectionsEventArgs.cs
- DataObjectSettingDataEventArgs.cs
- ApplicationSecurityInfo.cs
- HtmlGenericControl.cs
- graph.cs
- OpenTypeLayoutCache.cs
- DataControlFieldTypeEditor.cs
- InputLangChangeEvent.cs
- ArrayConverter.cs
- Int32Rect.cs
- SectionRecord.cs
- SqlReferenceCollection.cs
- CompositeScriptReference.cs
- TreeWalker.cs
- SmtpDateTime.cs
- Light.cs
- SparseMemoryStream.cs
- DataGridViewRowStateChangedEventArgs.cs
- HotSpotCollection.cs
- LinqDataSourceValidationException.cs
- Part.cs
- RPIdentityRequirement.cs
- Security.cs
- ComplusEndpointConfigContainer.cs
- DataGridViewSelectedColumnCollection.cs
- KeyedHashAlgorithm.cs
- RoleManagerModule.cs
- TextSegment.cs
- SecurityKeyIdentifier.cs
- ElementHostAutomationPeer.cs
- HttpFormatExtensions.cs
- ClassGenerator.cs
- TransactionScopeDesigner.cs
- MenuBindingsEditorForm.cs
- ObjectNotFoundException.cs
- linebase.cs
- PerfCounterSection.cs
- PolyBezierSegment.cs
- BrowserTree.cs
- DescendantQuery.cs
- ReferenceTypeElement.cs
- StorageConditionPropertyMapping.cs
- ContainsRowNumberChecker.cs
- XmlSerializerOperationBehavior.cs
- MenuItemCollection.cs
- DbDeleteCommandTree.cs
- XmlSchemaAttributeGroupRef.cs
- ControlTemplate.cs
- shaper.cs
- SqlException.cs
- ConditionCollection.cs
- CodePageEncoding.cs
- Point3DCollection.cs
- GridViewColumn.cs
- SessionStateItemCollection.cs
- HtmlEmptyTagControlBuilder.cs
- TemplateBamlRecordReader.cs
- ComPersistableTypeElementCollection.cs
- ArraySortHelper.cs
- UserControlBuildProvider.cs
- WorkflowInstanceProvider.cs
- AuthenticationConfig.cs