// Path: androidpn/src/main/java/org/apache/harmony/javax/security/auth/callback/CallbackHandler.java
// public interface CallbackHandler {
// 
//     /**
//      * Handles the actual {@link org.apache.harmony.javax.security.auth.callback.Callback}. A {@code CallbackHandler} needs to
//      * implement this method. In the method, it is free to select which {@code
//      * Callback}s it actually wants to handle and in which way. For example, a
//      * console-based {@code CallbackHandler} might choose to sequentially ask
//      * the user for login and password, if it implements these {@code Callback}
//      * s, whereas a GUI-based one might open a single dialog window for both
//      * values. If a {@code CallbackHandler} is not able to handle a specific
//      * {@code Callback}, it needs to throw an
//      * {@link UnsupportedCallbackException}.
//      *
//      * @param callbacks
//      *            the array of {@code Callback}s that need handling
//      * @throws java.io.IOException
//      *             if an I/O related error occurs
//      * @throws UnsupportedCallbackException
//      *             if the {@code CallbackHandler} is not able to handle a
//      *             specific {@code Callback}
//      */
//     void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException;
// 
// }


import java.net.UnknownHostException;
import javax.net.SocketFactory;
import android.util.Log;
import org.androidpn.client.LogUtil;
import org.apache.harmony.javax.security.auth.callback.CallbackHandler;
import org.apache.http.conn.util.InetAddressUtils;
import org.jivesoftware.smack.proxy.ProxyInfo;
import org.jivesoftware.smack.util.DNSUtil;
import java.io.File;
import java.net.InetAddress;
/**
 * $RCSfile$
 * $Revision: 3306 $
 * $Date: 2006-01-16 14:34:56 -0300 (Mon, 16 Jan 2006) $
 *
 * Copyright 2003-2007 Jive Software.
 *
 * All rights reserved. Licensed 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.
 */

package org.jivesoftware.smack;





/**
 * Configuration to use while establishing the connection to the server. It is possible to
 * configure the path to the trustore file that keeps the trusted CA root certificates and
 * enable or disable all or some of the checkings done while verifying server certificates.<p>
 *
 * It is also possible to configure if TLS, SASL, and compression are used or not.
 *
 * @author Gaston Dombiak
 */
public class ConnectionConfiguration implements Cloneable {
    private String LOG_TAG = LogUtil.makeLogTag(ConnectionConfiguration.class);
    /**
     * Hostname of the XMPP server. Usually servers use the same service name as the name
     * of the server. However, there are some servers like google where host would be
     * talk.google.com and the serviceName would be gmail.com.
     */
    private String serviceName;

    private String host;
    private int port;

    private String truststorePath;
    private String truststoreType;
    private String truststorePassword;
    private String keystorePath;
    private String keystoreType;
    private String pkcs11Library;
    private boolean verifyChainEnabled = false;
    private boolean verifyRootCAEnabled = false;
    private boolean selfSignedCertificateEnabled = false;
    private boolean expiredCertificatesCheckEnabled = false;
    private boolean notMatchingDomainCheckEnabled = false;
    private boolean isRosterVersioningAvailable = false;
    private String capsNode = null;

    private boolean compressionEnabled = false;

    private boolean saslAuthenticationEnabled = true;
    /**
     * Used to get information from the user
     */
// Path: androidpn/src/main/java/org/apache/harmony/javax/security/auth/callback/CallbackHandler.java
// public interface CallbackHandler {
// 
//     /**
//      * Handles the actual {@link org.apache.harmony.javax.security.auth.callback.Callback}. A {@code CallbackHandler} needs to
//      * implement this method. In the method, it is free to select which {@code
//      * Callback}s it actually wants to handle and in which way. For example, a
//      * console-based {@code CallbackHandler} might choose to sequentially ask
//      * the user for login and password, if it implements these {@code Callback}
//      * s, whereas a GUI-based one might open a single dialog window for both
//      * values. If a {@code CallbackHandler} is not able to handle a specific
//      * {@code Callback}, it needs to throw an
//      * {@link UnsupportedCallbackException}.
//      *
//      * @param callbacks
//      *            the array of {@code Callback}s that need handling
//      * @throws java.io.IOException
//      *             if an I/O related error occurs
//      * @throws UnsupportedCallbackException
//      *             if the {@code CallbackHandler} is not able to handle a
//      *             specific {@code Callback}
//      */
//     void handle(Callback[] callbacks) throws IOException, UnsupportedCallbackException;
// 
// }


// Path: androidpn/src/main/java/org/jivesoftware/smack/ConnectionConfiguration.java
import java.net.UnknownHostException;
import javax.net.SocketFactory;
import android.util.Log;
import org.androidpn.client.LogUtil;
import org.apache.harmony.javax.security.auth.callback.CallbackHandler;
import org.apache.http.conn.util.InetAddressUtils;
import org.jivesoftware.smack.proxy.ProxyInfo;
import org.jivesoftware.smack.util.DNSUtil;
import java.io.File;
import java.net.InetAddress;

/**
 * $RCSfile$
 * $Revision: 3306 $
 * $Date: 2006-01-16 14:34:56 -0300 (Mon, 16 Jan 2006) $
 *
 * Copyright 2003-2007 Jive Software.
 *
 * All rights reserved. Licensed 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.
 */

package org.jivesoftware.smack;





/**
 * Configuration to use while establishing the connection to the server. It is possible to
 * configure the path to the trustore file that keeps the trusted CA root certificates and
 * enable or disable all or some of the checkings done while verifying server certificates.<p>
 *
 * It is also possible to configure if TLS, SASL, and compression are used or not.
 *
 * @author Gaston Dombiak
 */
public class ConnectionConfiguration implements Cloneable {
    private String LOG_TAG = LogUtil.makeLogTag(ConnectionConfiguration.class);
    /**
     * Hostname of the XMPP server. Usually servers use the same service name as the name
     * of the server. However, there are some servers like google where host would be
     * talk.google.com and the serviceName would be gmail.com.
     */
    private String serviceName;

    private String host;
    private int port;

    private String truststorePath;
    private String truststoreType;
    private String truststorePassword;
    private String keystorePath;
    private String keystoreType;
    private String pkcs11Library;
    private boolean verifyChainEnabled = false;
    private boolean verifyRootCAEnabled = false;
    private boolean selfSignedCertificateEnabled = false;
    private boolean expiredCertificatesCheckEnabled = false;
    private boolean notMatchingDomainCheckEnabled = false;
    private boolean isRosterVersioningAvailable = false;
    private String capsNode = null;

    private boolean compressionEnabled = false;

    private boolean saslAuthenticationEnabled = true;
    /**
     * Used to get information from the user
     */
    private CallbackHandler callbackHandler;