/** * Generate a commitment for the passed in message. * * @param message the message to be committed to, * @return a Commitment */ public Commitment commit(byte[] message) { if (message.length > byteLength / 2) { throw new DataLengthException("Message to be committed to too large for digest."); } byte[] w = new byte[byteLength - message.length]; random.nextBytes(w); return new Commitment(w, calculateCommitment(w, message)); }
/** * Return true if the passed in commitment represents a commitment to the passed in message. * * @param commitment a commitment previously generated. * @param message the message that was expected to have been committed to. * @return true if commitment matches message, false otherwise. */ public boolean isRevealed(Commitment commitment, byte[] message) { if (message.length + commitment.getSecret().length != byteLength) { throw new DataLengthException("Message and witness secret lengths do not match."); } byte[] calcCommitment = calculateCommitment(commitment.getSecret(), message); return Arrays.constantTimeAreEqual(commitment.getCommitment(), calcCommitment); }
/** * Return true if the passed in commitment represents a commitment to the passed in maessage. * * @param commitment a commitment previously generated. * @param message the message that was expected to have been committed to. * @return true if commitment matches message, false otherwise. */ public boolean isRevealed(Commitment commitment, byte[] message) { byte[] calcCommitment = calculateCommitment(commitment.getSecret(), message); return Arrays.constantTimeAreEqual(commitment.getCommitment(), calcCommitment); }
/** * Generate a commitment for a passed in index. * * @param index the index to commit to. * @return a hash based commitment. */ public Commitment commit(int index) { return committer.commit(toBytes(index)); }
/** * Return true if the passed in commitment is for index. * * @param commitment a hash based commitment for an index, * @param index the index we wish to verify against. * @return true if the commitment matches the index, false otherwise. */ public boolean isRevealed(Commitment commitment, int index) { return committer.isRevealed(commitment, toBytes(index)); }