1package org.bouncycastle.operator;
2
3import java.io.OutputStream;
4
5import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
6
7/**
8 * General interface for an operator that is able to calculate a digest from
9 * a stream of output.
10 */
11public interface DigestCalculator
12{
13    /**
14     * Return the algorithm identifier representing the digest implemented by
15     * this calculator.
16     *
17     * @return algorithm id and parameters.
18     */
19    AlgorithmIdentifier getAlgorithmIdentifier();
20
21    /**
22     * Returns a stream that will accept data for the purpose of calculating
23     * a digest. Use org.bouncycastle.util.io.TeeOutputStream if you want to accumulate
24     * the data on the fly as well.
25     *
26     * @return an OutputStream
27     */
28    OutputStream getOutputStream();
29
30    /**
31     * Return the digest calculated on what has been written to the calculator's output stream.
32     *
33     * @return a digest.
34     */
35    byte[] getDigest();
36}
37