docs: @Override
      public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              Tr.entry(tc, "checkClientTrusted");
  
          extendedInfo = JSSEHelper.getInstance().getInboundConnectionInfo();
          if (extendedInfo != null)
              peerHost = (String) extendedInfo.get(Constants.CONNECTION_INFO_REMOTE_HOST);
  
          // if we do not have host and port just go ahead and default it to unknown
          // to avoid null's
          if (peerHost == null || peerHost.equals("")) {
              peerHost = "unknown";
          }
  
          try {
  
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) {
                  for (int j = 0; j < chain.length; j++) {
                      Tr.debug(tc, "chain[" + j + "]: " + chain[j].getSubjectDN());
                  }
              }
  
              for (int i = 0; i < tm.length; i++) {
                  if (tm[i] != null && tm[i] instanceof X509TrustManager) {
                      // skip the default trust manager if configured to do so.
                      try {
                          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                              Tr.debug(tc, "Delegating to X509TrustManager: " + tm[i].getClass().getName());
                          ((X509TrustManager) tm[i]).checkClientTrusted(chain, authType);
  
                      } catch (Exception e) {
                          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                              Tr.debug(tc, "Certificate Exception occurred: " + e.getMessage());
  
                          Exception excpt = e;
                          if (excpt.getClass().toString().startsWith("class com.ibm.jsse2")) {
                              excpt = (Exception) excpt.getCause();
                          }
  
                          FFDCFilter.processException(excpt, getClass().getName(), "checkClientTrusted", this, new Object[] { chain, authType });
  
                          printClientHandshakeError(config, tsFile, e, chain);
  
                          // Wrap exception in CertificateException if not a
                          // CertificateException already
                          if (excpt instanceof CertificateException) {
                              throw (CertificateException) excpt;
                          }
  
                          throw new CertificateException(excpt.getMessage());
                      }
                  }
              }
  
          } catch (Throwable t) {
              // here we want to try to catch any runtime exceptions that might occur,
              // print a message and rethrow
              if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                  Tr.debug(tc, "Caught exception in checkClientTrusted.", new Object[] { t });
              FFDCFilter.processException(t, getClass().getName(), "checkClientTrusted", this, new Object[] { chain, authType });
  
              if (t instanceof RuntimeException) {
                  throw (RuntimeException) t;
              }
              if (t instanceof CertificateException) {
                  throw (CertificateException) t;
              }
              throw new CertificateException(t);
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              Tr.exit(tc, "checkClientTrusted");
      }