/**
   * Generate an X.509 certificate, based on the current issuer and subject using the passed in
   * signer.
   *
   * @param signer the content signer to be used to generate the signature validating the
   *     certificate.
   * @return a holder containing the resulting signed certificate.
   */
  public X509CertificateHolder build(ContentSigner signer) {
    tbsGen.setSignature(signer.getAlgorithmIdentifier());

    if (!extGenerator.isEmpty()) {
      tbsGen.setExtensions(extGenerator.generate());
    }

    return CertUtils.generateFullCert(signer, tbsGen.generateTBSCertificate());
  }