List of usage examples for org.bouncycastle.crypto.params DHParameters DHParameters
public DHParameters(BigInteger p, BigInteger g, BigInteger q, int l)
From source file:com.eucalyptus.crypto.util.BCSslSetup.java
License:Open Source License
@SuppressWarnings("unchecked") static void initBouncyCastleDHParamsInternal() throws NoSuchFieldException, IllegalAccessException { final Class<?> DH = KeyPairGeneratorSpi.class; final Field paramsField = DH.getDeclaredField("params"); paramsField.setAccessible(true);/*from www . j a va 2 s. co m*/ final Hashtable<Integer, DHKeyGenerationParameters> params = (Hashtable<Integer, DHKeyGenerationParameters>) paramsField .get(null); if (params.isEmpty()) { final SecureRandom random = new SecureRandom(); for (final DHParameterSpec parameterSpec : parameterSpecs) { params.put(parameterSpec.getL(), new DHKeyGenerationParameters(random, new DHParameters(parameterSpec.getP(), parameterSpec.getG(), null, 0))); } } }
From source file:net.java.otr4j.crypto.DHKeyPairOTR3.java
License:LGPL
/** * Generate a DH key pair./*from ww w .java2 s . c om*/ * * @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);/*from w w w.j a v a 2s . c o m*/ 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); } }
From source file:net.jradius.client.auth.EAPTLSAuthenticator.java
License:Open Source License
/** * Create a private key parameter from the passed in PKCS8 PrivateKeyInfo object. * /*from w w w . j ava 2 s .com*/ * @param keyInfo the PrivateKeyInfo object containing the key material * @return a suitable private key parameter * @throws IOException on an error decoding the key */ public static AsymmetricKeyParameter createKey(PrivateKeyInfo keyInfo) throws IOException { AlgorithmIdentifier algId = keyInfo.getAlgorithmId(); if (algId.getObjectId().equals(PKCSObjectIdentifiers.rsaEncryption)) { RSAPrivateKeyStructure keyStructure = new RSAPrivateKeyStructure( (ASN1Sequence) keyInfo.getPrivateKey()); return new RSAPrivateCrtKeyParameters(keyStructure.getModulus(), keyStructure.getPublicExponent(), keyStructure.getPrivateExponent(), keyStructure.getPrime1(), keyStructure.getPrime2(), keyStructure.getExponent1(), keyStructure.getExponent2(), keyStructure.getCoefficient()); } else if (algId.getObjectId().equals(PKCSObjectIdentifiers.dhKeyAgreement)) { DHParameter params = new DHParameter((ASN1Sequence) keyInfo.getAlgorithmId().getParameters()); DERInteger derX = (DERInteger) keyInfo.getPrivateKey(); BigInteger lVal = params.getL(); int l = lVal == null ? 0 : lVal.intValue(); DHParameters dhParams = new DHParameters(params.getP(), params.getG(), null, l); return new DHPrivateKeyParameters(derX.getValue(), dhParams); } else if (algId.getObjectId().equals(OIWObjectIdentifiers.elGamalAlgorithm)) { ElGamalParameter params = new ElGamalParameter((ASN1Sequence) keyInfo.getAlgorithmId().getParameters()); DERInteger derX = (DERInteger) keyInfo.getPrivateKey(); return new ElGamalPrivateKeyParameters(derX.getValue(), new ElGamalParameters(params.getP(), params.getG())); } else if (algId.getObjectId().equals(X9ObjectIdentifiers.id_dsa)) { DERInteger derX = (DERInteger) keyInfo.getPrivateKey(); DEREncodable de = keyInfo.getAlgorithmId().getParameters(); DSAParameters parameters = null; if (de != null) { DSAParameter params = DSAParameter.getInstance(de.getDERObject()); parameters = new DSAParameters(params.getP(), params.getQ(), params.getG()); } return new DSAPrivateKeyParameters(derX.getValue(), parameters); } else if (algId.getObjectId().equals(X9ObjectIdentifiers.id_ecPublicKey)) { X962Parameters params = new X962Parameters((DERObject) keyInfo.getAlgorithmId().getParameters()); ECDomainParameters dParams = null; if (params.isNamedCurve()) { DERObjectIdentifier oid = (DERObjectIdentifier) params.getParameters(); X9ECParameters ecP = X962NamedCurves.getByOID(oid); if (ecP == null) { ecP = SECNamedCurves.getByOID(oid); if (ecP == null) { ecP = NISTNamedCurves.getByOID(oid); if (ecP == null) { ecP = TeleTrusTNamedCurves.getByOID(oid); } } } dParams = new ECDomainParameters(ecP.getCurve(), ecP.getG(), ecP.getN(), ecP.getH(), ecP.getSeed()); } else { X9ECParameters ecP = new X9ECParameters((ASN1Sequence) params.getParameters()); dParams = new ECDomainParameters(ecP.getCurve(), ecP.getG(), ecP.getN(), ecP.getH(), ecP.getSeed()); } ECPrivateKeyStructure ec = new ECPrivateKeyStructure((ASN1Sequence) keyInfo.getPrivateKey()); return new ECPrivateKeyParameters(ec.getKey(), dParams); } else { throw new RuntimeException("algorithm identifier in key not recognised"); } }