1 //------------------------------------------------------------------------------
2 // Copyright (c) Microsoft Corporation. All rights reserved.
3 //------------------------------------------------------------------------------
5 namespace System.ServiceModel.Configuration
7 using System.Configuration;
8 using System.Security.Authentication;
9 using System.ServiceModel.Channels;
10 using System.ServiceModel.Security;
12 public sealed partial class SslStreamSecurityElement : BindingElementExtensionElement
14 public SslStreamSecurityElement()
18 [ConfigurationProperty(
19 ConfigurationStrings.RequireClientCertificate, DefaultValue = TransportDefaults.RequireClientCertificate)]
20 public bool RequireClientCertificate
22 get { return (bool)base[ConfigurationStrings.RequireClientCertificate]; }
23 set { base[ConfigurationStrings.RequireClientCertificate] = value; }
26 [ConfigurationProperty(ConfigurationStrings.SslProtocols, DefaultValue = TransportDefaults.SslProtocols)]
27 [ServiceModelEnumValidator(typeof(SslProtocolsHelper))]
28 public SslProtocols SslProtocols
30 get { return (SslProtocols)base[ConfigurationStrings.SslProtocols]; }
31 private set { base[ConfigurationStrings.SslProtocols] = value; }
35 public override void ApplyConfiguration(BindingElement bindingElement)
37 base.ApplyConfiguration(bindingElement);
38 SslStreamSecurityBindingElement sslBindingElement =
39 (SslStreamSecurityBindingElement)bindingElement;
40 sslBindingElement.RequireClientCertificate = this.RequireClientCertificate;
41 sslBindingElement.SslProtocols = this.SslProtocols;
44 protected internal override BindingElement CreateBindingElement()
46 SslStreamSecurityBindingElement sslBindingElement
47 = new SslStreamSecurityBindingElement();
49 this.ApplyConfiguration(sslBindingElement);
50 return sslBindingElement;
53 public override Type BindingElementType
55 get { return typeof(SslStreamSecurityBindingElement); }
58 public override void CopyFrom(ServiceModelExtensionElement from)
62 SslStreamSecurityElement source = (SslStreamSecurityElement)from;
63 #pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
64 this.RequireClientCertificate = source.RequireClientCertificate;
65 this.SslProtocols = source.SslProtocols;
68 protected internal override void InitializeFrom(BindingElement bindingElement)
70 base.InitializeFrom(bindingElement);
71 SslStreamSecurityBindingElement sslBindingElement
72 = (SslStreamSecurityBindingElement)bindingElement;
73 SetPropertyValueIfNotDefaultValue(ConfigurationStrings.RequireClientCertificate, sslBindingElement.RequireClientCertificate);
74 SetPropertyValueIfNotDefaultValue(ConfigurationStrings.SslProtocols, sslBindingElement.SslProtocols);