private void verifyWithSeparateSigningKey(X509Certificate cert,PublicKey prevKey,boolean signFlag,Set<X509Certificate> stackedCerts) throws CertPathValidatorException {
  String msg="revocation status";
  if (debug != null) {
    debug.println("RevocationChecker.verifyWithSeparateSigningKey()" + " ---checking " + msg + "...");
  }
  if ((stackedCerts != null) && stackedCerts.contains(cert)) {
    if (debug != null) {
      debug.println("RevocationChecker.verifyWithSeparateSigningKey()" + " circular dependency");
    }
    throw new CertPathValidatorException("Could not determine revocation status",null,null,-1,BasicReason.UNDETERMINED_REVOCATION_STATUS);
  }
  if (!signFlag) {
    buildToNewKey(cert,null,stackedCerts);
  }
 else {
    buildToNewKey(cert,prevKey,stackedCerts);
  }
}

private void verifyWithSeparateSigningKey ( X509Certificate cert , PublicKey prevKey , boolean signFlag , Set < X509Certificate > stackedCerts ) throws CertPathValidatorException { String msg = "revocation status" ; if ( debug != null ) { debug . println ( "RevocationChecker.verifyWithSeparateSigningKey()" + " ---checking " + msg + "..." ) ; } if ( ( stackedCerts != null ) && stackedCerts . contains ( cert ) ) { if ( debug != null ) { debug . println ( "RevocationChecker.verifyWithSeparateSigningKey()" + " circular dependency" ) ; } throw new CertPathValidatorException ( "Could not determine revocation status" , null , null , - 1 , BasicReason . UNDETERMINED_REVOCATION_STATUS ) ; } if ( ! signFlag ) { buildToNewKey ( cert , null , stackedCerts ) ; } else { buildToNewKey ( cert , prevKey , stackedCerts ) ; } }
we have a cert whose revocation status couldn ' t be verified by a crl issued by the cert that issued the crl . see if we can find a valid crl issued by a separate key that can verify the revocation status of this certificate . < p > note that this does not provide support for indirect crls , only crls signed with a different key ( but the same issuer name ) as the certificate being checked .
