PageRenderTime 41ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/ExpressInteropBinding/Microsoft.ServiceModel.Interop/Configuration/InteropSecurityElement.cs

#
C# | 93 lines | 55 code | 12 blank | 26 comment | 4 complexity | 7e0bb68f039ddb117ee71561291caf4c MD5 | raw file
Possible License(s): CC-BY-SA-3.0, Apache-2.0
  1. // <copyright file="InteropSecurityElement.cs" company="Microsoft Corporation">
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. // </copyright>
  4. namespace Microsoft.ServiceModel.Interop.Configuration
  5. {
  6. using System;
  7. using System.ComponentModel;
  8. using System.Configuration;
  9. using System.ServiceModel.Security;
  10. /// <summary>
  11. /// Base class for the security configuration element that the rest of the service stacks derive
  12. /// </summary>
  13. public class InteropSecurityElement : ConfigurationElement
  14. {
  15. private const string EstablishSecurityContextProperty = "establishSecurityContext";
  16. private const string AlgorithmSuiteProperty = "algorithmSuite";
  17. /// <summary>
  18. /// Initializes a new instance of the InteropSecurityElement class
  19. /// </summary>
  20. protected InteropSecurityElement()
  21. {
  22. }
  23. /// <summary>
  24. /// Gets or sets a value indicating whether a secure conversation must be established
  25. /// </summary>
  26. [ConfigurationProperty(EstablishSecurityContextProperty, IsRequired = false, DefaultValue = false)]
  27. public bool EstablishSecurityContext
  28. {
  29. get { return (bool)base[EstablishSecurityContextProperty]; }
  30. set { base[EstablishSecurityContextProperty] = value; }
  31. }
  32. /// <summary>
  33. /// Gets or sets the security algorithm
  34. /// </summary>
  35. [TypeConverter(typeof(SecurityAlgorithmSuiteConverter)), ConfigurationProperty(AlgorithmSuiteProperty, DefaultValue = "Default")]
  36. public SecurityAlgorithmSuite AlgorithmSuite
  37. {
  38. get { return (SecurityAlgorithmSuite)base[AlgorithmSuiteProperty]; }
  39. set { base[AlgorithmSuiteProperty] = value; }
  40. }
  41. /// <summary>
  42. /// Gets all the available configuration properties
  43. /// </summary>
  44. protected override ConfigurationPropertyCollection Properties
  45. {
  46. get
  47. {
  48. ConfigurationPropertyCollection properties = base.Properties;
  49. properties.Add(new ConfigurationProperty(EstablishSecurityContextProperty, typeof(bool), false));
  50. properties.Add(new ConfigurationProperty(AlgorithmSuiteProperty, typeof(SecurityAlgorithmSuite), "Default", new SecurityAlgorithmSuiteConverter(), null, ConfigurationPropertyOptions.None));
  51. return properties;
  52. }
  53. }
  54. /// <summary>
  55. /// Applies this configuration instance to an existing security binding element
  56. /// </summary>
  57. /// <param name="security">Security binding element</param>
  58. public virtual void ApplyConfiguration(InteropSecurity security)
  59. {
  60. if (security == null)
  61. {
  62. throw new ArgumentNullException("security");
  63. }
  64. security.AlgorithmSuite = this.AlgorithmSuite;
  65. security.EstablishSecurityContext = this.EstablishSecurityContext;
  66. }
  67. /// <summary>
  68. /// Initializes this security configuration from an existing security binding element
  69. /// </summary>
  70. /// <param name="security">Security binding element</param>
  71. public virtual void InitializeFrom(InteropSecurity security)
  72. {
  73. if (security == null)
  74. {
  75. throw new ArgumentNullException("security");
  76. }
  77. this.AlgorithmSuite = security.AlgorithmSuite;
  78. this.EstablishSecurityContext = security.EstablishSecurityContext;
  79. }
  80. }
  81. }