Java 类sun.security.x509.CertificateExtensions 实例源码

项目:routing-bird    文件:RSAKeyPairGenerator.java   
private X509Certificate createSignedCertificate(X509Certificate cetrificate,
    X509Certificate issuerCertificate,
    PrivateKey issuerPrivateKey) throws Exception {

    Principal issuer = issuerCertificate.getSubjectDN();
    String issuerSigAlg = issuerCertificate.getSigAlgName();

    byte[] inCertBytes = cetrificate.getTBSCertificate();
    X509CertInfo info = new X509CertInfo(inCertBytes);
    info.set(X509CertInfo.ISSUER, issuer);

    //No need to add the BasicContraint for leaf cert
    if (!cetrificate.getSubjectDN().getName().equals("CN=TOP")) {
        CertificateExtensions exts = new CertificateExtensions();
        BasicConstraintsExtension bce = new BasicConstraintsExtension(true, -1);
        exts.set(BasicConstraintsExtension.NAME, new BasicConstraintsExtension(false, bce.getExtensionValue()));
        info.set(X509CertInfo.EXTENSIONS, exts);
    }

    X509CertImpl outCert = new X509CertImpl(info);
    outCert.sign(issuerPrivateKey, issuerSigAlg);

    return outCert;
}