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
- SQLBytesStorage.cs
- DataControlField.cs
- ClientTargetSection.cs
- CrossAppDomainChannel.cs
- ToolboxCategory.cs
- SmiContext.cs
- ApplicationTrust.cs
- CatalogPartCollection.cs
- ComponentResourceKeyConverter.cs
- ColorPalette.cs
- RectangleGeometry.cs
- FormsAuthenticationUserCollection.cs
- SmtpDigestAuthenticationModule.cs
- BoundField.cs
- TextBoxAutomationPeer.cs
- OpenTypeCommon.cs
- ManipulationStartedEventArgs.cs
- ListItemCollection.cs
- ClientEventManager.cs
- AddInContractAttribute.cs
- SafeViewOfFileHandle.cs
- DataGridViewButtonColumn.cs
- AtlasWeb.Designer.cs
- CompiledQueryCacheKey.cs
- ServiceNameElement.cs
- Double.cs
- ResourceExpressionEditor.cs
- SystemThemeKey.cs
- SmiRequestExecutor.cs
- ListViewTableRow.cs
- ResourcesBuildProvider.cs
- EdmScalarPropertyAttribute.cs
- VScrollProperties.cs
- XmlNullResolver.cs
- _NetworkingPerfCounters.cs
- PerformanceCounter.cs
- FaultReasonText.cs
- TableColumnCollection.cs
- ComplexTypeEmitter.cs
- ISAPIRuntime.cs
- ChainedAsyncResult.cs
- BinaryConverter.cs
- ViewBase.cs
- UserInitiatedRoutedEventPermission.cs
- _SpnDictionary.cs
- PreservationFileReader.cs
- OLEDB_Enum.cs
- XmlUTF8TextReader.cs
- Ref.cs
- InvokeProviderWrapper.cs
- _NtlmClient.cs
- CodeParameterDeclarationExpression.cs
- MetaForeignKeyColumn.cs
- Trigger.cs
- WebRequestModuleElementCollection.cs
- QilIterator.cs
- HtmlInputImage.cs
- ModuleElement.cs
- CompressEmulationStream.cs
- SqlSelectClauseBuilder.cs
- ContainerControl.cs
- DrawingImage.cs
- InteropAutomationProvider.cs
- DiagnosticTrace.cs
- InstalledVoice.cs
- MemberProjectionIndex.cs
- UIAgentInitializationException.cs
- XmlProcessingInstruction.cs
- TextEffectResolver.cs
- DefaultSection.cs
- VoiceSynthesis.cs
- XPathDocumentIterator.cs
- AbstractDataSvcMapFileLoader.cs
- IdentityManager.cs
- InvalidTimeZoneException.cs
- EmptyCollection.cs
- X509Utils.cs
- ImplicitInputBrush.cs
- SecureStringHasher.cs
- COM2ComponentEditor.cs
- XmlSchemaImporter.cs
- Automation.cs
- TypeInitializationException.cs
- DocumentViewerConstants.cs
- TextModifierScope.cs
- DetailsView.cs
- XmlSchemaSet.cs
- _NegotiateClient.cs
- TreeNodeConverter.cs
- HtmlInputText.cs
- MouseEventArgs.cs
- TrackBarRenderer.cs
- IncrementalReadDecoders.cs
- PolyBezierSegment.cs
- ISCIIEncoding.cs
- Int16AnimationUsingKeyFrames.cs
- DataGridViewRowEventArgs.cs
- HttpRuntimeSection.cs
- ScaleTransform.cs
- CallbackTimeoutsBehavior.cs