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
- RealProxy.cs
- SqlGatherConsumedAliases.cs
- XmlSchemaObjectTable.cs
- WebPartManager.cs
- FileDialogCustomPlacesCollection.cs
- ShaderEffect.cs
- HyperLinkField.cs
- MissingSatelliteAssemblyException.cs
- LogEntrySerialization.cs
- ImageButton.cs
- ContentDisposition.cs
- ItemChangedEventArgs.cs
- ServiceRoute.cs
- QilChoice.cs
- KnownTypesHelper.cs
- GridViewEditEventArgs.cs
- StylusPoint.cs
- securestring.cs
- XXXInfos.cs
- Calendar.cs
- AssemblyBuilder.cs
- ExecutionScope.cs
- ContentDefinition.cs
- ColorDialog.cs
- SerialStream.cs
- DocumentGridPage.cs
- HitTestWithGeometryDrawingContextWalker.cs
- MethodResolver.cs
- DrawingServices.cs
- SqlFormatter.cs
- XmlTextAttribute.cs
- CodePropertyReferenceExpression.cs
- StylusPointDescription.cs
- MethodCallConverter.cs
- URLAttribute.cs
- FixedDocumentSequencePaginator.cs
- CapabilitiesUse.cs
- XPathNodeIterator.cs
- InputScope.cs
- XmlLangPropertyAttribute.cs
- SiteMapDesignerDataSourceView.cs
- OciEnlistContext.cs
- InvalidComObjectException.cs
- StringCollection.cs
- KeyboardEventArgs.cs
- UIElementParagraph.cs
- ExtendedProperty.cs
- DocumentPaginator.cs
- ICollection.cs
- FontNameEditor.cs
- DispatchWrapper.cs
- DataGridAutoGeneratingColumnEventArgs.cs
- GroupByExpressionRewriter.cs
- Directory.cs
- CssClassPropertyAttribute.cs
- TemplateKeyConverter.cs
- NeedSkipTokenVisitor.cs
- RegexRunnerFactory.cs
- TemplateControlParser.cs
- PipelineDeploymentState.cs
- ConstructorBuilder.cs
- ApplicationDirectory.cs
- SvcFileManager.cs
- MultiView.cs
- DelegatingMessage.cs
- PrintingPermission.cs
- UTF32Encoding.cs
- SqlUserDefinedAggregateAttribute.cs
- contentDescriptor.cs
- QueryOptionExpression.cs
- ServicePointManager.cs
- DescendentsWalker.cs
- EmbeddedMailObject.cs
- ThrowOnMultipleAssignment.cs
- TextServicesCompartmentEventSink.cs
- FormsIdentity.cs
- ExtensionFile.cs
- IsolationInterop.cs
- SafeUserTokenHandle.cs
- WorkflowInlining.cs
- BasicHttpMessageSecurityElement.cs
- GridErrorDlg.cs
- PropertyValueChangedEvent.cs
- ThreadStaticAttribute.cs
- Int32CAMarshaler.cs
- CodeDomConfigurationHandler.cs
- NewExpression.cs
- ExpressionEditorAttribute.cs
- RunWorkerCompletedEventArgs.cs
- Set.cs
- HostingPreferredMapPath.cs
- XmlSequenceWriter.cs
- SmiEventSink_Default.cs
- Model3DGroup.cs
- SiteMapHierarchicalDataSourceView.cs
- securitymgrsite.cs
- DecoderFallbackWithFailureFlag.cs
- controlskin.cs
- UnknownWrapper.cs
- DispatcherExceptionFilterEventArgs.cs