1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampackage org.bouncycastle.crypto; 2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 3b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam/** 4b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Generic signer interface for hash based and message recovery signers. 5b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 6b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic interface Signer 7b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{ 8b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 9b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Initialise the signer for signing or verification. 10b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * 11b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * @param forSigning true if for signing, false otherwise 12b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * @param param necessary parameters. 13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 14b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public void init(boolean forSigning, CipherParameters param); 15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 17b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * update the internal digest with the byte b 18b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 19b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public void update(byte b); 20b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 21b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 22b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * update the internal digest with the byte array in 23b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 24b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public void update(byte[] in, int off, int len); 25b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 26b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 27b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * generate a signature for the message we've been loaded with using 28b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * the key we were initialised with. 29b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 30b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public byte[] generateSignature() 31b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam throws CryptoException, DataLengthException; 32b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 33b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 34b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * return true if the internal state represents the signature described 35b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * in the passed in array. 36b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 37b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public boolean verifySignature(byte[] signature); 38b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 39b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 40b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * reset the internal state 41b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 42b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public void reset(); 43b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam} 44