SecurityHeaderElementInferenceEngine.cs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536
  1. //----------------------------------------------------------
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. //------------------------------------------------------------
  4. namespace System.ServiceModel.Security
  5. {
  6. using System.ServiceModel.Security.Tokens;
  7. using System.ServiceModel.Channels;
  8. using System.Xml;
  9. abstract class SecurityHeaderElementInferenceEngine
  10. {
  11. public abstract void ExecuteProcessingPasses(ReceiveSecurityHeader securityHeader, XmlDictionaryReader reader);
  12. public abstract void MarkElements(ReceiveSecurityHeaderElementManager elementManager, bool messageSecurityMode);
  13. public static SecurityHeaderElementInferenceEngine GetInferenceEngine(SecurityHeaderLayout layout)
  14. {
  15. SecurityHeaderLayoutHelper.Validate(layout);
  16. switch (layout)
  17. {
  18. case SecurityHeaderLayout.Strict:
  19. return StrictModeSecurityHeaderElementInferenceEngine.Instance;
  20. case SecurityHeaderLayout.Lax:
  21. return LaxModeSecurityHeaderElementInferenceEngine.Instance;
  22. case SecurityHeaderLayout.LaxTimestampFirst:
  23. return LaxTimestampFirstModeSecurityHeaderElementInferenceEngine.Instance;
  24. case SecurityHeaderLayout.LaxTimestampLast:
  25. return LaxTimestampLastModeSecurityHeaderElementInferenceEngine.Instance;
  26. default:
  27. throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("layout"));
  28. }
  29. }
  30. }
  31. }