public static ECNamedCurveSpec getEcParameterSpec(GOSTCurve curve) { String curveName = curve.getJavaName(); ECNamedCurveParameterSpec spec = ECNamedCurveTable.getParameterSpec(curveName); return new ECNamedCurveSpec(curveName, spec.getCurve(), spec.getG(), spec.getN(), spec.getH(), spec.getSeed()); }
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); } } }
/** * 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); }
private static boolean isP256(ECParameterSpec params) { ECNamedCurveParameterSpec p256 = ECNamedCurveTable.getParameterSpec("P-256"); return (Objects.equals(p256.getN(), params.getOrder()) && Objects.equals(p256.getG().getAffineXCoord().toBigInteger(), params.getGenerator().getAffineX()) && Objects.equals(p256.getG().getAffineYCoord().toBigInteger(), params.getGenerator().getAffineY()) && Objects.equals(p256.getH(), BigInteger.valueOf(params.getCofactor())) ); }
public static Curve valueOf(ECCurve v) throws Exception { for (Curve c : Curve.values()) { if (ECNamedCurveTable.getParameterSpec(c.toString()).getCurve().equals(v)) { return c; } } throw new Exception(ErrorCode.UnknownCurve); }
/** * Verify that the private key belongs to the public key. * * @param privateKey * @param publicKey * @return */ public static boolean verifyKeyPair(PrivateKey privateKey, PublicKey publicKey) { ECNamedCurveParameterSpec curveParameters = ECNamedCurveTable.getParameterSpec(CURVE); ECPoint g = curveParameters.getG(); ECPoint sG = g.multiply(((java.security.interfaces.ECPrivateKey) privateKey).getS()); return sG.equals(((ECPublicKey) publicKey).getQ()); }
@Override public String toString() { return "ECDSASignatureAlgorithm(curve=" + ecSpec.getName() + ")"; }
/** * 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); }
public static PublicKey createPubKeyEcdsa(String name, BigInteger x, BigInteger y) throws NoSuchAlgorithmException, InvalidKeySpecException { final String curveName = EC_NAME_TO_CURVE_NAME.get(name); ECNamedCurveParameterSpec curveParaSpecBc = ECNamedCurveTable.getParameterSpec(curveName); ECPoint point = curveParaSpecBc.getCurve().createPoint(x, y); ECPublicKeySpec pubKeySpec = new ECPublicKeySpec(point, curveParaSpecBc); return new JCEECPublicKey("EC", pubKeySpec); } }
public static ECParameterSpec convertSpec( EllipticCurve ellipticCurve, org.bouncycastle.jce.spec.ECParameterSpec spec) { if (spec instanceof ECNamedCurveParameterSpec) { return new ECNamedCurveSpec( ((ECNamedCurveParameterSpec)spec).getName(), ellipticCurve, convertPoint(spec.getG()), spec.getN(), spec.getH()); } else { return new ECParameterSpec( ellipticCurve, convertPoint(spec.getG()), spec.getN(), spec.getH().intValue()); } }
@Override public PublicKey deserializePublicKey(String keyString) { final ECPoint q = ecSpec.getCurve().decodePoint(Base64.getDecoder().decode(keyString)); ECPublicKeyParameters keyParams = new ECPublicKeyParameters( q, new ECDomainParameters(ecSpec.getCurve(), ecSpec.getG(), ecSpec.getN(), ecSpec.getH()) ); return new BCECPublicKey("ECDSA", keyParams, ecSpec, BouncyCastleProvider.CONFIGURATION); }
/** * 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; }
this.curveParams = new Object[]{Curve.P256.toString()}; ECNamedCurveParameterSpec spec0 = ECNamedCurveTable.getParameterSpec(Curve.P256.toString()); ECParameterSpec param0 = new ECNamedCurveSpec(spec0.getName(), spec0.getCurve(), spec0.getG(), spec0.getN()); ECPublicKeySpec pubSpec0 = new ECPublicKeySpec( ECPointUtil.decodePoint( this.curveParams = new Object[]{c.toString()}; ECNamedCurveParameterSpec spec = ECNamedCurveTable.getParameterSpec(c.toString()); ECParameterSpec param = new ECNamedCurveSpec(spec.getName(), spec.getCurve(), spec.getG(), spec.getN()); ECPublicKeySpec pubSpec = new ECPublicKeySpec( ECPointUtil.decodePoint(
public static Curve valueOf(ECCurve v) throws Exception { for (Curve c : Curve.values()) { if (ECNamedCurveTable.getParameterSpec(c.toString()).getCurve().equals(v)) { return c; } } throw new Exception(ErrorCode.UnknownCurve); }
String name = ((ECNamedCurveParameterSpec)k.getParameters()).getName(); return new ECPrivateKeyParameters( k.getD(),
public static ECDomainParameters getDomainParameters( ProviderConfiguration configuration, org.bouncycastle.jce.spec.ECParameterSpec params) { ECDomainParameters domainParameters; if (params instanceof ECNamedCurveParameterSpec) { ECNamedCurveParameterSpec nParams = (ECNamedCurveParameterSpec)params; ASN1ObjectIdentifier nameOid = ECUtil.getNamedCurveOid(nParams.getName()); domainParameters = new ECNamedDomainParameters(nameOid, nParams.getCurve(), nParams.getG(), nParams.getN(), nParams.getH(), nParams.getSeed()); } else if (params == null) { org.bouncycastle.jce.spec.ECParameterSpec iSpec = configuration.getEcImplicitlyCa(); domainParameters = new ECDomainParameters(iSpec.getCurve(), iSpec.getG(), iSpec.getN(), iSpec.getH(), iSpec.getSeed()); } else { domainParameters = new ECDomainParameters(params.getCurve(), params.getG(), params.getN(), params.getH(), params.getSeed()); } return domainParameters; }
/** * 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; }
this.curveParams = new Object[]{Curve.P256.toString()}; ECNamedCurveParameterSpec spec0 = ECNamedCurveTable.getParameterSpec(Curve.P256.toString()); ECParameterSpec param0 = new ECNamedCurveSpec(spec0.getName(), spec0.getCurve(), spec0.getG(), spec0.getN()); ECPublicKeySpec pubSpec0 = new ECPublicKeySpec( ECPointUtil.decodePoint( this.curveParams = new Object[]{c.toString()}; ECNamedCurveParameterSpec spec = ECNamedCurveTable.getParameterSpec(c.toString()); ECParameterSpec param = new ECNamedCurveSpec(spec.getName(), spec.getCurve(), spec.getG(), spec.getN()); ECPublicKeySpec pubSpec = new ECPublicKeySpec( ECPointUtil.decodePoint(
public static NamedGroup getNamedCuveFromECCurve(ECCurve unknownCurve) { for (NamedGroup group : NamedGroup.values()) { ECNamedCurveParameterSpec parameterSpec = ECNamedCurveTable.getParameterSpec(group.name()); if (parameterSpec.getCurve().equals(unknownCurve)) { return group; } } return null; }