public EllipticCurveJsonWebKey(Map<String, Object> params, String jcaProvider) throws JoseException { super(params, jcaProvider); curveName = getString(params, CURVE_MEMBER_NAME, true); ECParameterSpec curve = EllipticCurves.getSpec(curveName); BigInteger x = getBigIntFromBase64UrlEncodedParam(params, X_MEMBER_NAME, true); BigInteger y = getBigIntFromBase64UrlEncodedParam(params, Y_MEMBER_NAME, true); EcKeyUtil keyUtil = new EcKeyUtil(jcaProvider, null); key = keyUtil.publicKey(x, y, curve); checkForBareKeyCertMismatch(); if (params.containsKey(PRIVATE_KEY_MEMBER_NAME)) { BigInteger d = getBigIntFromBase64UrlEncodedParam(params, PRIVATE_KEY_MEMBER_NAME, false); privateKey = keyUtil.privateKey(d, curve); } removeFromOtherParams(CURVE_MEMBER_NAME, X_MEMBER_NAME, Y_MEMBER_NAME, PRIVATE_KEY_MEMBER_NAME); }