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
- ObjectListComponentEditor.cs
- HttpModulesSection.cs
- CodeNamespaceCollection.cs
- AlphabeticalEnumConverter.cs
- ZipIOCentralDirectoryBlock.cs
- _UncName.cs
- EntityDataSourceChangedEventArgs.cs
- SapiRecoContext.cs
- PolyLineSegment.cs
- XMLUtil.cs
- OutputCacheProfile.cs
- StickyNoteContentControl.cs
- SqlCommand.cs
- SamlSerializer.cs
- SqlNamer.cs
- BitmapFrameDecode.cs
- XamlWrapperReaders.cs
- ProfileManager.cs
- StylusPoint.cs
- SqlBuilder.cs
- XhtmlConformanceSection.cs
- NativeMethods.cs
- ColumnBinding.cs
- COM2PictureConverter.cs
- FileLogRecordStream.cs
- Sequence.cs
- SimpleRecyclingCache.cs
- BitmapFrameDecode.cs
- WebPartManager.cs
- AdapterDictionary.cs
- ObjectResult.cs
- SystemColors.cs
- RuleRef.cs
- XmlDocumentFragment.cs
- ExtensibleClassFactory.cs
- WebPartCancelEventArgs.cs
- ExpressionHelper.cs
- webclient.cs
- RuleSettingsCollection.cs
- DataGridBoolColumn.cs
- Object.cs
- Nullable.cs
- IteratorDescriptor.cs
- EFDataModelProvider.cs
- TransformerConfigurationWizardBase.cs
- CookieParameter.cs
- TimeSpan.cs
- InvokeGenerator.cs
- CommonServiceBehaviorElement.cs
- BufferedReceiveElement.cs
- SQLStringStorage.cs
- DESCryptoServiceProvider.cs
- ServiceErrorHandler.cs
- NumericUpDownAccelerationCollection.cs
- SafeNativeMethods.cs
- ListViewGroupItemCollection.cs
- EntityDataSourceSelectedEventArgs.cs
- CaseExpr.cs
- PieceNameHelper.cs
- CharEntityEncoderFallback.cs
- PersonalizationStateInfo.cs
- SqlDuplicator.cs
- srgsitem.cs
- Block.cs
- RangeBaseAutomationPeer.cs
- DataBindingCollection.cs
- RadioButtonFlatAdapter.cs
- ActivityExecutionContextCollection.cs
- CommandBinding.cs
- DateTimeStorage.cs
- XmlException.cs
- SerializationFieldInfo.cs
- MetadataItem_Static.cs
- SrgsText.cs
- ListViewGroupItemCollection.cs
- Symbol.cs
- OdbcPermission.cs
- Overlapped.cs
- CqlErrorHelper.cs
- MediaContext.cs
- ThemeDirectoryCompiler.cs
- ClientRoleProvider.cs
- AtlasWeb.Designer.cs
- FlowPanelDesigner.cs
- ExtendedPropertyDescriptor.cs
- SqlConnection.cs
- HtmlEmptyTagControlBuilder.cs
- DataList.cs
- RootBrowserWindowProxy.cs
- InstanceDataCollectionCollection.cs
- BrowserCapabilitiesCompiler.cs
- StringExpressionSet.cs
- CodeStatement.cs
- SpeechSynthesizer.cs
- shaperfactory.cs
- Attributes.cs
- HMACSHA256.cs
- AppDomainUnloadedException.cs
- DragEventArgs.cs
- DataGridViewRowCancelEventArgs.cs