ECNamedCurveSpec ecCurveSpec = new ECNamedCurveSpec(name, ecParams.getCurve(), ecParams.getG(), ecParams.getN()); ECPoint p = new ECPoint(bigX, bigY); ECPublicKeySpec publicKeySpec = new ECPublicKeySpec(p, ecCurveSpec);
public static GOSTCurve fromNamedSpec(ECNamedCurveSpec spec) { return fromString(spec.getName()); }
ecParameterSpec = new ECNamedCurveSpec(curveName, baseSpec.getCurve(), baseSpec.getGenerator(), baseSpec.getOrder(), BigInteger.valueOf(baseSpec.getCofactor())); curveName = ((ECNamedCurveSpec)algorithmParameterSpec).getName();
/** * Decode based on X, Y 32 byte integers * * @param pubKey * @param curveName * - Example secp256r1 * @return * @throws InvalidKeySpecException * @throws NoSuchAlgorithmException * @throws NoSuchProviderException */ public static PublicKey getPubKeyFromCurve(byte[] pubKey, String curveName) throws InvalidKeySpecException, NoSuchAlgorithmException, NoSuchProviderException { ECNamedCurveParameterSpec spec = ECNamedCurveTable .getParameterSpec(curveName); KeyFactory kf = KeyFactory.getInstance("ECDSA", new BouncyCastleProvider()); ECNamedCurveSpec params = new ECNamedCurveSpec(curveName, spec.getCurve(), spec.getG(), spec.getN()); ECPoint point = ECPointUtil.decodePoint(params.getCurve(), pubKey); ECPublicKeySpec pubKeySpec = new ECPublicKeySpec(point, params); ECPublicKey pk = (ECPublicKey) kf.generatePublic(pubKeySpec); return pk; }
public ECNamedCurveSpec( String name, ECCurve curve, org.bouncycastle.math.ec.ECPoint g, BigInteger n, BigInteger h) { super(convertCurve(curve, null), EC5Util.convertPoint(g), n, h.intValue()); this.name = name; }
/** * Determines the name of the domain parameters that were used for generating the key. * * @param key An EC key * @return The name of the domain parameters that were used for the EC key, * or an empty string if curve is unknown. */ public static String getNamedCurve(Key key) { if (!(key instanceof ECKey)) { throw new InvalidParameterException("Not a EC private key."); } ECKey ecKey = (ECKey) key; ECParameterSpec params = ecKey.getParams(); if (!(params instanceof ECNamedCurveSpec)) { return ""; } ECNamedCurveSpec ecPrivateKeySpec = (ECNamedCurveSpec) params; String namedCurve = ecPrivateKeySpec.getName(); return namedCurve; }
/** * Decode based on X, Y 32 byte integers * * @param pubKey * @param curveName * - Example secp256r1 * @return * @throws InvalidKeySpecException * @throws NoSuchAlgorithmException * @throws NoSuchProviderException */ public static PublicKey getPubKeyFromCurve(byte[] pubKey, String curveName) throws InvalidKeySpecException, NoSuchAlgorithmException, NoSuchProviderException { ECNamedCurveParameterSpec spec = ECNamedCurveTable .getParameterSpec(curveName); KeyFactory kf = KeyFactory.getInstance("ECDSA", new BouncyCastleProvider()); ECNamedCurveSpec params = new ECNamedCurveSpec(curveName, spec.getCurve(), spec.getG(), spec.getN()); ECPoint point = ECPointUtil.decodePoint(params.getCurve(), pubKey); ECPublicKeySpec pubKeySpec = new ECPublicKeySpec(point, params); ECPublicKey pk = (ECPublicKey) kf.generatePublic(pubKeySpec); return pk; }
public ECNamedCurveSpec( String name, EllipticCurve curve, ECPoint g, BigInteger n) { super(curve, g, n, 1); this.name = name; }
private PrivateKey createECDSAPrivateKey(KeyType kt, PlainBuffer buffer, String name) throws GeneralSecurityException, Buffer.BufferException { kt.readPubKeyFromBuffer(buffer); // Public key BigInteger s = new BigInteger(1, buffer.readBytes()); X9ECParameters ecParams = NISTNamedCurves.getByName(name); ECNamedCurveSpec ecCurveSpec = new ECNamedCurveSpec(name, ecParams.getCurve(), ecParams.getG(), ecParams.getN()); ECPrivateKeySpec pks = new ECPrivateKeySpec(s, ecCurveSpec); return SecurityUtils.getKeyFactory("ECDSA").generatePrivate(pks); } }
public String getCurveID(Key key) throws KeyNotSupportedException { if (key instanceof ECKey) { ECParameterSpec spec = ((ECKey) key).getParams(); if (spec instanceof ECNamedCurveSpec) { return ((ECNamedCurveSpec) spec).getName(); } else return null; } else { throw new KeyNotSupportedException("Key is not an elliptic curve key!"); } }
public ECNamedCurveSpec( String name, ECCurve curve, org.bouncycastle.math.ec.ECPoint g, BigInteger n, BigInteger h, byte[] seed) { super(convertCurve(curve, seed), EC5Util.convertPoint(g), n, h.intValue()); this.name = name; }
/** * Decode based on d - 32 byte integer * * @param privKey * @param curveName * - Example secp256r1 * @return * @throws InvalidKeySpecException * @throws NoSuchAlgorithmException * @throws NoSuchProviderException */ public static PrivateKey getPrivKeyFromCurve(byte[] privKey, String curveName) throws InvalidKeySpecException, NoSuchAlgorithmException, NoSuchProviderException { ECNamedCurveParameterSpec spec = ECNamedCurveTable .getParameterSpec(curveName); KeyFactory kf = KeyFactory.getInstance("ECDSA", new BouncyCastleProvider()); ECNamedCurveSpec params = new ECNamedCurveSpec(curveName, spec.getCurve(), spec.getG(), spec.getN()); ECPrivateKeySpec priKey = new ECPrivateKeySpec(new BigInteger(privKey), // d params); return kf.generatePrivate(priKey); }
ASN1Encodable getGostParams() { if (gostParams == null && ecSpec instanceof ECNamedCurveSpec) { this.gostParams = new GOST3410PublicKeyAlgParameters( ECGOST3410NamedCurves.getOID(((ECNamedCurveSpec)ecSpec).getName()), CryptoProObjectIdentifiers.gostR3411_94_CryptoProParamSet); } return gostParams; } }
/** * Decode based on d - 32 byte integer * * @param privKey * @param curveName * - Example secp256r1 * @return * @throws InvalidKeySpecException * @throws NoSuchAlgorithmException * @throws NoSuchProviderException */ public static PrivateKey getPrivKeyFromCurve(byte[] privKey, String curveName) throws InvalidKeySpecException, NoSuchAlgorithmException, NoSuchProviderException { ECNamedCurveParameterSpec spec = ECNamedCurveTable .getParameterSpec(curveName); KeyFactory kf = KeyFactory.getInstance("ECDSA", new BouncyCastleProvider()); ECNamedCurveSpec params = new ECNamedCurveSpec(curveName, spec.getCurve(), spec.getG(), spec.getN()); ECPrivateKeySpec priKey = new ECPrivateKeySpec(new BigInteger(privKey), // d params); return kf.generatePrivate(priKey); }
int size = spec.getOrder().bitLength(); if (spec instanceof ECNamedCurveSpec) { return new KeyInfo(ASYMMETRIC, algorithm, size, ((ECNamedCurveSpec) spec).getName()); } else { return new KeyInfo(ASYMMETRIC, algorithm, size);
ECNamedCurveSpec ecCurveSpec = new ECNamedCurveSpec(name, ecParams.getCurve(), ecParams.getG(), ecParams.getN()); ECPoint p = new ECPoint(bigX, bigY); ECPublicKeySpec publicKeySpec = new ECPublicKeySpec(p, ecCurveSpec);
public GOST3410PublicKeyAlgParameters getGostParams() { if (gostParams == null && ecSpec instanceof ECNamedCurveSpec) { BigInteger bX = this.ecPublicKey.getQ().getAffineXCoord().toBigInteger(); // need to detect key size boolean is512 = (bX.bitLength() > 256); if (is512) { this.gostParams = new GOST3410PublicKeyAlgParameters( ECGOST3410NamedCurves.getOID(((ECNamedCurveSpec)ecSpec).getName()), RosstandartObjectIdentifiers.id_tc26_gost_3411_12_512); } else { this.gostParams = new GOST3410PublicKeyAlgParameters( ECGOST3410NamedCurves.getOID(((ECNamedCurveSpec)ecSpec).getName()), RosstandartObjectIdentifiers.id_tc26_gost_3411_12_256); } } return gostParams; } }
static ECPublicKey createPublicKey(final BigInteger x, final BigInteger y, final String curve) { ECNamedCurveParameterSpec curveParameterSpec; if ((curveParameterSpec = ECNamedCurveTable.getParameterSpec(curve)) == null) { throw new IllegalArgumentException("Unsupported named curve: " + curve); } ECParameterSpec parameterSpec = new ECNamedCurveSpec( curveParameterSpec.getName(), curveParameterSpec.getCurve(), curveParameterSpec.getG(), curveParameterSpec.getN()); ECPublicKeySpec publicKeySpec = new ECPublicKeySpec(new ECPoint(x, y), parameterSpec); try { return (ECPublicKey) KeyFactory.getInstance("EC").generatePublic(publicKeySpec); } catch (Exception ex) { throw new RuntimeException(ex); } } }
private void prepareEphemeralKey() throws GeneralSecurityException { if (areParamSpecsEqual()) { LOGGER.debug("Using key from context."); msg.getComputations().setPrivateKey(chooser.getClientEcPrivateKey()); msg.getComputations().setClientPublicKey(chooser.getClientEcPublicKey()); } else { KeyPairGenerator keyGenerator = KeyPairGenerator.getInstance(getKeyPairGeneratorAlgorithm()); ECNamedCurveSpec params = GOSTUtils.getEcParameterSpec(getServerCurve()); LOGGER.debug("Generating key using curve " + params.getName()); keyGenerator.initialize(params, chooser.getContext().getBadSecureRandom()); KeyPair pair = keyGenerator.generateKeyPair(); msg.getComputations().setPrivateKey(((ECPrivateKey) pair.getPrivate()).getS()); msg.getComputations().setClientPublicKey(toCustomECPoint(((ECPublicKey) pair.getPublic()))); } }
private PrivateKey createECDSAPrivateKey(KeyType kt, PlainBuffer buffer, String name) throws GeneralSecurityException, Buffer.BufferException { PublicKey pk = kt.readPubKeyFromBuffer(buffer); // Public key BigInteger s = new BigInteger(1, buffer.readBytes()); X9ECParameters ecParams = NISTNamedCurves.getByName(name); ECNamedCurveSpec ecCurveSpec = new ECNamedCurveSpec(name, ecParams.getCurve(), ecParams.getG(), ecParams.getN()); ECPrivateKeySpec pks = new ECPrivateKeySpec(s, ecCurveSpec); return SecurityUtils.getKeyFactory("ECDSA").generatePrivate(pks); } }