Example usage for org.bouncycastle.asn1.x9 X962Parameters getInstance

List of usage examples for org.bouncycastle.asn1.x9 X962Parameters getInstance

Introduction

In this page you can find the example usage for org.bouncycastle.asn1.x9 X962Parameters getInstance.

Prototype

public static X962Parameters getInstance(Object obj) 

Source Link

Usage

From source file:org.cesecore.keys.util.KeyToolsTest.java

License:Open Source License

@Test
public void testGenKeysECDSAx9() throws Exception {
    KeyPair keys = KeyTools.genKeys("prime192v1", AlgorithmConstants.KEYALGORITHM_ECDSA);
    // Verify that the keys are using maned curves, and not explicit parameters
    PrivateKeyInfo priv2 = PrivateKeyInfo.getInstance(keys.getPrivate().getEncoded());
    assertTrue("Private key is not encoded with named curves, but using explicit parameters",
            X962Parameters.getInstance(priv2.getPrivateKeyAlgorithm().getParameters()).isNamedCurve());
    SubjectPublicKeyInfo pub2 = SubjectPublicKeyInfo.getInstance(keys.getPublic().getEncoded());
    assertTrue("Public key is not encoded with named curves, but using explicit parameters",
            X962Parameters.getInstance(pub2.getAlgorithm().getParameters()).isNamedCurve());

    assertNotNull("keys must not be null", keys);
    String b64private = new String(Base64.encode(keys.getPrivate().getEncoded()));
    assertNotNull("b64private must not be null", b64private);
    // log.debug(b64private);
    X509Certificate cert = CertTools.genSelfCert("C=SE,O=Test,CN=Test", 365, null, keys.getPrivate(),
            keys.getPublic(), AlgorithmConstants.SIGALG_SHA256_WITH_ECDSA, true);
    // log.debug(cert);
    assertNotNull("cert must not be null", cert);
    String b64cert = new String(Base64.encode(cert.getEncoded()));
    assertNotNull("b64cert cannot be null", b64cert);
    // log.debug(b64cert);
    KeyTools.testKey(keys.getPrivate(), keys.getPublic(), "BC");
    // Test that fails
    KeyPair keys1 = KeyTools.genKeys("prime192v1", AlgorithmConstants.KEYALGORITHM_ECDSA);
    try {/*w w w . ja  v a2  s  .  com*/
        KeyTools.testKey(keys1.getPrivate(), keys.getPublic(), "BC");
        assertTrue(false);
    } catch (InvalidKeyException e) {
        assertEquals("Not possible to sign and then verify with key pair.", e.getMessage());
    }

    // This will not do anything for a key which is not an org.ejbca.cvc.PublicKeyEC
    PublicKey pk = KeyTools.getECPublicKeyWithParams(keys.getPublic(), "prime192v1");
    assertTrue(pk.equals(keys.getPublic()));
    pk = KeyTools.getECPublicKeyWithParams(keys.getPublic(), pk);
    assertTrue(pk.equals(keys.getPublic()));

    AlgorithmParameterSpec spec = KeyTools.getKeyGenSpec(keys.getPublic());
    assertNotNull(spec);
    assertTrue((spec instanceof ECParameterSpec));

    assertTrue(KeyTools.isPrivateKeyExtractable(keys.getPrivate()));

    ByteArrayOutputStream out = new ByteArrayOutputStream();
    PrintStream ps = new PrintStream(out);
    KeyTools.printPublicKeyInfo(keys.getPublic(), ps);
    ps.close();
    String str = out.toString();
    assertTrue(str.contains("Elliptic curve key"));
}

From source file:org.xipki.commons.security.util.KeyUtil.java

License:Open Source License

public static ECPublicKey createECPublicKey(final byte[] encodedAlgorithmIdParameters,
        final byte[] encodedPoint) throws InvalidKeySpecException {
    ParamUtil.requireNonNull("encodedAlgorithmIdParameters", encodedAlgorithmIdParameters);
    ParamUtil.requireNonNull("encodedPoint", encodedPoint);

    ASN1Encodable algParams;//  ww  w .  j ava2s .com
    if (encodedAlgorithmIdParameters[0] == 6) {
        algParams = ASN1ObjectIdentifier.getInstance(encodedAlgorithmIdParameters);
    } else {
        algParams = X962Parameters.getInstance(encodedAlgorithmIdParameters);
    }
    AlgorithmIdentifier algId = new AlgorithmIdentifier(X9ObjectIdentifiers.id_ecPublicKey, algParams);

    SubjectPublicKeyInfo spki = new SubjectPublicKeyInfo(algId, encodedPoint);
    X509EncodedKeySpec keySpec;
    try {
        keySpec = new X509EncodedKeySpec(spki.getEncoded());
    } catch (IOException ex) {
        throw new InvalidKeySpecException(ex.getMessage(), ex);
    }

    KeyFactory kf;
    try {
        kf = KeyFactory.getInstance("EC", "BC");
    } catch (NoSuchAlgorithmException | NoSuchProviderException ex) {
        throw new InvalidKeySpecException(ex.getMessage(), ex);
    }
    return (ECPublicKey) kf.generatePublic(keySpec);
}