class SignedCertificateGenerator {

  public X509Certificate getSignedByIssuer(
    final KeyPair keyPair,
    final CertificateGenerationParameters params,
    final X509Certificate caCertificate,
    final PrivateKey caPrivateKey) throws Exception {
    return getSignedByIssuer(
      caCertificate,
      caPrivateKey,
      getSubjectNameFrom(caCertificate),
      getSubjectKeyIdentifierFrom(caCertificate), keyPair,
      params
    );
  }

  @Autowired  SignedCertificateGenerator(
    final CurrentTimeProvider timeProvider,
    final RandomSerialNumberGenerator serialNumberGenerator,
    final JcaContentSignerBuilder jcaContentSignerBuilder,
    final JcaX509CertificateConverter jcaX509CertificateConverter
  );

}