Refine search
@Override public void init(AlgorithmParameterSpec params, Factory<Random> randomFactory) throws GeneralSecurityException { if (!(params instanceof DHParameterSpec)) { throw new SSHRuntimeException("Wrong algorithm parameters for Diffie Hellman"); } this.p = ((DHParameterSpec) params).getP(); this.g = ((DHParameterSpec) params).getG(); generator.initialize(params); final KeyPair kp = generator.generateKeyPair(); agreement.init(kp.getPrivate()); setE(((javax.crypto.interfaces.DHPublicKey) kp.getPublic()).getY().toByteArray()); }
final DHParameterSpec dh1 = (DHParameterSpec) p1; final DHParameterSpec dh2 = (DHParameterSpec) p2; return dh1.getL() == dh2.getL() && Objects.equals(dh1.getP(), dh2.getP()) && Objects.equals(dh1.getG(), dh2.getG()); } else if (p1 instanceof PBEParameterSpec && p2 instanceof PBEParameterSpec) { final PBEParameterSpec pbe1 = (PBEParameterSpec) p1;
/** * @param sigBytes ASN.1 R,S */ @Override protected boolean engineVerify(byte[] sigBytes) throws SignatureException { BigInteger elgp = key.getParams().getP(); BigInteger pm1 = elgp.subtract(BigInteger.ONE); BigInteger elgg = key.getParams().getG(); BigInteger y = ((ElGamalPublicKey) key).getY(); if (!(y instanceof NativeBigInteger)) y = new NativeBigInteger(y); byte[] data = digest.digest(); try { BigInteger[] rs = SigUtil.aSN1ToBigInteger(sigBytes, 256); BigInteger r = rs[0]; BigInteger s = rs[1]; if (r.signum() != 1 || s.signum() != 1 || r.compareTo(elgp) != -1 || s.compareTo(pm1) != -1) return false; NativeBigInteger h = new NativeBigInteger(1, data); BigInteger modvalr = r.modPow(s, elgp); BigInteger modvaly = y.modPow(r, elgp); BigInteger modmulval = modvalr.multiply(modvaly).mod(elgp); BigInteger v = elgg.modPow(h, elgp); boolean ok = v.compareTo(modmulval) == 0; return ok; } catch (RuntimeException e) { throw new SignatureException("verify", e); } }
@Override public void init(AlgorithmParameterSpec params, Factory<Random> randomFactory) throws GeneralSecurityException { if (!(params instanceof DHParameterSpec)) { throw new SSHRuntimeException("Wrong algorithm parameters for Diffie Hellman"); } this.p = ((DHParameterSpec) params).getP(); this.g = ((DHParameterSpec) params).getG(); generator.initialize(params); final KeyPair kp = generator.generateKeyPair(); agreement.init(kp.getPrivate()); setE(((javax.crypto.interfaces.DHPublicKey) kp.getPublic()).getY().toByteArray()); }