| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- //----------------------------------------------------------
- // Copyright (c) Microsoft Corporation. All rights reserved.
- //------------------------------------------------------------
- namespace System.ServiceModel.Security
- {
- using System.ServiceModel.Security.Tokens;
- using System.Xml;
- sealed class StrictModeSecurityHeaderElementInferenceEngine : SecurityHeaderElementInferenceEngine
- {
- static StrictModeSecurityHeaderElementInferenceEngine instance = new StrictModeSecurityHeaderElementInferenceEngine();
- StrictModeSecurityHeaderElementInferenceEngine() { }
- internal static StrictModeSecurityHeaderElementInferenceEngine Instance
- {
- get { return instance; }
- }
- public override void ExecuteProcessingPasses(ReceiveSecurityHeader securityHeader, XmlDictionaryReader reader)
- {
- securityHeader.ExecuteFullPass(reader);
- }
- 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 || primarySignatureFound)
- {
- elementManager.SetBindingMode(position, ReceiveSecurityHeaderBindingModes.Endorsing);
- }
- else
- {
- elementManager.SetBindingMode(position, ReceiveSecurityHeaderBindingModes.Primary);
- primarySignatureFound = true;
- }
- }
- }
- }
- }
- }
|