Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / ServiceModel / System / ServiceModel / Security / LaxModeSecurityHeaderElementInferenceEngine.cs / 1 / LaxModeSecurityHeaderElementInferenceEngine.cs
//---------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.ServiceModel.Security { using System.ServiceModel.Channels; using System.ServiceModel.Security.Tokens; using System.Xml; using SignedXml = System.IdentityModel.SignedXml; using StandardSignedInfo = System.IdentityModel.StandardSignedInfo; class LaxModeSecurityHeaderElementInferenceEngine : SecurityHeaderElementInferenceEngine { static LaxModeSecurityHeaderElementInferenceEngine instance = new LaxModeSecurityHeaderElementInferenceEngine(); protected LaxModeSecurityHeaderElementInferenceEngine() {} internal static LaxModeSecurityHeaderElementInferenceEngine Instance { get { return instance; } } public override void ExecuteProcessingPasses(ReceiveSecurityHeader securityHeader, XmlDictionaryReader reader) { // pass 1 securityHeader.ExecuteReadingPass(reader); // pass 1.5 securityHeader.ExecuteDerivedKeyTokenStubPass(false); // pass 2 securityHeader.ExecuteSubheaderDecryptionPass(); // pass 2.5 securityHeader.ExecuteDerivedKeyTokenStubPass(true); // layout-specific inferences MarkElements(securityHeader.ElementManager, securityHeader.RequireMessageProtection); // pass 3 securityHeader.ExecuteSignatureEncryptionProcessingPass(); } public override void MarkElements(ReceiveSecurityHeaderElementManager elementManager, bool messageSecurityMode) { bool primarySignatureFound = false; for (int position = 0; position < elementManager.Count; position++) { ReceiveSecurityHeaderEntry entry; elementManager.GetElementEntry(position, out entry); if (entry.elementCategory == ReceiveSecurityHeaderElementCategory.Signature) { if (!messageSecurityMode) { elementManager.SetBindingMode(position, ReceiveSecurityHeaderBindingModes.Endorsing); continue; } SignedXml signedXml = (SignedXml) entry.element; StandardSignedInfo signedInfo = (StandardSignedInfo) signedXml.Signature.SignedInfo; bool targetsSignature = false; if (signedInfo.ReferenceCount == 1) { string uri = signedInfo[0].Uri; string id; if (uri != null && uri.Length > 1 && uri[0] == '#') { id = uri.Substring(1); } else { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError( new MessageSecurityException(SR.GetString(SR.UnableToResolveReferenceUriForSignature, uri))); } for (int j = 0; j < elementManager.Count; j++) { ReceiveSecurityHeaderEntry inner; elementManager.GetElementEntry(j, out inner); if (j != position && inner.elementCategory == ReceiveSecurityHeaderElementCategory.Signature && inner.id == id) { targetsSignature = true; break; } } } if (targetsSignature) { elementManager.SetBindingMode(position, ReceiveSecurityHeaderBindingModes.Endorsing); continue; } else { if (primarySignatureFound) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MessageSecurityException(SR.GetString(SR.AtMostOnePrimarySignatureInReceiveSecurityHeader))); } primarySignatureFound = true; elementManager.SetBindingMode(position, ReceiveSecurityHeaderBindingModes.Primary); continue; } } } } } } // 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
- XamlFilter.cs
- InputElement.cs
- DynamicRendererThreadManager.cs
- ExpressionConverter.cs
- xmlglyphRunInfo.cs
- TextServicesPropertyRanges.cs
- UInt64Converter.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- ComponentEditorPage.cs
- VisualStyleInformation.cs
- RawTextInputReport.cs
- FileChangesMonitor.cs
- TaiwanLunisolarCalendar.cs
- HeaderedItemsControl.cs
- OneWayChannelFactory.cs
- TypeExtension.cs
- SystemUnicastIPAddressInformation.cs
- InkCanvasSelection.cs
- HtmlInputHidden.cs
- ThreadExceptionDialog.cs
- _NetRes.cs
- SHA512.cs
- RepeatButton.cs
- MaskedTextBoxDesigner.cs
- ImageSource.cs
- WebPartHelpVerb.cs
- ControllableStoryboardAction.cs
- SourceFileBuildProvider.cs
- DiagnosticsConfiguration.cs
- SingletonConnectionReader.cs
- ModelVisual3D.cs
- TempEnvironment.cs
- ExpressionBuilderCollection.cs
- Command.cs
- EdmScalarPropertyAttribute.cs
- IntPtr.cs
- SystemResources.cs
- OleDbStruct.cs
- HttpHandlersSection.cs
- GridViewSelectEventArgs.cs
- StringTraceRecord.cs
- RegistryKey.cs
- ObjectStateEntryDbDataRecord.cs
- Graphics.cs
- Graph.cs
- XsdValidatingReader.cs
- FlowDecision.cs
- Identity.cs
- FirstMatchCodeGroup.cs
- ProfileSettingsCollection.cs
- ArithmeticException.cs
- CompoundFileStreamReference.cs
- HttpClientChannel.cs
- SortDescription.cs
- BitmapEffectInput.cs
- ToolStripSplitStackLayout.cs
- FixedElement.cs
- ArgIterator.cs
- MatrixTransform3D.cs
- MsmqException.cs
- _UriSyntax.cs
- PatternMatchRules.cs
- SecUtil.cs
- LoginDesigner.cs
- ToolboxBitmapAttribute.cs
- XmlSchemaObjectTable.cs
- ComContractElementCollection.cs
- OperatingSystem.cs
- RoleBoolean.cs
- PageThemeCodeDomTreeGenerator.cs
- X509ChainElement.cs
- Stream.cs
- ItemsChangedEventArgs.cs
- LocalValueEnumerator.cs
- compensatingcollection.cs
- FilterEventArgs.cs
- ObjectListDesigner.cs
- TargetFrameworkUtil.cs
- ContainerActivationHelper.cs
- RightsManagementUser.cs
- XmlUnspecifiedAttribute.cs
- SchemaType.cs
- KerberosRequestorSecurityToken.cs
- Wildcard.cs
- LambdaCompiler.Lambda.cs
- MediaCommands.cs
- PriorityQueue.cs
- AutomationPatternInfo.cs
- PerfCounters.cs
- OletxVolatileEnlistment.cs
- UseAttributeSetsAction.cs
- CompilationUtil.cs
- XmlDocument.cs
- DesignBindingPropertyDescriptor.cs
- CodeArrayIndexerExpression.cs
- Method.cs
- Point4DValueSerializer.cs
- TransformerInfoCollection.cs
- DoubleLink.cs
- CustomAttribute.cs