Home | History | Annotate | Download | only in sasl
      1 /*
      2  *
      3  * Licensed to the Apache Software Foundation (ASF) under one
      4  * or more contributor license agreements.  See the NOTICE file
      5  * distributed with this work for additional information
      6  * regarding copyright ownership.  The ASF licenses this file
      7  * to you under the Apache License, Version 2.0 (the
      8  * "License"); you may not use this file except in compliance
      9  * with the License.  You may obtain a copy of the License at
     10  *
     11  *   http://www.apache.org/licenses/LICENSE-2.0
     12  *
     13  * Unless required by applicable law or agreed to in writing,
     14  * software distributed under the License is distributed on an
     15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
     16  * KIND, either express or implied.  See the License for the
     17  * specific language governing permissions and limitations
     18  * under the License.
     19  *
     20  */
     21 package org.apache.qpid.management.common.sasl;
     22 
     23 import org.apache.harmony.javax.security.auth.callback.CallbackHandler;
     24 import de.measite.smack.Sasl;
     25 import org.apache.harmony.javax.security.sasl.SaslClient;
     26 import org.apache.harmony.javax.security.sasl.SaslClientFactory;
     27 import org.apache.harmony.javax.security.sasl.SaslException;
     28 import java.util.Map;
     29 
     30 public class CRAMMD5HashedSaslClientFactory implements SaslClientFactory
     31 {
     32     /** The name of this mechanism */
     33     public static final String MECHANISM = "CRAM-MD5-HASHED";
     34 
     35     public SaslClient createSaslClient(String[] mechanisms, String authorizationId, String protocol,
     36                                        String serverName, Map<String, ?> props, CallbackHandler cbh)
     37     throws SaslException
     38     {
     39         for (int i = 0; i < mechanisms.length; i++)
     40         {
     41             if (mechanisms[i].equals(MECHANISM))
     42             {
     43                 if (cbh == null)
     44                 {
     45                     throw new SaslException("CallbackHandler must not be null");
     46                 }
     47 
     48                 String[] mechs = {"CRAM-MD5"};
     49                 return Sasl.createSaslClient(mechs, authorizationId, protocol, serverName, props, cbh);
     50             }
     51         }
     52         return null;
     53     }
     54 
     55     public String[] getMechanismNames(Map props)
     56     {
     57         return new String[]{MECHANISM};
     58     }
     59 }
     60