private void initSSLSocketFactoryEx()

in src/main/java/com/microsoft/azure/datalake/store/SSLSocketFactoryEx.java [155:190]


  private void initSSLSocketFactoryEx(KeyManager[] km, TrustManager[] tm,
                                      SecureRandom random)
      throws NoSuchAlgorithmException, KeyManagementException, IOException {

    switch (channelMode) {
    case Default:
      try {
        java.util.logging.Logger.getLogger(SSL.class.getName()).setLevel(Level.WARNING);
        m_ctx = SSLContext.getInstance("openssl.TLS");
        m_ctx.init(km, tm, random);
        channelMode = SSLChannelMode.OpenSSL;
      } catch (NoSuchAlgorithmException e) {
        log.info("Failed to load OpenSSL library. Fallback to default JSE. ", e);
        m_ctx = SSLContext.getDefault();
        channelMode = SSLChannelMode.Default_JSE;
      }
      break;

    case Default_JSE:
      m_ctx = SSLContext.getDefault();
      break;

    case OpenSSL:
      m_ctx = SSLContext.getInstance("openssl.TLS");
      m_ctx.init(km, tm, random);
      break;
    }

    // Get list of supported cipher suits from the SSL factory.
    SSLSocketFactory factory = m_ctx.getSocketFactory();
    String[] defaultCiphers = factory.getSupportedCipherSuites();
    String version = System.getProperty("java.version");

    m_ciphers = (channelMode == SSLChannelMode.Default_JSE && version.startsWith("1.8")) ?
         alterCipherList(defaultCiphers) :  defaultCiphers;
  }