|
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------
namespace System.ServiceModel
{
using System.ComponentModel;
using System.Runtime;
using System.ServiceModel.Channels;
using System.ServiceModel.Configuration;
public sealed class BasicHttpsSecurity
{
internal const BasicHttpsSecurityMode DefaultMode = BasicHttpsSecurityMode.Transport;
BasicHttpSecurity basicHttpSecurity;
public BasicHttpsSecurity()
: this(DefaultMode, new HttpTransportSecurity(), new BasicHttpMessageSecurity())
{
}
BasicHttpsSecurity(BasicHttpsSecurityMode mode, HttpTransportSecurity transportSecurity, BasicHttpMessageSecurity messageSecurity)
{
if (!BasicHttpsSecurityModeHelper.IsDefined(mode))
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("mode"));
}
HttpTransportSecurity httpTransportSecurity = transportSecurity == null ? new HttpTransportSecurity() : transportSecurity;
BasicHttpMessageSecurity httpMessageSecurity = messageSecurity == null ? new BasicHttpMessageSecurity() : messageSecurity;
BasicHttpSecurityMode basicHttpSecurityMode = BasicHttpsSecurityModeHelper.ToBasicHttpSecurityMode(mode);
this.basicHttpSecurity = new BasicHttpSecurity()
{
Mode = basicHttpSecurityMode,
Transport = httpTransportSecurity,
Message = httpMessageSecurity
};
}
public BasicHttpsSecurityMode Mode
{
get
{
return BasicHttpsSecurityModeHelper.ToBasicHttpsSecurityMode(this.basicHttpSecurity.Mode);
}
set
{
if (!BasicHttpsSecurityModeHelper.IsDefined(value))
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("value"));
}
this.basicHttpSecurity.Mode = BasicHttpsSecurityModeHelper.ToBasicHttpSecurityMode(value);
}
}
public HttpTransportSecurity Transport
{
get
{
return this.basicHttpSecurity.Transport;
}
set
{
this.basicHttpSecurity.Transport = value;
}
}
public BasicHttpMessageSecurity Message
{
get
{
return this.basicHttpSecurity.Message;
}
set
{
this.basicHttpSecurity.Message = value;
}
}
internal BasicHttpSecurity BasicHttpSecurity
{
get
{
return this.basicHttpSecurity;
}
}
[EditorBrowsable(EditorBrowsableState.Never)]
public bool ShouldSerializeMessage()
{
return this.basicHttpSecurity.ShouldSerializeMessage();
}
[EditorBrowsable(EditorBrowsableState.Never)]
public bool ShouldSerializeTransport()
{
return this.basicHttpSecurity.ShouldSerializeTransport();
}
internal static BasicHttpSecurity ToBasicHttpSecurity(BasicHttpsSecurity basicHttpsSecurity)
{
Fx.Assert(basicHttpsSecurity != null, "Cannot pass in a null value for basicHttpsSecurity");
BasicHttpSecurity basicHttpSecurity = new BasicHttpSecurity()
{
Message = basicHttpsSecurity.Message,
Transport = basicHttpsSecurity.Transport,
Mode = BasicHttpsSecurityModeHelper.ToBasicHttpSecurityMode(basicHttpsSecurity.Mode)
};
return basicHttpSecurity;
}
internal static BasicHttpsSecurity ToBasicHttpsSecurity(BasicHttpSecurity basicHttpSecurity)
{
Fx.Assert(basicHttpSecurity != null, "basicHttpSecurity cannot be null");
BasicHttpsSecurity basicHttpsSecurity = new BasicHttpsSecurity()
{
Message = basicHttpSecurity.Message,
Transport = basicHttpSecurity.Transport,
Mode = BasicHttpsSecurityModeHelper.ToBasicHttpsSecurityMode(basicHttpSecurity.Mode)
};
return basicHttpsSecurity;
}
internal static void EnableTransportSecurity(HttpsTransportBindingElement https, HttpTransportSecurity transportSecurity)
{
BasicHttpSecurity.EnableTransportSecurity(https, transportSecurity);
}
internal static bool IsEnabledTransportAuthentication(HttpTransportBindingElement http, HttpTransportSecurity transportSecurity)
{
return BasicHttpSecurity.IsEnabledTransportAuthentication(http, transportSecurity);
}
internal void EnableTransportSecurity(HttpsTransportBindingElement https)
{
this.basicHttpSecurity.EnableTransportSecurity(https);
}
internal void EnableTransportAuthentication(HttpTransportBindingElement http)
{
this.basicHttpSecurity.EnableTransportAuthentication(http);
}
internal void DisableTransportAuthentication(HttpTransportBindingElement http)
{
this.basicHttpSecurity.DisableTransportAuthentication(http);
}
internal SecurityBindingElement CreateMessageSecurity()
{
return this.basicHttpSecurity.CreateMessageSecurity();
}
internal bool InternalShouldSerialize()
{
// Default Security mode here is different from that of BasicHttpBinding. Therefore, we do not call into basicHttpSecurity here.
return this.Mode != BasicHttpsSecurity.DefaultMode
|| this.ShouldSerializeMessage()
|| this.ShouldSerializeTransport();
}
}
}
|