18f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen/* 28f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen * Copyright 2009 Rene Treffer 38f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen * 48f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen * Licensed under the Apache License, Version 2.0 (the "License"); 58f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen * you may not use this file except in compliance with the License. 68f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen * You may obtain a copy of the License at 78f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen * 88f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen * http://www.apache.org/licenses/LICENSE-2.0 98f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen * 108f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen * Unless required by applicable law or agreed to in writing, software 118f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen * distributed under the License is distributed on an "AS IS" BASIS, 128f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen * See the License for the specific language governing permissions and 148f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen * limitations under the License. 158f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen * 168f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen */ 178f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenpackage de.measite.smack; 188f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 198f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenimport java.util.Map; 208f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 218f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenimport com.novell.sasl.client.DigestMD5SaslClient; 228f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 238f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenimport org.apache.harmony.javax.security.auth.callback.CallbackHandler; 248f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenimport org.apache.harmony.javax.security.sasl.SaslClient; 258f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenimport org.apache.harmony.javax.security.sasl.SaslException; 268f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenimport org.apache.qpid.management.common.sasl.PlainSaslClient; 278f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 288f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chenpublic class SaslClientFactory implements 298f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen org.apache.harmony.javax.security.sasl.SaslClientFactory { 308f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 318f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen @Override 328f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen public SaslClient createSaslClient(String[] mechanisms, 338f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen String authorizationId, String protocol, String serverName, 348f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen Map<String, ?> props, CallbackHandler cbh) throws SaslException { 358f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen for (String mech: mechanisms) { 368f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if ("PLAIN".equals(mech)) { 378f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen return new PlainSaslClient(authorizationId, cbh); 388f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen } else 398f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen if ("DIGEST-MD5".equals(mech)) { 408f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen return DigestMD5SaslClient.getClient( 418f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen authorizationId, 428f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen protocol, 438f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen serverName, 448f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen props, 458f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen cbh 468f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen ); 478f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen } 488f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen } 498f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen return null; 508f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen } 518f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 528f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen @Override 538f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen public String[] getMechanismNames(Map<String, ?> props) { 548f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen return new String[]{ 558f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen "PLAIN", 568f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen "DIGEST-MD5" 578f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen }; 588f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen } 598f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen 608f4ce9ea0de51fee918bffe19c434612d6bbb2d7Shuyi Chen} 61