On 2013-10-08 17:41, Vincent Ryan wrote: > Currently, there is no public API for named curves.
Since I wanted a source-compatible BC, JDK 6-7, and Android solution, I ended-up using public key samples instead: ECParameterSpec spec = ((ECPublicKey) KeyFactory.getInstance ("EC").generatePublic (new X509EncodedKeySpec (sample_public_key))).getParams (); https://code.google.com/p/openkeystore/source/browse/library/trunk/src/org/webpki/crypto/KeyAlgorithms.java It is not pretty but since it is one-time op I can (probably) live with it. Anders > > However you can generate named curves using the SunEC provider and the > ECParameterSpec class. > For example, > > AlgorithmParameters parameters = > AlgorithmParameters.getInstance("EC", "SunEC"); > parameters.init(new ECGenParameterSpec("secp256r1")); > ECParameterSpec ecParameters = > parameters.getParameterSpec(ECParameterSpec.class); > > return KeyFactory.getInstance("EC", "SunEC").generatePublic(new > ECPublicKeySpec(new ECPoint(x, y), ecParameters)); > > > It's not elegant but the list of supported named curves can be extracted from > the AlgorithmParameters.EC SupportedCurves > property. For example, > > String[] curves = Security.getProvider("SunEC") > .getProperty("AlgorithmParameters.EC SupportedCurves") > .split("\\|"); > for (String curve : curves) { > System.out.println(curve.substring(1, curve.indexOf(","))); > } > > > > > On 8 Oct 2013, at 13:53, Anders Rundgren wrote: > >> If you have the X and Y points and the name of a public key you can create a >> ECPublicKey using BouncyCastle. >> I cannot find any counterpart in JDK 7. What am I missing? >> >> BC: >> >> return KeyFactory.getInstance ("EC").generatePublic (new ECPublicKeySpec >> (new ECPoint (x, y), new ECNamedCurveSpec (name,...))); >> >> Cheers >> Anders >