List of usage examples for org.bouncycastle.crypto.params DHPrivateKeyParameters getParameters
public DHParameters getParameters()
From source file:net.java.otr4j.crypto.DHKeyPairOTR3.java
License:LGPL
/** * Generate a DH key pair.// ww w . j a v a 2s .c o m * * @param random the SecureRandom instance * @return Returns the DH key pair. */ @Nonnull public static DHKeyPairOTR3 generateDHKeyPair(final SecureRandom random) { // Generate a AsymmetricCipherKeyPair using BC. final DHParameters dhParams = new DHParameters(MODULUS, GENERATOR, null, DH_PRIVATE_KEY_MINIMUM_BIT_LENGTH); final DHKeyGenerationParameters params = new DHKeyGenerationParameters(random, dhParams); final DHKeyPairGenerator kpGen = new DHKeyPairGenerator(); kpGen.init(params); final KeyFactory keyFac; try { keyFac = KeyFactory.getInstance(KF_DH); } catch (final NoSuchAlgorithmException ex) { throw new IllegalStateException("DH key factory unavailable.", ex); } final AsymmetricCipherKeyPair pair = kpGen.generateKeyPair(); final DHPublicKeyParameters pub = convertToPublicKeyParams(pair.getPublic()); final DHPublicKeySpec pubKeySpecs = new DHPublicKeySpec(pub.getY(), MODULUS, GENERATOR); final DHPublicKey pubKey; try { pubKey = (DHPublicKey) keyFac.generatePublic(pubKeySpecs); } catch (final InvalidKeySpecException ex) { throw new IllegalStateException("Failed to generate DH public key.", ex); } final DHPrivateKeyParameters priv = convertToPrivateKeyParams(pair.getPrivate()); final DHParameters dhParameters = priv.getParameters(); final DHPrivateKeySpec privKeySpecs = new DHPrivateKeySpec(priv.getX(), dhParameters.getP(), dhParameters.getG()); final DHPrivateKey privKey; try { privKey = (DHPrivateKey) keyFac.generatePrivate(privKeySpecs); } catch (final InvalidKeySpecException ex) { throw new IllegalStateException("Failed to generate DH private key.", ex); } return new DHKeyPairOTR3(privKey, pubKey); }
From source file:net.java.otr4j.crypto.OtrCryptoEngineImpl.java
License:Apache License
@Override public KeyPair generateDHKeyPair() throws OtrCryptoException { // Generate a AsymmetricCipherKeyPair using BC. DHParameters dhParams = new DHParameters(MODULUS, GENERATOR, null, DH_PRIVATE_KEY_MINIMUM_BIT_LENGTH); DHKeyGenerationParameters params = new DHKeyGenerationParameters(new SecureRandom(), dhParams); DHKeyPairGenerator kpGen = new DHKeyPairGenerator(); kpGen.init(params);/* w w w . j ava 2 s. c om*/ AsymmetricCipherKeyPair pair = kpGen.generateKeyPair(); // Convert this AsymmetricCipherKeyPair to a standard JCE KeyPair. DHPublicKeyParameters pub = (DHPublicKeyParameters) pair.getPublic(); DHPrivateKeyParameters priv = (DHPrivateKeyParameters) pair.getPrivate(); try { KeyFactory keyFac = KeyFactory.getInstance("DH"); DHPublicKeySpec pubKeySpecs = new DHPublicKeySpec(pub.getY(), MODULUS, GENERATOR); DHPublicKey pubKey = (DHPublicKey) keyFac.generatePublic(pubKeySpecs); DHParameters dhParameters = priv.getParameters(); DHPrivateKeySpec privKeySpecs = new DHPrivateKeySpec(priv.getX(), dhParameters.getP(), dhParameters.getG()); DHPrivateKey privKey = (DHPrivateKey) keyFac.generatePrivate(privKeySpecs); return new KeyPair(pubKey, privKey); } catch (Exception e) { throw new OtrCryptoException(e); } }