1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampackage org.bouncycastle.crypto;
2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
3b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam/**
4b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * base interface for general purpose byte derivation functions.
5b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */
6b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic interface DerivationFunction
7b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{
8b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public void init(DerivationParameters param);
9b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
10b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    /**
11b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     * return the message digest used as the basis for the function
12b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam     */
13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public Digest getDigest();
14b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public int generateBytes(byte[] out, int outOff, int len)
16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        throws DataLengthException, IllegalArgumentException;
17b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam}
18