Example usage for org.bouncycastle.jce.spec ECNamedCurveSpec ECNamedCurveSpec

List of usage examples for org.bouncycastle.jce.spec ECNamedCurveSpec ECNamedCurveSpec

Introduction

In this page you can find the example usage for org.bouncycastle.jce.spec ECNamedCurveSpec ECNamedCurveSpec.

Prototype

public ECNamedCurveSpec(String name, ECCurve curve, org.bouncycastle.math.ec.ECPoint g, BigInteger n,
            BigInteger h, byte[] seed) 

Source Link

Usage

From source file:com.pazdev.jose.JWK.java

License:Apache License

/**
 * <p>//from w ww .  j  a  va2 s . co m
 * Converts the keys described in this JWK to JCE {@link Key} objects. The map
 * returned will either be empty, signifying that no keys could be obtained
 * based on the given information, or one of the following keys:
 * </p>
 * <ul>
 * <li>public</li>
 * <li>private</li>
 * <li>secret</li>
 * </ul>
 * @return a map containing all the obtainable keys.
 */
@JsonIgnore
public Map<String, Key> getKeys() {
    HashMap<String, Key> retval = new HashMap<>();
    try {
        if (null != keyType)
            switch (keyType) {
            case "EC": {
                KeyFactory fac = KeyFactory.getInstance("EC", "BC");
                ECNamedCurveParameterSpec ecParamSpecBC = ECNamedCurveTable.getParameterSpec(curve);
                ECNamedCurveSpec ecParamSpec = new ECNamedCurveSpec(ecParamSpecBC.getName(),
                        ecParamSpecBC.getCurve(), ecParamSpecBC.getG(), ecParamSpecBC.getN(),
                        ecParamSpecBC.getH(), ecParamSpecBC.getSeed());
                if (privateKey != null && privateKey.length > 0) {
                    ECPrivateKeySpec privateSpec = new ECPrivateKeySpec(new BigInteger(1, privateKey),
                            ecParamSpec);
                    retval.put("private", fac.generatePrivate(privateSpec));
                }
                if (xCoordinate != null && xCoordinate.length > 0) {
                    ECPublicKeySpec publicSpec = new ECPublicKeySpec(
                            new ECPoint(new BigInteger(1, xCoordinate), new BigInteger(1, yCoordinate)),
                            ecParamSpec);
                    retval.put("public", fac.generatePublic(publicSpec));
                }
                break;
            }
            case "RSA": {
                KeyFactory fac = KeyFactory.getInstance("RSA", "BC");
                BigInteger m = new BigInteger(1, modulus);
                BigInteger e = new BigInteger(1, exponent);
                retval.put("public", fac.generatePublic(new RSAPublicKeySpec(m, e)));
                if (privateKey != null && privateKey.length > 0) {
                    BigInteger d = new BigInteger(1, privateKey);
                    BigInteger p, q, dp, dq, qi;
                    RSAOtherPrimeInfo[] otherPrimes = null;
                    if (firstPrimeFactor != null && firstPrimeFactor.length > 0) {
                        p = new BigInteger(1, firstPrimeFactor);
                    } else {
                        p = null;
                    }
                    if (secondPrimeFactor != null && secondPrimeFactor.length > 0) {
                        q = new BigInteger(1, secondPrimeFactor);
                    } else {
                        q = null;
                    }
                    if (firstFactorCrtExponent != null && firstFactorCrtExponent.length > 0) {
                        dp = new BigInteger(1, firstFactorCrtExponent);
                    } else {
                        dp = null;
                    }
                    if (secondFactorCrtExponent != null && secondFactorCrtExponent.length > 0) {
                        dq = new BigInteger(1, secondFactorCrtExponent);
                    } else {
                        dq = null;
                    }
                    if (firstCrtCoefficient != null && firstCrtCoefficient.length > 0) {
                        qi = new BigInteger(1, firstCrtCoefficient);
                    } else {
                        qi = null;
                    }
                    if (otherPrimesInfo != null && otherPrimesInfo.size() > 0) {
                        otherPrimes = new RSAOtherPrimeInfo[otherPrimesInfo.size()];
                        for (int i = otherPrimes.length - 1; i >= 0; --i) {
                            BigInteger or, od, ot;
                            OtherPrimeInfo other = otherPrimesInfo.get(i);
                            if (other.primeFactor != null && other.primeFactor.length > 0) {
                                or = new BigInteger(1, other.primeFactor);
                            } else {
                                or = null;
                            }
                            if (other.factorCrtExponent != null && other.factorCrtExponent.length > 0) {
                                od = new BigInteger(1, other.factorCrtExponent);
                            } else {
                                od = null;
                            }
                            if (other.factorCrtCoefficient != null && other.factorCrtCoefficient.length > 0) {
                                ot = new BigInteger(1, other.factorCrtCoefficient);
                            } else {
                                ot = null;
                            }
                            otherPrimes[i] = new RSAOtherPrimeInfo(or, od, ot);
                        }
                    }
                    if (p != null || q != null || dp != null || dq != null) {
                        if (otherPrimes != null) {
                            RSAMultiPrimePrivateCrtKeySpec spec = new RSAMultiPrimePrivateCrtKeySpec(m, e, d, p,
                                    q, dp, dq, qi, otherPrimes);
                            retval.put("private", fac.generatePrivate(spec));
                        } else {
                            RSAPrivateCrtKeySpec spec = new RSAPrivateCrtKeySpec(m, e, d, p, q, dp, dq, qi);
                            retval.put("private", fac.generatePrivate(spec));
                        }
                    } else {
                        RSAPrivateKeySpec spec = new RSAPrivateKeySpec(m, d);
                        retval.put("private", fac.generatePrivate(spec));
                    }
                }
                break;
            }
            case "oct":
                retval.put("secret", new SecretKeySpec(keyValue, algorithm != null ? algorithm : "AES"));
                break;
            }
    } catch (NoSuchAlgorithmException | NoSuchProviderException | InvalidKeySpecException e) {
        throw new RuntimeException(e);
    }
    return retval;
}

From source file:org.jmrtd.test.lds.CardSecurityFileTest.java

License:Open Source License

public CardSecurityFile createConstructedSample() {
    try {/*  w ww .ja  va  2s  . c  o  m*/
        SecurityInfo caSecurityInfo = new ChipAuthenticationInfo(
                ChipAuthenticationInfo.ID_CA_ECDH_AES_CBC_CMAC_256_OID, ChipAuthenticationInfo.VERSION_1);
        SecurityInfo taSecurityInfo = new TerminalAuthenticationInfo();

        Set<SecurityInfo> securityInfos = new HashSet<SecurityInfo>(2);
        securityInfos.add(caSecurityInfo);
        securityInfos.add(taSecurityInfo);

        /* Generate a document signer certificate and private signing key. */
        String digestAlgorithm = "SHA-256";
        String digestEncryptionAlgorithm = "SHA256withECDSA";

        ECNamedCurveParameterSpec bcParamSpec = ECNamedCurveTable.getParameterSpec("brainpoolp256r1");
        ECParameterSpec jceParamSpec = new ECNamedCurveSpec(bcParamSpec.getName(), bcParamSpec.getCurve(),
                bcParamSpec.getG(), bcParamSpec.getN(), bcParamSpec.getH(), bcParamSpec.getSeed());

        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("EC", "BC");
        keyPairGenerator.initialize(jceParamSpec);

        KeyPair cscaKeyPair = keyPairGenerator.generateKeyPair();
        KeyPair dsKeyPair = keyPairGenerator.generateKeyPair();

        Calendar calendar = Calendar.getInstance();

        Date dateOfIssuing = calendar.getTime();
        calendar.add(Calendar.MONTH, 2);
        Date dateOfDSExpiry = calendar.getTime();
        calendar.add(Calendar.YEAR, 5);
        Date dateOfCSCAExpiry = calendar.getTime();

        String issuer = "C=UT, O=Gov, CN=CSCA";
        String subject = "C=UT, O=Gov, CN=DS-01";

        X509Certificate cscaCert = CertificateUtil.createCertificate(issuer, issuer, dateOfIssuing,
                dateOfCSCAExpiry, cscaKeyPair.getPublic(), cscaKeyPair.getPrivate(), digestEncryptionAlgorithm);

        X509Certificate dsCert = CertificateUtil.createCertificate(issuer, subject, dateOfIssuing,
                dateOfDSExpiry, dsKeyPair.getPublic(), cscaKeyPair.getPrivate(), digestEncryptionAlgorithm);

        /* Create the card security file. */
        return new CardSecurityFile(digestAlgorithm, digestEncryptionAlgorithm, securityInfos,
                dsKeyPair.getPrivate(), dsCert, "BC");
    } catch (Exception e) {
        LOGGER.log(Level.SEVERE, "Exception during construction of sample", e);
        fail(e.getMessage());
        return null;
    }
}

From source file:org.jruby.ext.openssl.PKeyEC.java

License:Open Source License

private static ECParameterSpec getParamSpec(final String curveName) {
    ECNamedCurveParameterSpec spec = ECNamedCurveTable.getParameterSpec(curveName);
    return new ECNamedCurveSpec(spec.getName(), spec.getCurve(), spec.getG(), spec.getN(), spec.getH(),
            spec.getSeed());/*from   w  w w .jav  a 2  s .co m*/
}