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
- ValueType.cs
- LowerCaseStringConverter.cs
- RequestTimeoutManager.cs
- CodeConditionStatement.cs
- AvTraceFormat.cs
- Constants.cs
- DropShadowBitmapEffect.cs
- SHA1Managed.cs
- SecondaryIndexList.cs
- altserialization.cs
- DragStartedEventArgs.cs
- WebSysDisplayNameAttribute.cs
- HostingEnvironmentSection.cs
- OutputCacheSettings.cs
- SafeThreadHandle.cs
- FileDetails.cs
- WorkflowTransactionOptions.cs
- AdCreatedEventArgs.cs
- FileNotFoundException.cs
- TextServicesPropertyRanges.cs
- ContentFileHelper.cs
- InvalidPrinterException.cs
- QueryOutputWriterV1.cs
- WebConvert.cs
- UndirectedGraph.cs
- SoapSchemaMember.cs
- DefaultBindingPropertyAttribute.cs
- WindowCollection.cs
- Polyline.cs
- StaticTextPointer.cs
- ExpressionBuilderCollection.cs
- DetailsViewPageEventArgs.cs
- WorkflowOwnerAsyncResult.cs
- WindowsSspiNegotiation.cs
- XmlDataSource.cs
- MouseCaptureWithinProperty.cs
- FixedLineResult.cs
- RequestReplyCorrelator.cs
- Int32Rect.cs
- TypeUtils.cs
- CngAlgorithm.cs
- EntityDataSourceSelectedEventArgs.cs
- SoapServerProtocol.cs
- CellTreeNode.cs
- SqlAliaser.cs
- IteratorFilter.cs
- DataGridViewIntLinkedList.cs
- ConfigXmlAttribute.cs
- TypeExtension.cs
- EntityDataSourceDesignerHelper.cs
- Point3DCollection.cs
- WindowsTreeView.cs
- WebPart.cs
- PrintPreviewGraphics.cs
- DbCommandDefinition.cs
- WebPartDisplayModeCollection.cs
- ImageFormat.cs
- RuleSettingsCollection.cs
- PageContentCollection.cs
- XmlSchemaAppInfo.cs
- XmlHierarchicalEnumerable.cs
- NameValueFileSectionHandler.cs
- TransportReplyChannelAcceptor.cs
- UserMapPath.cs
- EntityDataSourceView.cs
- NavigationProperty.cs
- Rect3DValueSerializer.cs
- MimeTextImporter.cs
- MimeAnyImporter.cs
- XamlBuildTaskServices.cs
- DropShadowBitmapEffect.cs
- Transaction.cs
- ReadingWritingEntityEventArgs.cs
- AuthenticationModuleElement.cs
- SqlParameterCollection.cs
- InnerItemCollectionView.cs
- PropertyEmitter.cs
- WebPartCancelEventArgs.cs
- GroupStyle.cs
- RemoteArgument.cs
- DescendantBaseQuery.cs
- ValidationPropertyAttribute.cs
- TableRowGroup.cs
- TextPointer.cs
- NavigationCommands.cs
- ObjectParameter.cs
- SystemIPAddressInformation.cs
- FixUp.cs
- DataControlPagerLinkButton.cs
- WebPartDisplayModeEventArgs.cs
- ExpressionEditor.cs
- Knowncolors.cs
- Exceptions.cs
- IgnoreFileBuildProvider.cs
- Module.cs
- InputScope.cs
- SqlUserDefinedAggregateAttribute.cs
- HwndHostAutomationPeer.cs
- DataListItemEventArgs.cs
- SelectionUIService.cs