Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / DecryptRequest.cs / 1 / DecryptRequest.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace Microsoft.InfoCards { using System; using System.IO; using IDT = Microsoft.InfoCards.Diagnostics.InfoCardTrace; using System.Security.Principal; using System.Diagnostics; // // Summary: // Manages an decryption request from the client against a specified cryptosession. // class DecryptRequest : ClientRequest { // // The cryptosession id we are attaching to. // int m_cryptoSession; // // Whether the data is padded using OAEP. // bool m_useOAEP; // // The encrypted data we wish to decrypt. // byte[] m_encrypted; // // The data after decryption. // byte[] m_decrypted; // // Sumamry: // Construct a DecyrptRequest 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 DecryptRequest( Process callingProcess, WindowsIdentity callingIdentity, IntPtr rpcHandle, Stream inArgs, Stream outArgs ) : base( callingProcess, callingIdentity, rpcHandle, inArgs, outArgs ) { IDT.TraceDebug( "Intiating a Decrypt request" ); m_cryptoSession = 0; m_useOAEP = false; m_encrypted = null; m_decrypted = null; } protected override void OnMarshalInArgs() { IDT.DebugAssert( null != InArgs, "null inargs" ); BinaryReader reader = new InfoCardBinaryReader( InArgs ); // // Reader should have data in the order: // crytposession ( int32 ) // isOAEP ( int32 ) // encrypted len ( int32 ) // encrypted bytes // m_cryptoSession = reader.ReadInt32(); m_useOAEP = reader.ReadBoolean(); int count = reader.ReadInt32(); m_encrypted = reader.ReadBytes( count ); IDT.ThrowInvalidArgumentConditional( 0 == m_cryptoSession, "cryptoSession" ); IDT.ThrowInvalidArgumentConditional( null == m_encrypted || 0 == m_encrypted.Length, "encrypted" ); } // // Summary: // Attach to the appropriate cryptosession and decrypt the data. // protected override void OnProcess() { IDT.DebugAssert( 0 != m_cryptoSession, "null crypto session" ); IDT.DebugAssert( null != m_encrypted && 0 != m_encrypted.Length, "null encrypted data" ); AsymmetricCryptoSession session = (AsymmetricCryptoSession) CryptoSession.Find( m_cryptoSession, CallerPid, RequestorIdentity.User ); m_decrypted = session.Decrypt( m_useOAEP, m_encrypted ); IDT.DebugAssert( null != m_decrypted && 0 != m_decrypted.Length, "null decrypted data" ); } // // Summary: // Return our decrypted data back to the caller, and wipe our cleartext buffer. // protected override void OnMarshalOutArgs() { IDT.DebugAssert( null != OutArgs, "Null out args" ); IDT.DebugAssert( null != m_decrypted, "null decrypted buffer" ); try { BinaryWriter writer = new BinaryWriter( OutArgs ); Utility.SerializeBytes( writer, m_decrypted ); } finally { Array.Clear( m_decrypted, 0, m_decrypted.Length ); } } } } // 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
- ConfigurationProperty.cs
- ConfigurationPropertyAttribute.cs
- View.cs
- Point3DKeyFrameCollection.cs
- SqlWorkflowInstanceStore.cs
- XmlEntityReference.cs
- AdapterUtil.cs
- DataServiceClientException.cs
- UdpDiscoveryEndpoint.cs
- ReadingWritingEntityEventArgs.cs
- precedingquery.cs
- EntitySetBaseCollection.cs
- ObjectListCommandEventArgs.cs
- ByteKeyFrameCollection.cs
- TextTabProperties.cs
- mda.cs
- ModifierKeysValueSerializer.cs
- mongolianshape.cs
- CodeAccessSecurityEngine.cs
- ReturnEventArgs.cs
- ScrollViewer.cs
- Bidi.cs
- CodeGenerator.cs
- XamlTemplateSerializer.cs
- HtmlWindowCollection.cs
- DropTarget.cs
- TranslateTransform3D.cs
- BuildDependencySet.cs
- ImageDesigner.cs
- ResolveResponse.cs
- Point3DAnimationBase.cs
- EventProxy.cs
- Separator.cs
- Pair.cs
- Win32.cs
- ManagedIStream.cs
- EntityConnectionStringBuilderItem.cs
- StandardCommands.cs
- EvidenceTypeDescriptor.cs
- XamlSerializationHelper.cs
- ParserHooks.cs
- CheckPair.cs
- SafeArrayTypeMismatchException.cs
- XmlSchemaGroupRef.cs
- NotifyIcon.cs
- WebScriptEnablingBehavior.cs
- ModelItem.cs
- XmlTextReaderImplHelpers.cs
- MessageSecurityOverTcpElement.cs
- ProvideValueServiceProvider.cs
- IndexOutOfRangeException.cs
- RMEnrollmentPage3.cs
- ProfilePropertyNameValidator.cs
- NullableFloatMinMaxAggregationOperator.cs
- HitTestDrawingContextWalker.cs
- SoapExtensionStream.cs
- DefaultAssemblyResolver.cs
- __Filters.cs
- VirtualPathUtility.cs
- OdbcUtils.cs
- CategoryAttribute.cs
- BuildManagerHost.cs
- SimpleHandlerFactory.cs
- JsonDataContract.cs
- XhtmlTextWriter.cs
- XmlSchemaAll.cs
- BlurBitmapEffect.cs
- GridErrorDlg.cs
- MetadataException.cs
- BitArray.cs
- ExpressionList.cs
- WizardForm.cs
- InternalUserCancelledException.cs
- MetabaseReader.cs
- String.cs
- RemotingConfiguration.cs
- _RequestCacheProtocol.cs
- XhtmlTextWriter.cs
- SkinBuilder.cs
- WinFormsComponentEditor.cs
- BitmapImage.cs
- EventInfo.cs
- PropertyNames.cs
- InnerItemCollectionView.cs
- ContentFileHelper.cs
- PermissionToken.cs
- HexParser.cs
- ColorTransform.cs
- RestHandlerFactory.cs
- StorageEndPropertyMapping.cs
- PermissionListSet.cs
- TabPanel.cs
- ParenthesizePropertyNameAttribute.cs
- WebDescriptionAttribute.cs
- ThreadStartException.cs
- TextContainerHelper.cs
- Calendar.cs
- GCHandleCookieTable.cs
- KeyInfo.cs
- LineGeometry.cs