Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / infocard / Service / managed / Microsoft / InfoCards / GetPolicyDetailsRequest.cs / 1 / GetPolicyDetailsRequest.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace Microsoft.InfoCards
{
using System;
using System.IO;
using System.Security;
using System.Security.Cryptography.X509Certificates;
using System.Collections;
using System.Collections.Generic;
using Microsoft.InfoCards.Diagnostics;
using IDT = Microsoft.InfoCards.Diagnostics.InfoCardTrace;
//
// This class handles a UI request for recipient information
//
class GetPolicyDetailsRequest : UIAgentRequest
{
InfoCardPolicy m_policy;
Recipient m_recipient;
String m_privacyPolicyLink = String.Empty;
//
// Summary
// Create a new request to return recipient related information
//
public GetPolicyDetailsRequest( IntPtr rpcHandle, Stream inArgs, Stream outArgs, ClientUIRequest parent )
: base( rpcHandle, inArgs, outArgs, parent )
{
}
protected override void OnInitializeAsSystem()
{
base.OnInitializeAsSystem();
m_policy = GetPolicy();
}
protected override void OnMarshalInArgs()
{
}
protected override void OnProcess()
{
IDT.Assert( null != m_policy, "Null policy" );
StoreConnection connection = StoreConnection.GetConnection();
try
{
//
// Retrieve the recipient object from the store
//
List paramList = new List();
QueryParameter query = new QueryParameter(
SecondaryIndexDefinition.ObjectTypeIndex,
( Int32 )StorableObjectType.Recipient );
paramList.Add( query );
query = new QueryParameter(
SecondaryIndexDefinition.RecipientIdIndex,
m_policy.Recipient.GetIdentifier() );
paramList.Add( query );
DataRow row = connection.GetSingleRow( paramList.ToArray() );
X509RecipientIdentity recipient = m_policy.Recipient as X509RecipientIdentity;
if( null != recipient )
{
ParentRequest.CertCacheAdd( m_policy.Recipient.GetIdentifier(), recipient.LeafCertificate );
}
if( null != row )
{
m_recipient = new Recipient( new MemoryStream( row.GetDataField() ), m_policy.Recipient, true );
if ( m_recipient.Trust == Recipient.TrustDecision.IsTrusted
&& m_recipient.PrivacyPolicyVersion != m_policy.PrivacyPolicyVersion )
{
m_recipient.Trust = Recipient.TrustDecision.PolicyVersionChange;
}
//
// update the recipient privacy policy version
//
m_recipient.PrivacyPolicyVersion = m_policy.PrivacyPolicyVersion;
}
else
{
m_recipient = new Recipient(
m_policy.Recipient,
true,
m_policy.PrivacyPolicyVersion );
m_recipient.Trust = Recipient.TrustDecision.NoTrustDecision;
}
m_privacyPolicyLink = m_policy.PrivacyPolicyLink;
}
finally
{
connection.Close();
}
}
//
// Summary
// Serialize the output in the following order
// requiresManagedCard ( bool )
// requiresSelfIssuedCard ( bool )
// if browser scenario ( bool )
// recipient certificate - recipient id
// count of required claims ( int32 )
// each claim ( string )
// count of optional claims ( int32 )
// each claim ( string )
//
//
protected override void OnMarshalOutArgs()
{
IDT.Assert( null != m_policy, "Null policy" );
BinaryWriter writer = new BinaryWriter( OutArgs, System.Text.Encoding.Unicode );
writer.Write( m_policy.RequiresManagedCard );
writer.Write( m_policy.RequiresSelfIssuedCard );
writer.Write( this.ParentRequest is GetBrowserTokenRequest );
IDT.TraceDebug( "Serialize the recipient" );
m_recipient.Serialize( writer );
IDT.TraceDebug( "Serialize the privacy information" );
Utility.SerializeString( writer, m_privacyPolicyLink );
IDT.TraceDebug( "Retrieve the requested claim uri's from the policy" );
if( null != m_policy.RequiredClaims )
{
writer.Write( ( Int32 )m_policy.RequiredClaims.Length );
for( int i = 0; i < m_policy.RequiredClaims.Length; i++ )
{
Utility.SerializeString( writer, m_policy.RequiredClaims[ i ] );
}
}
else
{
writer.Write( ( Int32 )0 );
}
IDT.TraceDebug( "Retrieve the optional claim uri's from the policy" );
if( null != m_policy.OptionalClaims )
{
writer.Write( ( Int32 )m_policy.OptionalClaims.Length );
for( int i = 0; i < m_policy.OptionalClaims.Length; i++ )
{
Utility.SerializeString( writer, m_policy.OptionalClaims[ i ] );
}
}
else
{
writer.Write( ( Int32 )0 );
}
}
}
}
// 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
- MultiTrigger.cs
- IProvider.cs
- HierarchicalDataSourceDesigner.cs
- DomainLiteralReader.cs
- HttpHandlersSection.cs
- BindingSourceDesigner.cs
- CriticalExceptions.cs
- ItemList.cs
- SqlBulkCopyColumnMapping.cs
- MouseGestureValueSerializer.cs
- WmpBitmapEncoder.cs
- ServiceMemoryGates.cs
- WorkflowTraceTransfer.cs
- DetailsViewActionList.cs
- RelationshipFixer.cs
- ModelVisual3D.cs
- ApplicationInterop.cs
- Scripts.cs
- OutKeywords.cs
- DbResourceAllocator.cs
- arabicshape.cs
- PropertyMapper.cs
- NativeMethods.cs
- StylusSystemGestureEventArgs.cs
- AspNetCacheProfileAttribute.cs
- ParentUndoUnit.cs
- IsolatedStorageException.cs
- ObjectManager.cs
- DoubleAnimation.cs
- Preprocessor.cs
- DictionaryContent.cs
- Char.cs
- ChangePassword.cs
- SimpleTypeResolver.cs
- OleServicesContext.cs
- BackStopAuthenticationModule.cs
- ImmutableAssemblyCacheEntry.cs
- HMACSHA384.cs
- ExceptionDetail.cs
- HybridDictionary.cs
- panel.cs
- KeyValuePair.cs
- ClientSettingsStore.cs
- Avt.cs
- Invariant.cs
- RoutedEventHandlerInfo.cs
- RegisteredExpandoAttribute.cs
- RsaSecurityToken.cs
- JsonSerializer.cs
- TransformerInfoCollection.cs
- CryptoKeySecurity.cs
- AcceleratedTokenProvider.cs
- DataGridCaption.cs
- SelectedDatesCollection.cs
- JoinGraph.cs
- HttpModuleCollection.cs
- IListConverters.cs
- Helper.cs
- DbProviderManifest.cs
- QueryExpr.cs
- WSSecurityXXX2005.cs
- BamlWriter.cs
- PeerCustomResolverSettings.cs
- DrawingContextDrawingContextWalker.cs
- CurrencyManager.cs
- MetadataArtifactLoaderCompositeResource.cs
- ClientProtocol.cs
- MemberPath.cs
- CaseInsensitiveComparer.cs
- FrameworkElement.cs
- MatrixAnimationBase.cs
- EditorPartCollection.cs
- SqlNotificationRequest.cs
- ListBoxItemWrapperAutomationPeer.cs
- ApplicationHost.cs
- DataGridPagingPage.cs
- ValueTypeFixupInfo.cs
- ServiceOperation.cs
- ValueProviderWrapper.cs
- UnsafeNativeMethodsMilCoreApi.cs
- _LoggingObject.cs
- ListViewDeleteEventArgs.cs
- Throw.cs
- DebugView.cs
- Vector3D.cs
- InvalidPropValue.cs
- WebResourceAttribute.cs
- GlyphRunDrawing.cs
- EntityCommandCompilationException.cs
- WsatConfiguration.cs
- EmbeddedObject.cs
- TokenBasedSet.cs
- ListViewItemMouseHoverEvent.cs
- ZipIOExtraField.cs
- CollectionViewGroup.cs
- EntitySqlException.cs
- ValidationContext.cs
- MenuStrip.cs
- UserPersonalizationStateInfo.cs
- CollectionViewGroup.cs