Example usage for org.bouncycastle.x509 X509V3CertificateGenerator setSerialNumber

List of usage examples for org.bouncycastle.x509 X509V3CertificateGenerator setSerialNumber

Introduction

In this page you can find the example usage for org.bouncycastle.x509 X509V3CertificateGenerator setSerialNumber.

Prototype

public void setSerialNumber(BigInteger serialNumber) 

Source Link

Document

set the serial number for the certificate.

Usage

From source file:org.silvertunnel.netlib.layer.tor.util.PrivateKeyHandler.java

License:Open Source License

public java.security.cert.X509Certificate[] getCertificateChain(String alias) {
    try {/*from   ww  w.jav  a 2  s. c  o  m*/
        org.bouncycastle.x509.X509V3CertificateGenerator generator = new org.bouncycastle.x509.X509V3CertificateGenerator();
        generator.reset();
        generator.setSerialNumber(BigInteger.valueOf(42));
        generator.setNotBefore(new Date(System.currentTimeMillis() - 24L * 3600 * 1000));
        generator.setNotAfter(new Date(System.currentTimeMillis() + 365L * 24 * 3600 * 1000));
        generator.setIssuerDN(new org.bouncycastle.asn1.x509.X509Name("CN=" + Util.MYNAME));
        generator.setSubjectDN(new org.bouncycastle.asn1.x509.X509Name("CN=" + Util.MYNAME));
        generator.setPublicKey(keypair.getPublic());
        generator.setSignatureAlgorithm("SHA1WITHRSA");
        java.security.cert.X509Certificate x509 = generator.generate(keypair.getPrivate(), "BC");
        java.security.cert.X509Certificate[] x509s = new java.security.cert.X509Certificate[2];

        // send the same certificate twice works fine with the default implementation of tor!
        //   myself:
        x509s[0] = x509;
        //   a certificate for myself:
        x509s[1] = x509;

        return x509s;
    } catch (Exception e) {
        log.severe("Caught exception: " + e.getMessage());
    }
    return null;
}

From source file:org.sonatype.nexus.ssl.CertificateUtil.java

License:Open Source License

public static X509Certificate generateCertificate(final PublicKey publicKey, final PrivateKey privateKey,
        final String algorithm, final int validDays, final String commonName, final String orgUnit,
        final String organization, final String locality, final String state, final String country)
        throws SignatureException, InvalidKeyException, NoSuchAlgorithmException, CertificateEncodingException {
    X509V3CertificateGenerator certificateGenerator = new X509V3CertificateGenerator();
    Vector<ASN1ObjectIdentifier> order = new Vector<>();
    Hashtable<ASN1ObjectIdentifier, String> attributeMap = new Hashtable<>();

    if (commonName != null) {
        attributeMap.put(X509Name.CN, commonName);
        order.add(X509Name.CN);/*from   w  w w. ja v a 2 s .  c o m*/
    }

    if (orgUnit != null) {
        attributeMap.put(X509Name.OU, orgUnit);
        order.add(X509Name.OU);
    }

    if (organization != null) {
        attributeMap.put(X509Name.O, organization);
        order.add(X509Name.O);
    }

    if (locality != null) {
        attributeMap.put(X509Name.L, locality);
        order.add(X509Name.L);
    }

    if (state != null) {
        attributeMap.put(X509Name.ST, state);
        order.add(X509Name.ST);
    }

    if (country != null) {
        attributeMap.put(X509Name.C, country);
        order.add(X509Name.C);
    }

    X509Name issuerDN = new X509Name(order, attributeMap);

    // validity
    long now = System.currentTimeMillis();
    long expire = now + (long) validDays * 24 * 60 * 60 * 1000;

    certificateGenerator.setNotBefore(new Date(now));
    certificateGenerator.setNotAfter(new Date(expire));
    certificateGenerator.setIssuerDN(issuerDN);
    certificateGenerator.setSubjectDN(issuerDN);
    certificateGenerator.setPublicKey(publicKey);
    certificateGenerator.setSignatureAlgorithm(algorithm);
    certificateGenerator.setSerialNumber(BigInteger.valueOf(now));

    // make certificate
    return certificateGenerator.generate(privateKey);
}

From source file:org.structr.function.CreateJarFileFunction.java

License:Open Source License

private KeyStore getOrCreateKeystore(final String keygenAlgorithm, final String srngAlgorithm,
        final String signAlgorithm) {

    final String keystorePath = "test.keystore";
    final String keystorePass = "test";
    final java.io.File keystoreFile = new java.io.File(keystorePath);

    if (keystoreFile.exists()) {

        try (final FileInputStream fis = new FileInputStream(keystoreFile)) {

            final KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());

            keystore.load(fis, keystorePass.toCharArray());

            return keystore;

        } catch (Throwable t) {

            t.printStackTrace();/*from w ww  .java 2s  .co m*/
        }

    } else {

        try (final FileOutputStream fos = new FileOutputStream(keystoreFile)) {

            final KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
            keystore.load(null, keystorePass.toCharArray());

            final KeyPairGenerator gen = KeyPairGenerator.getInstance(keygenAlgorithm);
            gen.initialize(1024, SecureRandom.getInstance(srngAlgorithm));

            final KeyPair keyPair = gen.generateKeyPair();
            final SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
            final Date startDate = dateFormat.parse("01.01.2015");
            final Date expiryDate = dateFormat.parse("01.01.2017");
            final BigInteger serialNumber = BigInteger.valueOf(1234);
            final X509V3CertificateGenerator certGen = new X509V3CertificateGenerator();
            final X500Principal dnName = new X500Principal("CN=Test CA Certificate");

            certGen.setSerialNumber(serialNumber);
            certGen.setIssuerDN(dnName);
            certGen.setNotBefore(startDate);
            certGen.setNotAfter(expiryDate);
            certGen.setSubjectDN(dnName);
            certGen.setPublicKey(keyPair.getPublic());
            certGen.setSignatureAlgorithm(signAlgorithm);

            final X509Certificate cert = certGen.generate(keyPair.getPrivate(), "BC");

            keystore.setCertificateEntry("cert", cert);
            keystore.setKeyEntry("priv", keyPair.getPrivate(), keystorePass.toCharArray(),
                    new Certificate[] { cert });

            keystore.store(fos, keystorePass.toCharArray());

            fos.flush();

            return keystore;

        } catch (Throwable t) {

            t.printStackTrace();
        }
    }

    return null;

}

From source file:org.structr.jar.CreateJarFileFunction.java

License:Open Source License

private KeyStore getOrCreateKeystore(final String keygenAlgorithm, final String srngAlgorithm,
        final String signAlgorithm) {

    final String keystorePath = "test.keystore";
    final String keystorePass = "test";
    final java.io.File keystoreFile = new java.io.File(keystorePath);

    if (keystoreFile.exists()) {

        try (final FileInputStream fis = new FileInputStream(keystoreFile)) {

            final KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());

            keystore.load(fis, keystorePass.toCharArray());

            return keystore;

        } catch (Throwable t) {

            logger.log(Level.WARNING, "", t);
        }/*  w ww  .j ava2 s .  com*/

    } else {

        try (final FileOutputStream fos = new FileOutputStream(keystoreFile)) {

            final KeyStore keystore = KeyStore.getInstance(KeyStore.getDefaultType());
            keystore.load(null, keystorePass.toCharArray());

            final KeyPairGenerator gen = KeyPairGenerator.getInstance(keygenAlgorithm);
            gen.initialize(1024, SecureRandom.getInstance(srngAlgorithm));

            final KeyPair keyPair = gen.generateKeyPair();
            final SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
            final Date startDate = dateFormat.parse("01.01.2015");
            final Date expiryDate = dateFormat.parse("01.01.2017");
            final BigInteger serialNumber = BigInteger.valueOf(1234);
            final X509V3CertificateGenerator certGen = new X509V3CertificateGenerator();
            final X500Principal dnName = new X500Principal("CN=Test CA Certificate");

            certGen.setSerialNumber(serialNumber);
            certGen.setIssuerDN(dnName);
            certGen.setNotBefore(startDate);
            certGen.setNotAfter(expiryDate);
            certGen.setSubjectDN(dnName);
            certGen.setPublicKey(keyPair.getPublic());
            certGen.setSignatureAlgorithm(signAlgorithm);

            final X509Certificate cert = certGen.generate(keyPair.getPrivate(), "BC");

            keystore.setCertificateEntry("cert", cert);
            keystore.setKeyEntry("priv", keyPair.getPrivate(), keystorePass.toCharArray(),
                    new Certificate[] { cert });

            keystore.store(fos, keystorePass.toCharArray());

            fos.flush();

            return keystore;

        } catch (Throwable t) {

            logger.log(Level.WARNING, "", t);
        }
    }

    return null;

}

From source file:org.sufficientlysecure.keychain.pgp.PgpToX509.java

License:Open Source License

/**
 * Creates a self-signed certificate from a public and private key. The (critical) key-usage
 * extension is set up with: digital signature, non-repudiation, key-encipherment, key-agreement
 * and certificate-signing. The (non-critical) Netscape extension is set up with: SSL client and
 * S/MIME. A URI subjectAltName may also be set up.
 *
 * @param pubKey         public key/*from  w  w w.  j  a v a 2 s  . c o m*/
 * @param privKey        private key
 * @param subject        subject (and issuer) DN for this certificate, RFC 2253 format preferred.
 * @param startDate      date from which the certificate will be valid (defaults to current date and time
 *                       if null)
 * @param endDate        date until which the certificate will be valid (defaults to current date and time
 *                       if null) *
 * @param subjAltNameURI URI to be placed in subjectAltName
 * @return self-signed certificate
 * @throws InvalidKeyException
 * @throws SignatureException
 * @throws NoSuchAlgorithmException
 * @throws IllegalStateException
 * @throws NoSuchProviderException
 * @throws CertificateException
 * @throws Exception
 * @author Bruno Harbulot
 */
public static X509Certificate createSelfSignedCert(PublicKey pubKey, PrivateKey privKey, X509Name subject,
        Date startDate, Date endDate, String subjAltNameURI) throws InvalidKeyException, IllegalStateException,
        NoSuchAlgorithmException, SignatureException, CertificateException, NoSuchProviderException {

    X509V3CertificateGenerator certGenerator = new X509V3CertificateGenerator();

    certGenerator.reset();
    /*
     * Sets up the subject distinguished name. Since it's a self-signed certificate, issuer and
     * subject are the same.
     */
    certGenerator.setIssuerDN(subject);
    certGenerator.setSubjectDN(subject);

    /*
     * Sets up the validity dates.
     */
    if (startDate == null) {
        startDate = new Date(System.currentTimeMillis());
    }
    certGenerator.setNotBefore(startDate);
    if (endDate == null) {
        endDate = new Date(startDate.getTime() + (365L * 24L * 60L * 60L * 1000L));
        Log.d(Constants.TAG, "end date is=" + DateFormat.getDateInstance().format(endDate));
    }

    certGenerator.setNotAfter(endDate);

    /*
     * The serial-number of this certificate is 1. It makes sense because it's self-signed.
     */
    certGenerator.setSerialNumber(BigInteger.ONE);
    /*
     * Sets the public-key to embed in this certificate.
     */
    certGenerator.setPublicKey(pubKey);
    /*
     * Sets the signature algorithm.
     */
    String pubKeyAlgorithm = pubKey.getAlgorithm();
    if (pubKeyAlgorithm.equals("DSA")) {
        certGenerator.setSignatureAlgorithm("SHA1WithDSA");
    } else if (pubKeyAlgorithm.equals("RSA")) {
        certGenerator.setSignatureAlgorithm("SHA1WithRSAEncryption");
    } else {
        RuntimeException re = new RuntimeException("Algorithm not recognised: " + pubKeyAlgorithm);
        Log.e(Constants.TAG, re.getMessage(), re);
        throw re;
    }

    /*
     * Adds the Basic Constraint (CA: true) extension.
     */
    certGenerator.addExtension(X509Extensions.BasicConstraints, true, new BasicConstraints(true));

    /*
     * Adds the subject key identifier extension.
     */
    SubjectKeyIdentifier subjectKeyIdentifier = new SubjectKeyIdentifierStructure(pubKey);
    certGenerator.addExtension(X509Extensions.SubjectKeyIdentifier, false, subjectKeyIdentifier);

    /*
     * Adds the authority key identifier extension.
     */
    AuthorityKeyIdentifier authorityKeyIdentifier = new AuthorityKeyIdentifierStructure(pubKey);
    certGenerator.addExtension(X509Extensions.AuthorityKeyIdentifier, false, authorityKeyIdentifier);

    /*
     * Adds the subject alternative-name extension.
     */
    if (subjAltNameURI != null) {
        GeneralNames subjectAltNames = new GeneralNames(
                new GeneralName(GeneralName.uniformResourceIdentifier, subjAltNameURI));
        certGenerator.addExtension(X509Extensions.SubjectAlternativeName, false, subjectAltNames);
    }

    /*
     * Creates and sign this certificate with the private key corresponding to the public key of
     * the certificate (hence the name "self-signed certificate").
     */
    X509Certificate cert = certGenerator.generate(privKey);

    /*
     * Checks that this certificate has indeed been correctly signed.
     */
    cert.verify(pubKey);

    return cert;
}

From source file:org.tolven.config.model.CredentialManager.java

License:Open Source License

private X509Certificate signCertificate(X500Principal subjectX500Principal, PublicKey subjectPublicKey,
        X500Principal issuerX500Principal, PrivateKey issuerPrivateKey) throws GeneralSecurityException {
    X509V3CertificateGenerator gen = new X509V3CertificateGenerator();
    gen.setSignatureAlgorithm("SHA1withRSA");
    gen.setSubjectDN(subjectX500Principal);
    gen.setSerialNumber(getNextSerialNumber());
    gen.setIssuerDN(issuerX500Principal);
    gen.setNotBefore(new Date());
    gen.setNotAfter(new Date(new Date().getTime() + 1000000000000L));
    gen.setPublicKey(subjectPublicKey);/*from w  w w  . j  av a  2  s.  c  o m*/
    return gen.generate(issuerPrivateKey);
}

From source file:org.tolven.gatekeeper.CertificateHelper.java

License:Open Source License

private X509Certificate signCertificate(X500Principal subjectX500Principal, PublicKey subjectPublicKey,
        X500Principal issuerX500Principal, PrivateKey issuerPrivateKey) {
    X509V3CertificateGenerator gen = new X509V3CertificateGenerator();
    gen.setSignatureAlgorithm("SHA1withRSA");
    gen.setSubjectDN(subjectX500Principal);
    gen.setSerialNumber(getNextSerialNumber());
    gen.setIssuerDN(issuerX500Principal);
    gen.setNotBefore(new Date());
    gen.setNotAfter(new Date(new Date().getTime() + 1000000000000L));
    gen.setPublicKey(subjectPublicKey);//ww  w .  ja  v  a2 s .  co  m
    try {
        return gen.generate(issuerPrivateKey);
    } catch (Exception e) {
        throw new RuntimeException("Could not sign cerfificate for: " + subjectX500Principal.getName(), e);
    }
}

From source file:org.tramaci.onionmail.LibSTLS.java

License:Open Source License

public static X509Certificate CreateCert(KeyPair KP, String onion, long Dfrom, long Dto, String info,
        String[] AltName) throws Exception { //OK

    byte[] bi = Stdio.md5(onion.getBytes());
    byte[] bx = new byte[bi.length + 9];
    System.arraycopy(bi, 0, bx, 1, bi.length);
    bx[0] = 0x7C;//from w ww  .  ja  va2  s  .  c om
    byte[] tmp = Stdio.Stosx(new long[] { Dfrom / 1000L, Dto / 1000L }, 4);
    int bp = 17;
    for (int ax = 0; ax < 8; ax++)
        bx[bp++] = tmp[ax];

    Date startDate = new Date(Dfrom); // time from which certificate is valid
    Date expiryDate = new Date(Dto); // time after which certificate is not valid
    BigInteger serialNumber = new BigInteger(bx); // serial number for certificate
    KeyPair keyPair = KP; // EC public/private key pair

    X509V3CertificateGenerator certGen = new X509V3CertificateGenerator();
    if (info != null && info.length() > 0)
        info = ", " + info;
    else
        info = "";
    X500Principal dnName = new X500Principal("CN=" + onion + info);
    certGen.setSerialNumber(serialNumber);
    certGen.setIssuerDN(dnName);
    certGen.setNotBefore(startDate);
    certGen.setNotAfter(expiryDate);
    certGen.setSubjectDN(dnName); // note: same as issuer
    certGen.setPublicKey(KP.getPublic());
    certGen.setSignatureAlgorithm("SHA256WithRSAEncryption");

    if (AltName != null) {
        int cx = AltName.length;
        for (int ax = 0; ax < cx; ax++)
            try {
                GeneralName generalName = new GeneralName(GeneralName.dNSName,
                        new DERIA5String(AltName[ax].toLowerCase().trim()));
                GeneralNames subjectAltNames = new GeneralNames(generalName);
                certGen.addExtension(X509Extensions.SubjectAlternativeName, false,
                        new DEROctetString(subjectAltNames));
            } catch (Exception EI) {
                Main.echo("CreateCert Error: " + EI.getMessage() + " (altName=`" + AltName[ax] + "`)\n");
            }
    }

    X509Certificate cert = certGen.generate(keyPair.getPrivate(), "BC");

    return cert;
}

From source file:org.tranche.users.MakeUserZipFileTool.java

License:Apache License

/**
 * <p>Executes the creation of the UserZipFile.</p>
 * @return//from   w ww.  j  a  v  a 2 s .co m
 * @throws java.lang.NullPointerException
 * @throws java.security.NoSuchAlgorithmException
 * @throws java.security.NoSuchProviderException
 * @throws java.security.SignatureException
 * @throws java.security.InvalidKeyException
 */
public UserZipFile makeCertificate() throws NullPointerException, NoSuchAlgorithmException,
        NoSuchProviderException, SignatureException, InvalidKeyException {
    // checks
    if (name == null) {
        throw new NullPointerException("Name is not set.");
    }
    if (passphrase == null) {
        throw new NullPointerException("Passphrase is not set.");
    }
    if (saveFile == null) {
        throw new RuntimeException("Save location is not set.");
    }

    // execute
    SecurityUtil.lazyLoad();
    // make up a new RSA keypair
    KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA", "BC");
    keyGen.initialize(1024);

    // key pair
    KeyPair keyPair = keyGen.generateKeyPair();
    PrivateKey privateKey = keyPair.getPrivate();
    PublicKey publicKey = keyPair.getPublic();

    // make a new certificate
    Hashtable attrs = new Hashtable();
    attrs.put(X509Principal.CN, name);

    // Serialnumber is random bits, where random generator is initialized with Date.getTime()
    byte[] serno = new byte[8];
    SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
    random.setSeed(TimeUtil.getTrancheTimestamp());
    random.nextBytes(serno);
    BigInteger sn = new java.math.BigInteger(serno).abs();

    // make the principle
    X509Principal principal = new X509Principal(attrs);

    //generate cert
    X509V3CertificateGenerator gen = new X509V3CertificateGenerator();
    gen.setSerialNumber(sn);
    // use the give issuer if appropriate
    if (signerCertificate != null && signerPrivateKey != null) {
        gen.setIssuerDN((X509Principal) signerCertificate.getSubjectDN());
    } else {
        gen.setIssuerDN(principal);
    }
    gen.setNotBefore(startDate);
    gen.setNotAfter(new Date(startDate.getTime() + (validDays * Long.valueOf("86400000"))));
    gen.setSubjectDN(principal);
    gen.setSignatureAlgorithm("SHA1WITHRSA");
    gen.setPublicKey(publicKey);

    // make the certificate
    X509Certificate cert = null;
    if (signerCertificate != null && signerPrivateKey != null) {
        cert = gen.generateX509Certificate(getSignerPrivateKey());
    } else {
        cert = gen.generateX509Certificate(privateKey);
    }

    // make the user file
    UserZipFile uzf = new UserZipFile(saveFile);
    uzf.setCertificate(cert);
    uzf.setPrivateKey(privateKey);
    uzf.setPassphrase(passphrase);
    uzf.saveTo(saveFile);

    // return the user
    return uzf;
}

From source file:org.votingsystem.signature.util.CertUtils.java

License:Open Source License

/**
 * Generate V3 certificate for users//from  w w  w .ja v a2  s.  c  o m
 */
public static X509Certificate generateEndEntityCert(PublicKey entityKey, PrivateKey caKey,
        X509Certificate caCert, Date dateBegin, Date dateFinish, String endEntitySubjectDN) throws Exception {
    X509V3CertificateGenerator certGen = new X509V3CertificateGenerator();
    certGen.setSerialNumber(KeyGeneratorVS.INSTANCE.getSerno());
    certGen.setIssuerDN(PrincipalUtil.getSubjectX509Principal(caCert));
    certGen.setNotBefore(dateBegin);
    certGen.setNotAfter(dateFinish);
    certGen.setSubjectDN(new X500Principal(endEntitySubjectDN));
    certGen.setPublicKey(entityKey);
    certGen.setSignatureAlgorithm(ContextVS.CERT_GENERATION_SIG_ALGORITHM);
    certGen.addExtension(X509Extensions.AuthorityKeyIdentifier, false,
            new AuthorityKeyIdentifierStructure(caCert));
    certGen.addExtension(X509Extensions.SubjectKeyIdentifier, false,
            new SubjectKeyIdentifierStructure(entityKey));
    certGen.addExtension(X509Extensions.BasicConstraints, true, new BasicConstraints(false));
    certGen.addExtension(X509Extensions.KeyUsage, true,
            new KeyUsage(KeyUsage.digitalSignature | KeyUsage.keyEncipherment));
    return certGen.generate(caKey, ContextVS.PROVIDER);
}