Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / GetCryptoTransformRequest.cs / 1 / GetCryptoTransformRequest.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace Microsoft.InfoCards
{
using System;
using System.Collections;
using System.Diagnostics;
using System.Security.Principal;
using System.Threading; //ManualResetEvent
using System.ComponentModel; //Win32Exception
using System.IO; //Stream
using System.Security.Cryptography;
using System.Text;
using IDT = Microsoft.InfoCards.Diagnostics.InfoCardTrace;
//
// Summary:
// Wraps a request to get a remoted ICryptoTransform interface based on a SymmetricCryptoSession.
//
class GetCryptoTransformRequest : ClientRequest
{
//
// The cryptosession id we are attaching to.
//
int m_cryptoSession;
//
// The cipher mode being requested.
//
CipherMode m_mode;
//
// The padding mode being requested.
//
PaddingMode m_padding;
//
// The feedback size being requested
//
int m_feedbackSize;
//
// Is Encryption or Decryption being requested.
//
SymmetricCryptoSession.Direction m_direction;
//
// The intialization vector.
//
byte[] m_iv;
//
// The returned transform session.
//
TransformCryptoSession m_transformSession;
//
// Sumamry:
// Construct a GetCryptoTransformRequest 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 GetCryptoTransformRequest( Process callingProcess, WindowsIdentity callingIdentity, IntPtr rpcHandle, Stream inArgs, Stream outArgs )
: base( callingProcess, callingIdentity, rpcHandle, inArgs, outArgs )
{
IDT.TraceDebug( "Intiating a GetCryptoTransform request" );
}
protected override void OnMarshalInArgs()
{
IDT.DebugAssert( null != InArgs, "null inargs" );
BinaryReader reader = new InfoCardBinaryReader( InArgs, Encoding.Unicode );
m_cryptoSession = reader.ReadInt32();
m_mode = (CipherMode)reader.ReadInt32();
m_padding = (PaddingMode)reader.ReadInt32();
m_feedbackSize = reader.ReadInt32();
m_direction = (SymmetricCryptoSession.Direction)reader.ReadInt32();
m_iv = reader.ReadBytes( reader.ReadInt32() );
IDT.ThrowInvalidArgumentConditional( 0 == m_feedbackSize, "feedbackSize" );
}
//
// Summary:
// Attach to the appropriate cryptosession and get a CryptoTransform
//
protected override void OnProcess()
{
SymmetricCryptoSession session =
( SymmetricCryptoSession )CryptoSession.Find( m_cryptoSession, CallerPid, RequestorIdentity.User );
m_transformSession = session.GetCryptoTransform( m_mode, m_padding, m_feedbackSize, m_direction, m_iv );
}
//
// Summary:
// Return the TransformCryptoSession
//
protected override void OnMarshalOutArgs()
{
IDT.DebugAssert( null != OutArgs, "Null out args" );
BinaryWriter writer = new BinaryWriter( OutArgs, Encoding.Unicode );
IDT.DebugAssert( null != m_transformSession, "unexpected null outgoing transfromSession" );
m_transformSession.Write( writer );
writer.Flush();
}
}
}
// 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
- HostingEnvironmentWrapper.cs
- TaiwanCalendar.cs
- TextElement.cs
- NamedElement.cs
- ComponentRenameEvent.cs
- RawStylusActions.cs
- BamlLocalizabilityResolver.cs
- FrameAutomationPeer.cs
- AnnotationAdorner.cs
- XMLSchema.cs
- DynamicResourceExtensionConverter.cs
- WindowsTreeView.cs
- PathSegment.cs
- UInt64.cs
- CodeDomComponentSerializationService.cs
- WinEventQueueItem.cs
- ProcessHost.cs
- EntityDesignerUtils.cs
- IBuiltInEvidence.cs
- XmlIlGenerator.cs
- DataGridBoolColumn.cs
- AliasedExpr.cs
- GridViewSortEventArgs.cs
- InputScope.cs
- MouseEventArgs.cs
- XmlText.cs
- WithParamAction.cs
- ScriptHandlerFactory.cs
- ExeContext.cs
- DataTableCollection.cs
- SqlNamer.cs
- DropDownList.cs
- _RequestCacheProtocol.cs
- Style.cs
- ClaimComparer.cs
- DataGridViewCellLinkedList.cs
- WindowsSpinner.cs
- DesignerOptions.cs
- EventTrigger.cs
- Authorization.cs
- ChtmlPageAdapter.cs
- DemultiplexingClientMessageFormatter.cs
- ListViewDeleteEventArgs.cs
- ConstraintEnumerator.cs
- Ref.cs
- Privilege.cs
- QuaternionConverter.cs
- StylusDownEventArgs.cs
- InstanceKey.cs
- ObjectIDGenerator.cs
- BufferBuilder.cs
- PLINQETWProvider.cs
- ExtendedPropertyCollection.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- AppearanceEditorPart.cs
- SQLInt16Storage.cs
- ObjectParameter.cs
- DistinctQueryOperator.cs
- PublishLicense.cs
- SiteOfOriginPart.cs
- _HelperAsyncResults.cs
- EntityPropertyMappingAttribute.cs
- x509store.cs
- SQLDecimalStorage.cs
- WindowVisualStateTracker.cs
- WinEventWrap.cs
- RegisteredArrayDeclaration.cs
- ErrorWebPart.cs
- DisplayInformation.cs
- SystemWebSectionGroup.cs
- WebPartsPersonalization.cs
- TextSpan.cs
- ToolStripContextMenu.cs
- PanningMessageFilter.cs
- SMSvcHost.cs
- ButtonPopupAdapter.cs
- WebZone.cs
- InvokeProviderWrapper.cs
- TextLineBreak.cs
- StorageMappingItemLoader.cs
- ThreadAttributes.cs
- VariableValue.cs
- PingReply.cs
- ReadOnlyDictionary.cs
- LowerCaseStringConverter.cs
- WebPartUtil.cs
- StreamInfo.cs
- Point4D.cs
- DoubleLink.cs
- DBSchemaTable.cs
- ComponentResourceManager.cs
- JumpPath.cs
- LicenseContext.cs
- SQLMembershipProvider.cs
- BindingExpression.cs
- ExceptionTranslationTable.cs
- DbConnectionHelper.cs
- _OverlappedAsyncResult.cs
- ClientSideProviderDescription.cs
- DataGridViewCheckBoxCell.cs