in src/main/java/com/awslabs/iot/helpers/implementations/BasicIotHelper.java [812:831]
public PKCS10CertificationRequest generateCertificateSigningRequest(KeyPair keyPair, List<Tuple2<String, String>> certificateName, List<Tuple2<ASN1ObjectIdentifier, ASN1Encodable>> attributes) {
// Guidance from - https://stackoverflow.com/a/20550258
X500Name x500CertificateName = toX500Name(certificateName);
PKCS10CertificationRequestBuilder jcaPKCS10CertificationRequestBuilder = new JcaPKCS10CertificationRequestBuilder(x500CertificateName, keyPair.getPublic());
// Add attributes if there are any
attributes.forEach(attribute -> jcaPKCS10CertificationRequestBuilder.addAttribute(attribute._1, attribute._2));
ContentSigner contentSigner;
if (keyPair.getPublic() instanceof RSAPublicKey) {
contentSigner = getRsaContentSigner(Option.of(keyPair));
} else if (keyPair.getPublic() instanceof ECPublicKey) {
contentSigner = getEcdsaContentSigner(Option.of(keyPair));
} else {
throw new RuntimeException("Unexpected public key type when generating a certificate signing request");
}
return jcaPKCS10CertificationRequestBuilder.build(contentSigner);
}