package org.bouncycastle.tls.crypto;

/**
 * Interface for message digest, or hash, services.
 */
public interface TlsHash
{
    /**
     * Update the hash with the passed in input.
     *
     * @param input input array containing the data.
     * @param inOff offset into the input array the input starts at.
     * @param length the length of the input data.
     */
    void update(byte[] input, int inOff, int length);

    /**
     * Return calculated hash for any input passed in.
     *
     * @return the hash value.
     */
    byte[] calculateHash();

    /**
     * Return a clone of this hash object representing its current state.
     *
     * @return a clone of the current hash.
     */
    TlsHash cloneHash();

    /**
     * Reset the hash underlying this service.
     */
    void reset();
}
