Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / SafeRsaProviderHandle.cs / 1 / SafeRsaProviderHandle.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace Microsoft.InfoCards
{
using System;
using System.ComponentModel;
using System.Globalization;
using System.Runtime.InteropServices;
using System.Runtime.ConstrainedExecution;
using System.Security;
using Microsoft.InfoCards.Diagnostics;
using IDT=Microsoft.InfoCards.Diagnostics.InfoCardTrace;
//
// Summary:
// Provides a wrapper over a handle retrieved by CryptAcquireContext
//
internal class SafeRsaProviderHandle : SafeHandle
{
[DllImport( "advapi32.dll",
EntryPoint ="CryptAcquireContextW",
CharSet = CharSet.Unicode,
ExactSpelling = true,
SetLastError = true ) ]
[SuppressUnmanagedCodeSecurity]
private static extern bool CryptAcquireContext(
[Out] out SafeRsaProviderHandle hProv,
[In] string pszContainer,
[In] string pszProvider,
[In] uint dwProvType,
[In] uint dwFlags );
[DllImport( "advapi32.dll",
EntryPoint = "CryptReleaseContext",
CharSet = CharSet.Unicode,
ExactSpelling = true,
SetLastError = true ) ]
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)]
[SuppressUnmanagedCodeSecurity]
private static extern bool CryptReleaseContext(
[In] IntPtr hProv,
[In] uint dwFlags );
public static SafeRsaProviderHandle Construct()
{
//
// The native provider we use to do encryption and decryption and associated constants to
// set up the Microsoft Enhanced RSA and AES provider
//
const uint CRYPT_VERIFYCONTEXT = 0xF0000000;
const byte PROV_RSA_AES = 24;
//
// We use a null provider and CRYPT_VERIFYCONTEXT as a flag
// to force the use of ephemeral keys. See http://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B238187
// for details.
//
SafeRsaProviderHandle h;
if( !SafeRsaProviderHandle.CryptAcquireContext( out h,
null,
null,
PROV_RSA_AES,
CRYPT_VERIFYCONTEXT ) )
{
Win32Exception e = new Win32Exception( Marshal.GetLastWin32Error() );
IDT.CloseInvalidOutSafeHandle(h);
IDT.TraceAndLogException( e );
throw IDT.ThrowHelperError( new CommunicationException( e.Message ) );
}
return h;
}
private SafeRsaProviderHandle() : base( IntPtr.Zero, true )
{
}
public override bool IsInvalid
{
get
{
return ( IntPtr.Zero == base.handle );
}
}
protected override bool ReleaseHandle()
{
#pragma warning suppress 56523
return CryptReleaseContext( base.handle, 0 );
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RectValueSerializer.cs
- EntityWrapper.cs
- ApplicationDirectory.cs
- COAUTHINFO.cs
- FixedFindEngine.cs
- RecipientInfo.cs
- ItemCheckedEvent.cs
- XpsS0ValidatingLoader.cs
- DataSourceView.cs
- KeyboardDevice.cs
- EncoderFallback.cs
- MetadataArtifactLoaderResource.cs
- EdmFunctions.cs
- UInt16Converter.cs
- PageClientProxyGenerator.cs
- EnumType.cs
- ToolStripLabel.cs
- IsolatedStorageException.cs
- XmlSerializerNamespaces.cs
- ListItemConverter.cs
- BaseValidatorDesigner.cs
- ThaiBuddhistCalendar.cs
- CreatingCookieEventArgs.cs
- ProviderConnectionPointCollection.cs
- SymbolPair.cs
- RouteTable.cs
- HostSecurityManager.cs
- EnumConverter.cs
- XmlNullResolver.cs
- MimeXmlImporter.cs
- X509AsymmetricSecurityKey.cs
- MobileSysDescriptionAttribute.cs
- SecurityElement.cs
- OrderByExpression.cs
- XmlCustomFormatter.cs
- mda.cs
- DataGridViewHitTestInfo.cs
- ContentPosition.cs
- DataServiceQueryProvider.cs
- IndentTextWriter.cs
- DocumentPageView.cs
- DocumentXmlWriter.cs
- LogManagementAsyncResult.cs
- HexParser.cs
- ISCIIEncoding.cs
- path.cs
- CodeTypeDelegate.cs
- StringComparer.cs
- NamespaceEmitter.cs
- ItemCheckEvent.cs
- StoreContentChangedEventArgs.cs
- TypeElementCollection.cs
- DesignerVerbCollection.cs
- SR.cs
- ScrollEvent.cs
- DesignerLabelAdapter.cs
- ProcessActivityTreeOptions.cs
- XmlSchemaFacet.cs
- CodeBlockBuilder.cs
- WebPartHeaderCloseVerb.cs
- SchemaLookupTable.cs
- QuaternionAnimation.cs
- PolicyException.cs
- RadioButton.cs
- ItemCheckedEvent.cs
- HtmlValidatorAdapter.cs
- WSSecurityOneDotZeroSendSecurityHeader.cs
- StringSorter.cs
- HScrollBar.cs
- StringBuilder.cs
- _DomainName.cs
- CroppedBitmap.cs
- TypeElement.cs
- NamedPipeActivation.cs
- AutoGeneratedField.cs
- JsonDeserializer.cs
- RuleSetBrowserDialog.cs
- TripleDES.cs
- WebAdminConfigurationHelper.cs
- InputLanguageManager.cs
- WindowsUpDown.cs
- EventLogPermissionEntry.cs
- CoTaskMemHandle.cs
- LogPolicy.cs
- HTTPNotFoundHandler.cs
- TextServicesDisplayAttribute.cs
- ActivityTypeDesigner.xaml.cs
- MultipartContentParser.cs
- ContainerActivationHelper.cs
- PersonalizationStateQuery.cs
- FixedPageProcessor.cs
- VideoDrawing.cs
- Baml2006ReaderFrame.cs
- Menu.cs
- PersonalizationAdministration.cs
- PrimaryKeyTypeConverter.cs
- XslVisitor.cs
- LambdaCompiler.Address.cs
- TreeNodeEventArgs.cs
- BlurEffect.cs