1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
|
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------------
namespace System.ServiceModel.Configuration
{
using System.Configuration;
using System.Security.Authentication;
using System.ServiceModel.Channels;
using System.ServiceModel.Security;
public sealed partial class SslStreamSecurityElement : BindingElementExtensionElement
{
public SslStreamSecurityElement()
{
}
[ConfigurationProperty(
ConfigurationStrings.RequireClientCertificate, DefaultValue = TransportDefaults.RequireClientCertificate)]
public bool RequireClientCertificate
{
get { return (bool)base[ConfigurationStrings.RequireClientCertificate]; }
set { base[ConfigurationStrings.RequireClientCertificate] = value; }
}
[ConfigurationProperty(ConfigurationStrings.SslProtocols, DefaultValue = TransportDefaults.OldDefaultSslProtocols)]
[ServiceModelEnumValidator(typeof(SslProtocolsHelper))]
public SslProtocols SslProtocols
{
get { return (SslProtocols)base[ConfigurationStrings.SslProtocols]; }
private set { base[ConfigurationStrings.SslProtocols] = value; }
}
public override void ApplyConfiguration(BindingElement bindingElement)
{
base.ApplyConfiguration(bindingElement);
SslStreamSecurityBindingElement sslBindingElement =
(SslStreamSecurityBindingElement)bindingElement;
sslBindingElement.RequireClientCertificate = this.RequireClientCertificate;
sslBindingElement.SslProtocols = this.SslProtocols;
}
protected internal override BindingElement CreateBindingElement()
{
SslStreamSecurityBindingElement sslBindingElement
= new SslStreamSecurityBindingElement();
this.ApplyConfiguration(sslBindingElement);
return sslBindingElement;
}
public override Type BindingElementType
{
get { return typeof(SslStreamSecurityBindingElement); }
}
public override void CopyFrom(ServiceModelExtensionElement from)
{
base.CopyFrom(from);
SslStreamSecurityElement source = (SslStreamSecurityElement)from;
#pragma warning suppress 56506 // Microsoft, base.CopyFrom() validates the argument
this.RequireClientCertificate = source.RequireClientCertificate;
this.SslProtocols = source.SslProtocols;
}
protected internal override void InitializeFrom(BindingElement bindingElement)
{
base.InitializeFrom(bindingElement);
SslStreamSecurityBindingElement sslBindingElement
= (SslStreamSecurityBindingElement)bindingElement;
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.RequireClientCertificate, sslBindingElement.RequireClientCertificate);
SetPropertyValueIfNotDefaultValue(ConfigurationStrings.SslProtocols, sslBindingElement.SslProtocols);
}
}
}
|