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
- KnownColorTable.cs
- ObjectAnimationBase.cs
- XmlWhitespace.cs
- SecUtil.cs
- TargetControlTypeCache.cs
- BinaryCommonClasses.cs
- ThemeDictionaryExtension.cs
- HtmlInputSubmit.cs
- UnauthorizedWebPart.cs
- Pointer.cs
- Animatable.cs
- CharacterBuffer.cs
- RowUpdatedEventArgs.cs
- SatelliteContractVersionAttribute.cs
- CompareValidator.cs
- FileDataSource.cs
- IntellisenseTextBox.designer.cs
- CurrentChangingEventArgs.cs
- InternalPermissions.cs
- SqlNodeAnnotation.cs
- TableColumn.cs
- ProxyWebPartConnectionCollection.cs
- SingleConverter.cs
- Triplet.cs
- TextWriter.cs
- StructuralCache.cs
- filewebresponse.cs
- X509Certificate2Collection.cs
- StaticFileHandler.cs
- CommandBindingCollection.cs
- UnicodeEncoding.cs
- TrustSection.cs
- GeometryModel3D.cs
- Oid.cs
- DatasetMethodGenerator.cs
- SHA1CryptoServiceProvider.cs
- Exceptions.cs
- SimpleHandlerBuildProvider.cs
- WindowsIdentity.cs
- Menu.cs
- CompiledQuery.cs
- X509ClientCertificateAuthenticationElement.cs
- Quaternion.cs
- TreeViewItem.cs
- StylusPlugInCollection.cs
- LoginNameDesigner.cs
- WindowsGraphicsCacheManager.cs
- SerializationStore.cs
- SelectionRangeConverter.cs
- SafeRightsManagementPubHandle.cs
- DbRetry.cs
- EntityDataSourceValidationException.cs
- IncrementalReadDecoders.cs
- TextPointerBase.cs
- PathSegmentCollection.cs
- MarshalDirectiveException.cs
- CodeGenerator.cs
- InvalidateEvent.cs
- ChannelServices.cs
- ToolStripControlHost.cs
- GeneratedView.cs
- COMException.cs
- WebServicesInteroperability.cs
- LinkClickEvent.cs
- ObjectDataSourceMethodEventArgs.cs
- XmlBoundElement.cs
- XmlBoundElement.cs
- DropShadowEffect.cs
- SchemaImporterExtension.cs
- CodeLabeledStatement.cs
- HybridWebProxyFinder.cs
- SuppressMessageAttribute.cs
- ExeConfigurationFileMap.cs
- Byte.cs
- CodeValidator.cs
- AnimationClock.cs
- AutoGeneratedField.cs
- SchemaElementDecl.cs
- MaterialGroup.cs
- ControlIdConverter.cs
- NumericUpDownAcceleration.cs
- CodeDomExtensionMethods.cs
- HTMLTagNameToTypeMapper.cs
- CachedPathData.cs
- XmlDataCollection.cs
- TargetConverter.cs
- PagerSettings.cs
- _DomainName.cs
- RelOps.cs
- DataIdProcessor.cs
- SoapEnumAttribute.cs
- Inline.cs
- WebPartDisplayModeEventArgs.cs
- CompatibleIComparer.cs
- ContextMenu.cs
- DbQueryCommandTree.cs
- CharAnimationBase.cs
- HMACSHA512.cs
- DropDownList.cs
- RuntimeArgumentHandle.cs