class SSLUtils {

  private SSLUtils() {
    //Utility
  }

  public static SSLContext sslContext(KeyManager[] keyManagers, TrustManager[] trustManagers, boolean trustCerts)
      throws KeyManagementException, NoSuchAlgorithmException {<FILL_FUNCTION_BODY>}

  public static KeyManager[] keyManagers(InputStream certInputStream, InputStream keyInputStream, String algo,
      String passphrase) throws UnrecoverableKeyException, NoSuchAlgorithmException, KeyStoreException, CertificateException,
      InvalidKeySpecException, IOException {
    KeyStore keyStore = createKeyStore(certInputStream, keyInputStream, algo, passphrase.toCharArray());
    KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
    kmf.init(keyStore, passphrase.toCharArray());
    return kmf.getKeyManagers();
  }
}

    if (trustManagers == null && trustCerts) {
      trustManagers = new TrustManager[] { new X509TrustManager() {
        public void checkClientTrusted(X509Certificate[] chain, String s) {
        }

        public void checkServerTrusted(X509Certificate[] chain, String s) {
        }

        public X509Certificate[] getAcceptedIssuers() {
          return new X509Certificate[0];
        }
      } };
    }
    SSLContext sslContext = SSLContext.getInstance("TLS");
    sslContext.init(keyManagers, trustManagers, new SecureRandom());
    return sslContext;
  
<no_super_class>