public void init(AlgorithmParameterSpec params, Factory<Random> randomFactory) throws GeneralSecurityException { generator.initialize(params); KeyPair keyPair = generator.generateKeyPair(); agreement.init(keyPair.getPrivate()); ECPublicKey ecPublicKey = (ECPublicKey) keyPair.getPublic(); this.ecParameterSpec = ecPublicKey.getParams(); ECPoint w = ecPublicKey.getW(); byte[] encoded = getEncoded(w, ecParameterSpec.getCurve()); setE(encoded); }
private static int fieldSizeFromKey(ECKey ecPublicKey) { return ecPublicKey.getParams().getCurve().getField().getFieldSize(); } }
@Override public void computeK(byte[] f) throws GeneralSecurityException { KeyFactory keyFactory = SecurityUtils.getKeyFactory("EC"); ECPublicKeySpec keySpec = new ECPublicKeySpec(getDecoded(f, ecParameterSpec.getCurve()), ecParameterSpec); PublicKey yourPubKey = keyFactory.generatePublic(keySpec); agreement.doPhase(yourPubKey, true); setK(new BigInteger(1, agreement.generateSecret())); }
static JsonObject getJwk(PublicKey publicKey, String algHeader) { if (publicKey instanceof RSAPublicKey) { RSAPublicKey rsaPublicKey = (RSAPublicKey) publicKey; return Json.createObjectBuilder() .add(EXPONENT, base64UrlEncode(rsaPublicKey.getPublicExponent().toByteArray())) .add(KEY_TYPE, "RSA") .add(MODULUS, base64UrlEncode(modulusToByteArray(rsaPublicKey.getModulus()))) .build(); } else if (publicKey instanceof ECPublicKey) { ECPublicKey ecPublicKey = (ECPublicKey) publicKey; int fieldSize = ecPublicKey.getParams().getCurve().getField().getFieldSize(); return Json.createObjectBuilder() .add(CURVE, getCurveParameterFromAlgHeader(algHeader)) .add(KEY_TYPE, "EC") .add(X_COORDINATE, base64UrlEncode(coordinateToByteArray(fieldSize, ecPublicKey.getW().getAffineX()))) .add(Y_COORDINATE, base64UrlEncode(coordinateToByteArray(fieldSize, ecPublicKey.getW().getAffineY()))) .build(); } else { throw acme.unsupportedAcmeAccountPublicKeyType(publicKey.getAlgorithm()); } }
static void writePubKeyContentsIntoBuffer(PublicKey pk, Buffer<?> buf) { final ECPublicKey ecdsa = (ECPublicKey) pk; byte[] encoded = SecgUtils.getEncoded(ecdsa.getW(), ecdsa.getParams().getCurve()); buf.putString("nistp" + Integer.toString(fieldSizeFromKey(ecdsa))) .putBytes(encoded); }
} else if (param instanceof ECParameterSpec) { final ECParameterSpec ecSpec = (ECParameterSpec) param; return ecSpec.getCofactor() * 31 + Objects.hash(ecSpec.getCurve(), ecSpec.getGenerator(), ecSpec.getOrder()); } else if (param instanceof DHParameterSpec) { final DHParameterSpec dhSpec = (DHParameterSpec) param;
final ECParameterSpec ec1 = (ECParameterSpec) p1; final ECParameterSpec ec2 = (ECParameterSpec) p2; return ec1.getCofactor() == ec2.getCofactor() && Objects.equals(ec1.getCurve(), ec2.getCurve()) && Objects.equals(ec1.getGenerator(), ec2.getGenerator()) && Objects.equals(ec1.getOrder(), ec2.getOrder()); } else if (p1 instanceof DHParameterSpec && p2 instanceof DHParameterSpec) {
BigInteger s = ecpriv.getS(); ECParameterSpec spec = (ECParameterSpec) type.getParams(); EllipticCurve curve = spec.getCurve(); ECPoint g = spec.getGenerator(); ECPoint w = ECUtil.scalarMult(g, s, curve);
private static void addCurve(String name, ECParameterSpec spec) { nameToSpec.put(name, spec); curveToName.put(spec.getCurve(), name); }
/** * @param params The curve's {@link ECParameterSpec} * @return The curve's key size in bits * @throws IllegalArgumentException if invalid parameters provided */ public static int getCurveSize(ECParameterSpec params) { EllipticCurve curve = Objects.requireNonNull(params, "No EC params").getCurve(); ECField field = Objects.requireNonNull(curve, "No EC curve").getField(); return Objects.requireNonNull(field, "No EC field").getFieldSize(); }
private int getKeySize(PublicKey pkey) { if (pkey instanceof ECPublicKey) { return ((ECPublicKey) pkey).getParams().getCurve().getField().getFieldSize(); } else if (pkey instanceof RSAPublicKey) { return ((RSAPublicKey) pkey).getModulus().bitLength(); } else { throw new IllegalArgumentException( "Unsupported public key type: " + pkey.getClass().getName()); } }
public void init(AlgorithmParameterSpec params, Factory<Random> randomFactory) throws GeneralSecurityException { generator.initialize(params); KeyPair keyPair = generator.generateKeyPair(); agreement.init(keyPair.getPrivate()); ECPublicKey ecPublicKey = (ECPublicKey) keyPair.getPublic(); this.ecParameterSpec = ecPublicKey.getParams(); ECPoint w = ecPublicKey.getW(); byte[] encoded = getEncoded(w, ecParameterSpec.getCurve()); setE(encoded); }
@Override public int size() { ECParameterSpec ecParameterSpec = crv.toECParameterSpec(); if (ecParameterSpec == null) { throw new UnsupportedOperationException("Couldn't determine field size for curve " + crv.getName()); } return ecParameterSpec.getCurve().getField().getFieldSize(); }
private int getCoordinateByteLength() { ECParameterSpec spec = EllipticCurves.getSpec(getCurveName()); return (int) Math.ceil(spec.getCurve().getField().getFieldSize() / 8d); }
public static org.spongycastle.jce.spec.ECParameterSpec convertSpec( ECParameterSpec ecSpec, boolean withCompression) { ECCurve curve = convertCurve(ecSpec.getCurve()); return new org.spongycastle.jce.spec.ECParameterSpec( curve, convertPoint(curve, ecSpec.getGenerator(), withCompression), ecSpec.getOrder(), BigInteger.valueOf(ecSpec.getCofactor()), ecSpec.getCurve().getSeed()); }
EC(ECPublicKey ecKey) throws KeyException { super(ecKey); ECPoint ecPoint = ecKey.getW(); ecParams = ecKey.getParams(); ecPublicKey = encodePoint(ecPoint, ecParams.getCurve()); }
public static com.bugvm.bouncycastle.jce.spec.ECParameterSpec convertSpec( ECParameterSpec ecSpec, boolean withCompression) { ECCurve curve = convertCurve(ecSpec.getCurve()); return new com.bugvm.bouncycastle.jce.spec.ECParameterSpec( curve, convertPoint(curve, ecSpec.getGenerator(), withCompression), ecSpec.getOrder(), BigInteger.valueOf(ecSpec.getCofactor()), ecSpec.getCurve().getSeed()); }
static void writePubKeyContentsIntoBuffer(PublicKey pk, Buffer<?> buf) { final ECPublicKey ecdsa = (ECPublicKey) pk; byte[] encoded = SecgUtils.getEncoded(ecdsa.getW(), ecdsa.getParams().getCurve()); buf.putString("nistp" + Integer.toString(fieldSizeFromKey(ecdsa))) .putBytes(encoded); }
public static com.bugvm.bouncycastle.math.ec.ECPoint convertPoint( ECCurve curve, ECPoint point, boolean withCompression) { return curve.createPoint(point.getAffineX(), point.getAffineY(), withCompression); } }
private static boolean matchCurve(ECParameterSpec params, Curve curve) { int fieldSize = params.getCurve().getField().getFieldSize(); if (curve.getCurve().getField().getFieldSize() == fieldSize && curve.getCurve().equals(params.getCurve()) && curve.getGenerator().equals(params.getGenerator()) && curve.getOrder().equals(params.getOrder()) && curve.getCofactor() == params.getCofactor()) { return true; } else { return false; } }