Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / TransformBlockRequest.cs / 1 / TransformBlockRequest.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace Microsoft.InfoCards
{
using System;
using System.IO;
using System.Security.Principal;
using System.Diagnostics;
using IDT = Microsoft.InfoCards.Diagnostics.InfoCardTrace;
//
// Summary:
// Manages an encryption request from the client against a specified cryptosession.
//
class TransformBlockRequest : ClientRequest
{
//
// The cryptosession id we are attaching to.
//
int m_cryptoSession;
//
// The cleartext data we wish to transfrom
//
byte[] m_inBlock;
//
// The transformed data.
//
byte[] m_outBlock;
//
// The number of bytes to send back out of the transformed data buffer.
//
int m_outBlockSize;
//
// Sumamry:
// Construct an TransformBlockRequest object
//
// Arguments:
// callingProcess - The process in which the caller originated.
// callingIdentity - The WindowsIdentity of the caller
// rpcHandle - The handle of the native RPC request
// inArgs - The stream to read input data from
// outArgs - The stream to write output data to
//
public TransformBlockRequest( Process callingProcess, WindowsIdentity callingIdentity, IntPtr rpcHandle, Stream inArgs, Stream outArgs )
: base( callingProcess, callingIdentity, rpcHandle, inArgs, outArgs )
{
IDT.TraceDebug( "Intiating an Encrypt request" );
}
protected override void OnMarshalInArgs()
{
IDT.DebugAssert( null != InArgs, "null inargs" );
BinaryReader reader = new InfoCardBinaryReader( InArgs );
m_cryptoSession = reader.ReadInt32();
int count = reader.ReadInt32();
m_inBlock = reader.ReadBytes( count );
IDT.ThrowInvalidArgumentConditional( 0 == m_cryptoSession, "cryptoSession" );
IDT.ThrowInvalidArgumentConditional( null == m_inBlock || 0 == m_inBlock.Length, "inBlock" );
}
//
// Summary:
// Attach to the appropriate cryptosession and encrypt/decrypt the data.
//
protected override void OnProcess()
{
try
{
TransformCryptoSession session =
(TransformCryptoSession) CryptoSession.Find( m_cryptoSession, CallerPid, RequestorIdentity.User );
m_outBlockSize = session.TransformBlock( m_inBlock, out m_outBlock );
IDT.DebugAssert( m_outBlockSize <= m_outBlock.Length, "size mismatch after TransformBlock" );
}
finally
{
Array.Clear( m_inBlock, 0, m_inBlock.Length );
}
}
protected override void OnMarshalOutArgs()
{
IDT.ThrowInvalidArgumentConditional( null == OutArgs, "OutArgs" );
IDT.ThrowInvalidArgumentConditional( null == m_outBlock, "outBlock" );
BinaryWriter writer = new BinaryWriter( OutArgs );
Utility.SerializeBytes( writer, m_outBlock, 0, m_outBlockSize );
}
}
}
// 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
- InvalidEnumArgumentException.cs
- ParserOptions.cs
- __Filters.cs
- RegisteredArrayDeclaration.cs
- ADMembershipUser.cs
- ArglessEventHandlerProxy.cs
- ApplicationInfo.cs
- LambdaExpression.cs
- DodSequenceMerge.cs
- TextTreeNode.cs
- WindowsComboBox.cs
- CompositeFontInfo.cs
- TypedDataSetSchemaImporterExtension.cs
- XmlSigningNodeWriter.cs
- ColorTransformHelper.cs
- Win32Exception.cs
- DataGridViewColumnDesigner.cs
- WebPartDisplayModeCollection.cs
- EventEntry.cs
- TraceLevelStore.cs
- RangeEnumerable.cs
- TypeForwardedToAttribute.cs
- XmlAttributeAttribute.cs
- X509AudioLogo.cs
- MediaTimeline.cs
- PanelDesigner.cs
- Oci.cs
- ConfigurationManagerInternal.cs
- Application.cs
- BaseUriHelper.cs
- VisualSerializer.cs
- SiteOfOriginPart.cs
- VBCodeProvider.cs
- ColumnMap.cs
- DelimitedListTraceListener.cs
- FastEncoderWindow.cs
- Helper.cs
- ValidatedMobileControlConverter.cs
- NameNode.cs
- IteratorDescriptor.cs
- HtmlShim.cs
- TextDocumentView.cs
- XmlUtf8RawTextWriter.cs
- SoundPlayerAction.cs
- BinaryCommonClasses.cs
- MexNamedPipeBindingCollectionElement.cs
- ModuleBuilder.cs
- PrinterResolution.cs
- TypeBinaryExpression.cs
- SchemaMerger.cs
- PeoplePickerWrapper.cs
- ClientWindowsAuthenticationMembershipProvider.cs
- SelfIssuedAuthAsymmetricKey.cs
- StructuralObject.cs
- TransformerInfo.cs
- AccessedThroughPropertyAttribute.cs
- SqlXmlStorage.cs
- NotImplementedException.cs
- PerformanceCounterPermissionEntryCollection.cs
- TypeConverterMarkupExtension.cs
- CaseInsensitiveOrdinalStringComparer.cs
- EditorReuseAttribute.cs
- BinaryNode.cs
- DetailsViewInsertedEventArgs.cs
- DetailsViewInsertEventArgs.cs
- OrderToken.cs
- RoutingExtensionElement.cs
- RectAnimationBase.cs
- SyndicationDeserializer.cs
- SqlDataSourceQueryEditor.cs
- ButtonBase.cs
- MultiTrigger.cs
- DPAPIProtectedConfigurationProvider.cs
- HashHelper.cs
- CompareValidator.cs
- ToggleProviderWrapper.cs
- AccessViolationException.cs
- SHA1.cs
- ThreadPoolTaskScheduler.cs
- SubMenuStyleCollection.cs
- XmlArrayItemAttribute.cs
- PrivateFontCollection.cs
- srgsitem.cs
- ReversePositionQuery.cs
- ResourceExpressionBuilder.cs
- BitmapMetadataEnumerator.cs
- ClientRoleProvider.cs
- SessionIDManager.cs
- SqlUserDefinedTypeAttribute.cs
- WebDisplayNameAttribute.cs
- ComponentDispatcher.cs
- WebPartDescription.cs
- ClientScriptManagerWrapper.cs
- Decimal.cs
- ToolStripRenderer.cs
- OverflowException.cs
- iisPickupDirectory.cs
- VarRefManager.cs
- XamlTemplateSerializer.cs
- ToolStripArrowRenderEventArgs.cs