List of usage examples for org.bouncycastle.math.ec ECMultiplier multiply
ECPoint multiply(ECPoint p, BigInteger k);
ECPoint p
by k
, i.e. From source file:com.yahoo.athenz.auth.util.Crypto.java
License:Apache License
public static PublicKey extractPublicKey(PrivateKey privateKey) throws CryptoException { // we only support RSA and ECDSA private keys PublicKey publicKey = null;// ww w. ja v a2 s . c o m switch (privateKey.getAlgorithm()) { case RSA: try { KeyFactory kf = KeyFactory.getInstance(RSA, BC_PROVIDER); RSAPrivateCrtKey rsaCrtKey = (RSAPrivateCrtKey) privateKey; RSAPublicKeySpec keySpec = new RSAPublicKeySpec(rsaCrtKey.getModulus(), rsaCrtKey.getPublicExponent()); publicKey = kf.generatePublic(keySpec); } catch (NoSuchProviderException ex) { LOG.error("extractPublicKey: RSA - Caught NoSuchProviderException exception: " + ex.getMessage()); throw new CryptoException(ex); } catch (NoSuchAlgorithmException ex) { LOG.error("extractPublicKey: RSA - Caught NoSuchAlgorithmException exception: " + ex.getMessage()); throw new CryptoException(ex); } catch (InvalidKeySpecException ex) { LOG.error("extractPublicKey: RSA - Caught InvalidKeySpecException exception: " + ex.getMessage()); throw new CryptoException(ex); } break; case ECDSA: try { KeyFactory kf = KeyFactory.getInstance(ECDSA, BC_PROVIDER); BCECPrivateKey ecPrivKey = (BCECPrivateKey) privateKey; ECMultiplier ecMultiplier = new FixedPointCombMultiplier(); ECParameterSpec ecParamSpec = (ECParameterSpec) ecPrivKey.getParameters(); ECPoint ecPointQ = ecMultiplier.multiply(ecParamSpec.getG(), ecPrivKey.getD()); ECPublicKeySpec keySpec = new ECPublicKeySpec(ecPointQ, ecParamSpec); publicKey = kf.generatePublic(keySpec); } catch (NoSuchProviderException ex) { LOG.error("extractPublicKey: ECDSA - Caught NoSuchProviderException exception: " + ex.getMessage()); throw new CryptoException(ex); } catch (NoSuchAlgorithmException ex) { LOG.error( "extractPublicKey: ECDSA - Caught NoSuchAlgorithmException exception: " + ex.getMessage()); throw new CryptoException(ex); } catch (InvalidKeySpecException ex) { LOG.error("extractPublicKey: ECDSA - Caught InvalidKeySpecException exception: " + ex.getMessage()); throw new CryptoException(ex); } break; default: String msg = "Unsupported Key Algorithm: " + privateKey.getAlgorithm(); LOG.error("extractPublicKey: " + msg); throw new CryptoException(msg); } return publicKey; }