/**
 * Copyright 2013 Ognyan Bankov
 *
 * 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 com.github.volley_examples.toolbox;

import java.io.InputStream;
import java.security.GeneralSecurityException;
import java.security.KeyManagementException;
import java.security.NoSuchAlgorithmException;

import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManager;
import khandroid.ext.apache.http.conn.ssl.SSLSocketFactory;


class SslSocketFactory extends SSLSocketFactory {
    public SslSocketFactory(InputStream keyStore, String keyStorePassword) throws GeneralSecurityException {
        super(createSSLContext(keyStore, keyStorePassword), STRICT_HOSTNAME_VERIFIER);
    }


    private static SSLContext createSSLContext(InputStream keyStore, String keyStorePassword) throws GeneralSecurityException {
        SSLContext sslcontext = null;
        try {
            sslcontext = SSLContext.getInstance("TLS");
            sslcontext.init(null, new TrustManager[] { new SsX509TrustManager(keyStore, keyStorePassword) }, null);
        } catch (NoSuchAlgorithmException e) {
            throw new IllegalStateException("Failure initializing default SSL context", e);
        } catch (KeyManagementException e) {
            throw new IllegalStateException("Failure initializing default SSL context", e);
        }

        return sslcontext;
    }
}    
@@ -982,24 +982,76 @@
 etFactory %7B%0A
+    %0A    private static KeyManager %5B%5D mKeyManager;%0A%0A
     public S
@@ -1420,13 +1420,619 @@
     
-try %7B
+KeyStore key =null;%0A        try %7B%0A%0A            if (keyStore!=null)%7B%0A            //add keystore for mutual auth%0A            key = KeyStore.getInstance(%22BKS%22);%0A            key.load(keyStore, keyStorePassword.toCharArray());%0A            KeyManagerFactory kmf = KeyManagerFactory%0A                    .getInstance(KeyManagerFactory.getDefaultAlgorithm());%0A            kmf.init(key, keyStorePassword.toCharArray());%0A            mKeyManager = kmf.getKeyManagers();%0A%0A            %7D%0A            else%7B%0A            //if mutual auth not need this parameter is null%0A            mKeyManager = null;%0A%0A            %7D%0A            
 %0A   
@@ -2112,20 +2112,27 @@
 xt.init(
-null
+mKeyManager
 , new Tr
@@ -2528,12 +2528,13 @@
 %0A    %7D%0A%7D    
+%0A

Update SslSocketFactory.java