protected X509CertSelector doConversion(
      X500Name issuer, BigInteger serialNumber, byte[] subjectKeyIdentifier) {
    X509CertSelector selector = new X509CertSelector();

    if (issuer != null) {
      try {
        selector.setIssuer(issuer.getEncoded());
      } catch (IOException e) {
        throw new IllegalArgumentException("unable to convert issuer: " + e.getMessage());
      }
    }

    if (serialNumber != null) {
      selector.setSerialNumber(serialNumber);
    }

    if (subjectKeyIdentifier != null) {
      try {
        selector.setSubjectKeyIdentifier(new DEROctetString(subjectKeyIdentifier).getEncoded());
      } catch (IOException e) {
        throw new IllegalArgumentException("unable to convert issuer: " + e.getMessage());
      }
    }

    return selector;
  }