List of usage examples for org.bouncycastle.asn1.x9 X962Parameters getInstance
public static X962Parameters getInstance(Object obj)
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); }