1e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrompackage org.bouncycastle.operator;
2e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
3e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport java.io.OutputStream;
4e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
5e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstromimport org.bouncycastle.asn1.x509.AlgorithmIdentifier;
6e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
7e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrompublic interface ContentVerifier
8e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom{
9e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    /**
10e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     * Return the algorithm identifier describing the signature
11e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     * algorithm and parameters this expander supports.
12e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     *
13e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     * @return algorithm oid and parameters.
14e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     */
15e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    AlgorithmIdentifier getAlgorithmIdentifier();
16e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
17e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    /**
18e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     * Returns a stream that will accept data for the purpose of calculating
19e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     * a signature for later verification. Use org.bouncycastle.util.io.TeeOutputStream if you want to accumulate
20e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     * the data on the fly as well.
21e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     *
22e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     * @return an OutputStream
23e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     */
24e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    OutputStream getOutputStream();
25e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom
26e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    /**
27e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     * @param expected expected value of the signature on the data.
28e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     * @return true if the signature verifies, false otherwise
29e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom     */
30e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom    boolean verify(byte[] expected);
31e6bf3e8dfa2804891a82075cb469b736321b4827Brian Carlstrom}