public PKCS10CertificationRequest generateCertificateSigningRequest()

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);
    }