@Override void computeK(byte[] f) throws GeneralSecurityException { final KeyFactory keyFactory = SecurityUtils.getKeyFactory("DH"); final PublicKey yourPubKey = keyFactory.generatePublic(new DHPublicKeySpec(new BigInteger(f), p, g)); agreement.doPhase(yourPubKey, true); setK(new BigInteger(1, agreement.generateSecret())); }
public static PublicKey getPublicKey(BigInteger publicKey, BigInteger p, BigInteger g) throws Exception { DHPublicKeySpec dhspec=new DHPublicKeySpec(publicKey,p,g); KeyFactory keyFact = KeyFactory.getInstance("DH"); PublicKey pubKey = keyFact.generatePublic(dhspec); return pubKey; }
protected DHPublicKey stringToPublicKey(String publicKeyBase64) { try { byte[] yBinary = Base64.decodeBase64(publicKeyBase64.getBytes()); BigInteger y = new BigInteger(yBinary); DHPublicKeySpec dhPublicKeySpec = new DHPublicKeySpec( y, _dhParameterSpec.getP(), _dhParameterSpec.getG()); KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM); return (DHPublicKey) keyFactory.generatePublic(dhPublicKeySpec); } catch (GeneralSecurityException e) { _log.error("Cannot create PublicKey object from: " + publicKeyBase64, e); return null; } }
public byte[] getK() throws Exception { if (K == null) { KeyFactory myKeyFac = KeyFactory.getInstance("DH"); DHPublicKeySpec keySpec = new DHPublicKeySpec(f, p, g); PublicKey yourPubKey = myKeyFac.generatePublic(keySpec); myKeyAgree.doPhase(yourPubKey, true); byte[] mySharedSecret = myKeyAgree.generateSecret(); K = new BigInteger(1, mySharedSecret); K_array = K.toByteArray(); K_array = mySharedSecret; } return K_array; }
public byte[] getK() throws Exception{ if(K==null){ KeyFactory myKeyFac=KeyFactory.getInstance("DH"); DHPublicKeySpec keySpec=new DHPublicKeySpec(f, p, g); PublicKey yourPubKey=myKeyFac.generatePublic(keySpec); myKeyAgree.doPhase(yourPubKey, true); byte[] mySharedSecret=myKeyAgree.generateSecret(); K=new BigInteger(1, mySharedSecret); K_array=K.toByteArray(); K_array=mySharedSecret; } return K_array; } public void setP(byte[] p){ setP(new BigInteger(1, p)); }
public byte[] getK() throws Exception{ if(K==null){ KeyFactory myKeyFac=KeyFactory.getInstance("DH"); DHPublicKeySpec keySpec=new DHPublicKeySpec(f, p, g); PublicKey yourPubKey=myKeyFac.generatePublic(keySpec); myKeyAgree.doPhase(yourPubKey, true); byte[] mySharedSecret=myKeyAgree.generateSecret(); K=new BigInteger(1, mySharedSecret); K_array=K.toByteArray(); K_array=mySharedSecret; } return K_array; } public void setP(byte[] p){ setP(new BigInteger(1, p)); }
@Override public byte[] getK() throws Exception { if( _K == null ) { KeyFactory myKeyFac = KeyFactory.getInstance("DH"); PublicKey yourPubKey = myKeyFac.generatePublic(new DHPublicKeySpec(_f, _p, _g)); _keyAgreement.doPhase(yourPubKey, true); byte[] mySharedSecret = _keyAgreement.generateSecret(); _K = new BigInteger(mySharedSecret); //_KArray = _K.toByteArray(); // TODO Why assign twice? _KArray = mySharedSecret; } return _KArray; }
public byte[] getK() throws Exception{ if(K==null){ KeyFactory myKeyFac=KeyFactory.getInstance("DH"); DHPublicKeySpec keySpec=new DHPublicKeySpec(f, p, g); PublicKey yourPubKey=myKeyFac.generatePublic(keySpec); myKeyAgree.doPhase(yourPubKey, true); byte[] mySharedSecret=myKeyAgree.generateSecret(); K=new BigInteger(1, mySharedSecret); K_array=K.toByteArray(); K_array=mySharedSecret; } return K_array; } public void setP(byte[] p){ setP(new BigInteger(1, p)); }
protected DHPublicKey stringToPublicKey(String publicKeyBase64) { try { byte[] yBinary = Base64.decodeBase64(publicKeyBase64.getBytes()); BigInteger y = new BigInteger(yBinary); DHPublicKeySpec dhPublicKeySpec = new DHPublicKeySpec( y, _dhParameterSpec.getP(), _dhParameterSpec.getG() ); KeyFactory keyFactory = KeyFactory.getInstance(ALGORITHM); return (DHPublicKey) keyFactory.generatePublic(dhPublicKeySpec); } catch (GeneralSecurityException e) { _log.error("Cannot create PublicKey object from: " + publicKeyBase64, e); return null; } }
DH_ServerKeyExchange(HandshakeInStream input, ProtocolVersion protocolVersion) throws IOException, GeneralSecurityException { this.protocolVersion = protocolVersion; this.preferableSignatureAlgorithm = null; dh_p = input.getBytes16(); dh_g = input.getBytes16(); dh_Ys = input.getBytes16(); KeyUtil.validate(new DHPublicKeySpec(new BigInteger(1, dh_Ys), new BigInteger(1, dh_p), new BigInteger(1, dh_g))); signature = null; }
public void computeK(BigInteger f) throws GeneralSecurityException { final KeyFactory keyFactory = SecurityUtils.getKeyFactory("DH"); final PublicKey yourPubKey = keyFactory.generatePublic(new DHPublicKeySpec(f, p, g)); agreement.doPhase(yourPubKey, true); K = new BigInteger(1, agreement.generateSecret()); }
@Override void computeK(byte[] f) throws GeneralSecurityException { final KeyFactory keyFactory = SecurityUtils.getKeyFactory("DH"); final PublicKey yourPubKey = keyFactory.generatePublic(new DHPublicKeySpec(new BigInteger(f), p, g)); agreement.doPhase(yourPubKey, true); setK(new BigInteger(1, agreement.generateSecret())); }
@Override protected byte[] calculateK() throws Exception { Objects.requireNonNull(f, "Missing 'f' value"); DHPublicKeySpec keySpec = new DHPublicKeySpec(f, p, g); KeyFactory myKeyFac = SecurityUtils.getKeyFactory("DH"); PublicKey yourPubKey = myKeyFac.generatePublic(keySpec); myKeyAgree.doPhase(yourPubKey, true); return stripLeadingZeroes(myKeyAgree.generateSecret()); }
@Override protected byte[] calculateK() throws Exception { KeyFactory myKeyFac = SecurityUtils.getKeyFactory("DH"); DHPublicKeySpec keySpec = new DHPublicKeySpec(f, p, g); PublicKey yourPubKey = myKeyFac.generatePublic(keySpec); myKeyAgree.doPhase(yourPubKey, true); return stripLeadingZeroes(myKeyAgree.generateSecret()); }
@Override protected byte[] calculateK() throws Exception { KeyFactory myKeyFac = SecurityUtils.getKeyFactory("DH"); DHPublicKeySpec keySpec = new DHPublicKeySpec(f, p, g); PublicKey yourPubKey = myKeyFac.generatePublic(keySpec); myKeyAgree.doPhase(yourPubKey, true); return stripLeadingZeroes(myKeyAgree.generateSecret()); }
protected void completeDH( byte[] buffer ) throws IOException { try{ BigInteger other_dh_y = bytesToBigInteger( buffer, 0, DH_SIZE_BYTES ); KeyFactory dh_key_factory = KeyFactory.getInstance("DH"); PublicKey other_public_key = dh_key_factory.generatePublic( new DHPublicKeySpec( other_dh_y, DH_P_BI, DH_G_BI )); key_agreement.doPhase( other_public_key, true ); secret_bytes = key_agreement.generateSecret(); adapter.gotSecret( secret_bytes ); // System.out.println( "secret = " + ByteFormatter.encodeString( secret_bytes )); }catch( Throwable e ){ throw( new IOException( Debug.getNestedExceptionMessage(e))); } }
public static KeyPair createKeyPair(OctetString publicKeyOctets, OctetString privateKeyOctets, DHParameters dhParameters) { KeyFactory keyFactory = null; try { keyFactory = KeyFactory.getInstance(DIFFIE_HELLMAN); BigInteger y = bytesToBigInteger(publicKeyOctets.getValue()); DHPublicKeySpec dhPublicKeySpec = new DHPublicKeySpec(y, dhParameters.getPrime(), dhParameters.getGenerator()); PublicKey publicKey = keyFactory.generatePublic(dhPublicKeySpec); BigInteger x = bytesToBigInteger(privateKeyOctets.getValue()); DHPrivateKeySpec dhPrivateKeySpec = new DHPrivateKeySpec(x, dhParameters.getPrime(), dhParameters.getGenerator()); PrivateKey privateKey = keyFactory.generatePrivate(dhPrivateKeySpec); return new KeyPair(publicKey, privateKey); } catch (NoSuchAlgorithmException e) { throw new RuntimeException(e); } catch (InvalidKeySpecException e) { throw new RuntimeException(e); } }
protected KeySpec engineGetKeySpec( Key key, Class spec) throws InvalidKeySpecException { if (spec.isAssignableFrom(DHPrivateKeySpec.class) && key instanceof DHPrivateKey) { DHPrivateKey k = (DHPrivateKey)key; return new DHPrivateKeySpec(k.getX(), k.getParams().getP(), k.getParams().getG()); } else if (spec.isAssignableFrom(DHPublicKeySpec.class) && key instanceof DHPublicKey) { DHPublicKey k = (DHPublicKey)key; return new DHPublicKeySpec(k.getY(), k.getParams().getP(), k.getParams().getG()); } return super.engineGetKeySpec(key, spec); }
protected KeySpec engineGetKeySpec( Key key, Class spec) throws InvalidKeySpecException { if (spec.isAssignableFrom(DHPrivateKeySpec.class) && key instanceof DHPrivateKey) { DHPrivateKey k = (DHPrivateKey)key; return new DHPrivateKeySpec(k.getX(), k.getParams().getP(), k.getParams().getG()); } else if (spec.isAssignableFrom(DHPublicKeySpec.class) && key instanceof DHPublicKey) { DHPublicKey k = (DHPublicKey)key; return new DHPublicKeySpec(k.getY(), k.getParams().getP(), k.getParams().getG()); } return super.engineGetKeySpec(key, spec); }
protected KeySpec engineGetKeySpec( Key key, Class spec) throws InvalidKeySpecException { if (spec.isAssignableFrom(DHPrivateKeySpec.class) && key instanceof DHPrivateKey) { DHPrivateKey k = (DHPrivateKey)key; return new DHPrivateKeySpec(k.getX(), k.getParams().getP(), k.getParams().getG()); } else if (spec.isAssignableFrom(DHPublicKeySpec.class) && key instanceof DHPublicKey) { DHPublicKey k = (DHPublicKey)key; return new DHPublicKeySpec(k.getY(), k.getParams().getP(), k.getParams().getG()); } return super.engineGetKeySpec(key, spec); }