The specifications for java.security.Signature and javax.crypto.Cipher do not clearly allow for algorithms that cannot process data of arbitrary lengths. Examples of such algorithms are RawDSA signatures (data must be 20 bytes long) and RSA ciphers (data must be short enough to process in a single RSA operation).
There is a need to support these algorithms in our standard APIs. The specifications should be amended to explicitly allow for them.