|Cryptographic Token Interface Standard||
Signing with recovery is a general alternative to ordinary digital signatures ("signing with appendix") which is supported by certain mechanisms. Recall that for ordinary digital signatures, a signature of a message is computed as some function of the message and the signer's private key; this signature can then be used (together with the message and the signer's public key) as input to the verification process, which yields a simple "signature valid/signature invalid" decision.
Signing with recovery also creates a signature from a message and the signer's private key. However, to verify this signature, no message is required as input. Only the signature and the signer's public key are input to the verification process, and the verification process outputs either "signature invalid" or"if the signature is valid"the original message.
Consider a simple example with the CKM_RSA_X_509 mechanism. Here, a message is a byte string which we will consider to be a number modulo n (the signer's RSA modulus). When this mechanism is used for ordinary digital signatures (signatures with appendix), a signature is computed by raising the message to the signer's private exponent modulo n. To verify this signature, a verifier raises the signature to the signer's public exponent modulo n, and accepts the signature as valid if and only if the result matches the original message.
If CKM_RSA_X_509 is used to create signatures with recovery, the signatures are produced in exactly the same fashion. For this particular mechanism, any number modulo n is a valid signature. To recover the message from a signature, the signature is raised to the signer's public exponent modulo n.