org.bouncycastle.jce.ECPointUtil Java Examples
The following examples show how to use
org.bouncycastle.jce.ECPointUtil.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: KeyCodec.java From UAF with Apache License 2.0 | 6 votes |
/** * 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; }
Example #2
Source File: TrustAddressGenerator.java From alpha-wallet-android with MIT License | 5 votes |
private static ECPublicKey decodeKey(byte[] encoded) throws NoSuchAlgorithmException, NoSuchProviderException, InvalidKeySpecException { ECNamedCurveParameterSpec params = ECNamedCurveTable.getParameterSpec("secp256k1"); KeyFactory fact = KeyFactory.getInstance("ECDSA", "BC"); ECCurve curve = params.getCurve(); java.security.spec.EllipticCurve ellipticCurve = EC5Util.convertCurve(curve, params.getSeed()); java.security.spec.ECPoint point = ECPointUtil.decodePoint(ellipticCurve, encoded); java.security.spec.ECParameterSpec params2 = EC5Util.convertSpec(ellipticCurve, params); java.security.spec.ECPublicKeySpec keySpec = new java.security.spec.ECPublicKeySpec(point, params2); return (ECPublicKey) fact.generatePublic(keySpec); }
Example #3
Source File: Account.java From ontology-java-sdk with GNU Lesser General Public License v3.0 | 4 votes |
private void parsePublicKey(byte[] data) throws Exception { if (data == null) { throw new Exception(ErrorCode.NullInput); } if (data.length < 2) { throw new Exception(ErrorCode.InvalidData); } if(data.length == 33){ this.keyType = KeyType.ECDSA; } else if(data.length == 35) { this.keyType = KeyType.fromLabel(data[0]); } this.privateKey = null; this.publicKey = null; switch (this.keyType) { case ECDSA: this.keyType = KeyType.ECDSA; 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( param0.getCurve(), Arrays.copyOfRange(data, 0, data.length)), param0); KeyFactory kf0 = KeyFactory.getInstance("EC", "BC"); this.publicKey = kf0.generatePublic(pubSpec0); break; case SM2: // this.keyType = KeyType.fromLabel(data[0]); Curve c = Curve.fromLabel(data[1]); 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( param.getCurve(), Arrays.copyOfRange(data, 2, data.length)), param); KeyFactory kf = KeyFactory.getInstance("EC", "BC"); this.publicKey = kf.generatePublic(pubSpec); break; default: throw new Exception(ErrorCode.UnknownKeyType); } }