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
- JsonWriter.cs
- WebPartsPersonalizationAuthorization.cs
- BamlWriter.cs
- SimpleHandlerFactory.cs
- AutomationElement.cs
- sqlinternaltransaction.cs
- GeneralTransformGroup.cs
- RequiredFieldValidator.cs
- BindingMemberInfo.cs
- HtmlForm.cs
- CustomCategoryAttribute.cs
- WeakReferenceList.cs
- DesignTimeDataBinding.cs
- LayoutTableCell.cs
- TableLayoutPanelCellPosition.cs
- ManagementEventArgs.cs
- XmlSchemaAttribute.cs
- XmlCharCheckingWriter.cs
- BaseCollection.cs
- PropertyGroupDescription.cs
- InheritanceRules.cs
- StreamAsIStream.cs
- AesManaged.cs
- RightsManagementResourceHelper.cs
- IItemProperties.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- LambdaCompiler.cs
- WindowsPen.cs
- DefaultProxySection.cs
- COAUTHINFO.cs
- WebConfigurationManager.cs
- ResourcePermissionBase.cs
- DataFormat.cs
- AnonymousIdentificationModule.cs
- PrinterSettings.cs
- KeyedByTypeCollection.cs
- WebPartConnectionsConnectVerb.cs
- TypeNameConverter.cs
- TextFormatterImp.cs
- CodeMethodInvokeExpression.cs
- GraphicsPath.cs
- Help.cs
- StringDictionary.cs
- DbMetaDataFactory.cs
- _ProxyRegBlob.cs
- ScrollEvent.cs
- CharacterString.cs
- WebPartConnectionsCancelEventArgs.cs
- VirtualPathUtility.cs
- DelegatingTypeDescriptionProvider.cs
- FreezableOperations.cs
- DPAPIProtectedConfigurationProvider.cs
- ScrollChrome.cs
- CriticalFinalizerObject.cs
- EntityProviderServices.cs
- FrameworkReadOnlyPropertyMetadata.cs
- LabelLiteral.cs
- HMACRIPEMD160.cs
- SqlProviderUtilities.cs
- ResourceCategoryAttribute.cs
- ClientTargetSection.cs
- Hash.cs
- ServiceDesigner.cs
- LateBoundBitmapDecoder.cs
- LinkLabelLinkClickedEvent.cs
- _Win32.cs
- TextDecorationCollection.cs
- Expander.cs
- PageAsyncTaskManager.cs
- EntityDataSourceSelectedEventArgs.cs
- FormCollection.cs
- ConstraintStruct.cs
- DataGridViewCheckBoxColumn.cs
- RemoteAsymmetricSignatureFormatter.cs
- SpecularMaterial.cs
- securitycriticaldataClass.cs
- DbConnectionPoolCounters.cs
- MailMessageEventArgs.cs
- SectionUpdates.cs
- GPStream.cs
- TypedLocationWrapper.cs
- AncillaryOps.cs
- DbConnectionInternal.cs
- MailBnfHelper.cs
- ConfigurationPropertyAttribute.cs
- DesignerUtils.cs
- LifetimeServices.cs
- DbConnectionStringCommon.cs
- SmtpDateTime.cs
- ProfileBuildProvider.cs
- CompiledQuery.cs
- RightNameExpirationInfoPair.cs
- SchemaImporterExtension.cs
- DoubleConverter.cs
- UserPersonalizationStateInfo.cs
- panel.cs
- TextTreeText.cs
- BamlMapTable.cs
- WindowsGraphics2.cs
- PageAdapter.cs