| /* | |
| * | |
| * 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 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 Qpid.Sasl.Mechanisms |