private java.security.spec.ECPoint getPublicPoint(ECDSAPublicKey key) { if (!key.hasParameters()) { throw new IllegalArgumentException("Public key does not contains EC Params"); } BigInteger p = key.getPrimeModulusP(); ECCurve.Fp curve = new ECCurve.Fp(p, key.getFirstCoefA(), key.getSecondCoefB()); ECPoint.Fp pubY = (ECPoint.Fp) curve.decodePoint(key.getPublicPointY()); return new java.security.spec.ECPoint( pubY.getAffineXCoord().toBigInteger(), pubY.getAffineYCoord().toBigInteger()); }
private ECParameterSpec getParams(ECDSAPublicKey key) { if (!key.hasParameters()) { throw new IllegalArgumentException("Public key does not contains EC Params"); } BigInteger p = key.getPrimeModulusP(); ECCurve.Fp curve = new ECCurve.Fp(p, key.getFirstCoefA(), key.getSecondCoefB()); ECPoint G = curve.decodePoint(key.getBasePointG()); BigInteger order = key.getOrderOfBasePointR(); BigInteger coFactor = key.getCofactorF(); EllipticCurve jcaCurve = convertCurve(curve); return new ECParameterSpec( jcaCurve, new java.security.spec.ECPoint( G.getAffineXCoord().toBigInteger(), G.getAffineYCoord().toBigInteger()), order, coFactor.intValue()); }