145 lines
3.6 KiB
C#
145 lines
3.6 KiB
C#
/*
|
|
*
|
|
* 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.Collections;
|
|
using System.Globalization;
|
|
using System.Text;
|
|
|
|
namespace Apache.Qpid.Sasl
|
|
{
|
|
public abstract class SaslClient : ISaslClient
|
|
{
|
|
private bool _isComplete;
|
|
private IDictionary _properties;
|
|
private string _authorizationId;
|
|
private string _serverName;
|
|
private string _protocol;
|
|
private ISaslCallbackHandler _handler;
|
|
|
|
protected string AuthorizationId
|
|
{
|
|
get { return _authorizationId; }
|
|
}
|
|
protected string ServerName
|
|
{
|
|
get { return _serverName; }
|
|
}
|
|
|
|
protected string Protocol
|
|
{
|
|
get { return _protocol; }
|
|
}
|
|
|
|
protected ISaslCallbackHandler Handler
|
|
{
|
|
get { return _handler; }
|
|
}
|
|
|
|
protected IDictionary Properties
|
|
{
|
|
get { return _properties; }
|
|
}
|
|
|
|
protected SaslClient(
|
|
string authid, string serverName,
|
|
string protocol, IDictionary properties,
|
|
ISaslCallbackHandler handler)
|
|
{
|
|
if ( properties == null )
|
|
throw new ArgumentNullException("properties");
|
|
if ( handler == null )
|
|
throw new ArgumentNullException("handler");
|
|
|
|
_authorizationId = authid==null ? "" : authid;
|
|
_serverName = serverName;
|
|
_protocol = protocol;
|
|
_properties = properties;
|
|
_handler = handler;
|
|
|
|
if ( _serverName == null || _serverName.Length == 0 )
|
|
{
|
|
_serverName = System.Net.Dns.GetHostName();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
#region ISaslClient Implementation
|
|
//
|
|
// ISaslClient Implementation
|
|
//
|
|
|
|
public abstract string MechanismName { get; }
|
|
|
|
public abstract bool HasInitialResponse { get; }
|
|
|
|
public bool IsComplete
|
|
{
|
|
get { return _isComplete; }
|
|
}
|
|
|
|
public abstract byte[] EvaluateChallenge(byte[] challenge);
|
|
|
|
public virtual object GetNegotiatedProperty(string propName)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
public virtual byte[] Unwrap(byte[] buffer, int offset, int length)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
public virtual byte[] Wrap(byte[] buffer, int offset, int lenght)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
#endregion // ISaslClient Implementation
|
|
|
|
|
|
#region Helper Methods
|
|
//
|
|
// Helper Methods
|
|
//
|
|
|
|
protected void SetComplete()
|
|
{
|
|
_isComplete = true;
|
|
}
|
|
|
|
protected static string ToHex(byte[] buffer)
|
|
{
|
|
StringBuilder builder = new StringBuilder();
|
|
foreach ( byte b in buffer )
|
|
{
|
|
builder.Append(b.ToString("x2", CultureInfo.InvariantCulture));
|
|
}
|
|
return builder.ToString();
|
|
}
|
|
|
|
#endregion // Helper Methods
|
|
|
|
} // class SaslClient
|
|
|
|
} // namespace Apache.Qpid.Sasl.Mechanisms
|