/** * To save from Attacks on Parameter Authentication one can send hash of parameters to other party * * @return byte[] of what??? */ @Override public byte[] getParametersHash() { byte[] parms = NativeLib.getECParameters(ecGroup); SHA1 sha1 = new SHA1(BLOCK_SIZE); sha1.update(parms, 0, parms.length); sha1.generate(); byte[] digest = sha1.getDigest(); return digest; }
@Override public boolean checkParametersHash(byte[] hash) { if (hash == null || hash.length != BLOCK_SIZE) return false; byte[] parms = NativeLib.getECParameters(ecGroup); SHA1 sha1 = new SHA1(BLOCK_SIZE); sha1.update(parms, 0, parms.length); sha1.generate(); byte[] digest = sha1.getDigest(); for (int i = 0; i < digest.length; i++) if (digest[i] != hash[i]) return false; return true; }
@Override public byte[] getSharedKey(byte[] composite) { byte[] sharedKey; sharedKey = NativeLib.getECSharedKey(privateKey, composite, ecGroup); return sharedKey; }
protected EllipticCurve(byte[] privateKey, int ecGroup) { super(privateKey); this.ecGroup = ecGroup; publicKey = NativeLib.getECPublicKey(privateKey, ecGroup); }