transform: Allow DH to set the key size
It turns out that the current Serpent CBC-MAC transform takes the raw
DH shared secret, and parcels it up in byte ranges for the various
uses (some of which are published). Well, obviously this is not a
good idea.
But also it means the interface isn't set up to allow the size of the
key data provided to the transform to be determined by the size of the
DH modulus.
Fix this latter interface problem. Now a transform can set its keylen
to 0, meaning it will be provided with the whole of the DH private
value.
We don't use this new feature yet. We can't make the existing
transform use it without breaking compatibility, but it will be used
by the new EAX-based transform.
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>