blob: 02868cfaff630fa7d2bfc34f3ce907c86f86b7d4 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
using System;
using System.Net.Sockets;
namespace Apache.NMS.Stomp.Transport.Tcp
{
public class SslTransportFactory : TcpTransportFactory
{
private string serverName;
private string clientCertSubject;
private string clientCertFilename;
private string clientCertPassword;
private string keyStoreName;
private string keyStoreLocation;
private bool acceptInvalidBrokerCert = false;
public string ServerName
{
get { return this.serverName; }
set { this.serverName = value; }
}
public string ClientCertSubject
{
get { return this.clientCertSubject; }
set { this.clientCertSubject = value; }
}
public string ClientCertFilename
{
get { return this.clientCertFilename; }
set { this.clientCertFilename = value; }
}
public string ClientCertPassword
{
get { return this.clientCertPassword; }
set { this.clientCertPassword = value; }
}
public bool AcceptInvalidBrokerCert
{
get { return this.acceptInvalidBrokerCert; }
set { this.acceptInvalidBrokerCert = value; }
}
public string KeyStoreName
{
get { return this.keyStoreName; }
set { this.keyStoreName = value; }
}
public string KeyStoreLocation
{
get { return this.keyStoreLocation; }
set { this.keyStoreLocation = value; }
}
protected override ITransport DoCreateTransport(Uri location, Socket socket, IWireFormat wireFormat )
{
Tracer.Debug("Creating new instance of the SSL Transport.");
#if !NETCF
SslTransport transport = new SslTransport(location, socket, wireFormat);
transport.ClientCertSubject = this.clientCertSubject;
transport.ClientCertFilename = this.clientCertFilename;
transport.ClientCertPassword = this.clientCertPassword;
transport.ServerName = this.serverName;
transport.KeyStoreLocation = this.keyStoreLocation;
transport.KeyStoreName = this.keyStoreName;
transport.AcceptInvalidBrokerCert = this.acceptInvalidBrokerCert;
return transport;
#else
throw new NotSupportedException("SslTransport not implemented on the .NET Compact Framework.");
#endif
}
}
}