1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampackage org.bouncycastle.crypto; 2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 3b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam/** 4b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Signer with message recovery. 5b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 6b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic interface SignerWithRecovery 7b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam extends Signer 8b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{ 9b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 10b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Returns true if the signer has recovered the full message as 11b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * part of signature verification. 12b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * 13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * @return true if full message recovered. 14b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public boolean hasFullMessage(); 16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 17b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam /** 18b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * Returns a reference to what message was recovered (if any). 19b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * 20b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * @return full/partial message, null if nothing. 21b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 22b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam public byte[] getRecoveredMessage(); 236e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom 246e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom /** 256e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * Perform an update with the recovered message before adding any other data. This must 266e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * be the first update method called, and calling it will result in the signer assuming 276e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * that further calls to update will include message content past what is recoverable. 286e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * 296e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @param signature the signature that we are in the process of verifying. 306e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom * @throws IllegalStateException 316e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom */ 326e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom public void updateWithRecoveredMessage(byte[] signature) 336e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom throws InvalidCipherTextException; 34b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam} 35