docs: public SSLSocketFactory getSSLSocketFactory(Map<String, Object> connectionInfo, Properties props) throws SSLException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              Tr.entry(tc, "getSSLSocketFactory");
  
          try {
              SSLConfig newConfig = null;
              String contextProvider = null;
              if (props != null && !props.isEmpty()) {
                  newConfig = new SSLConfig(props);
                  contextProvider = newConfig.getProperty(Constants.SSLPROP_CONTEXT_PROVIDER);
              } else {
                  if (connectionInfo == null || connectionInfo.isEmpty()) {
                      connectionInfo = new HashMap<String, Object>();
                      connectionInfo.put(Constants.CONNECTION_INFO_DIRECTION, Constants.DIRECTION_OUTBOUND);
                      if (newConfig == null) {
                          Properties sslProps = getProperties(null, connectionInfo, null, true);
                          newConfig = new SSLConfig(sslProps);
                          contextProvider = sslProps.getProperty(Constants.SSLPROP_CONTEXT_PROVIDER);
                      }
                  }
              }
  
              SSLSocketFactory rc = JSSEProviderFactory.getInstance(contextProvider).getSSLSocketFactory(connectionInfo, newConfig);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  Tr.exit(tc, "getSSLSocketFactory: " + rc);
              return rc;
          } catch (Exception e) {
              FFDCFilter.processException(e, getClass().getName(), "getSSLSocketFactory", this);
              if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
                  Tr.exit(tc, "The following exception occurred in getSSLSocketFactory().", new Object[] { e });
              throw asSSLException(e);
          }
      }