Erron writes:
I've been looking at the S2K Usage (3.6.1) and, when using twofish as the
symmetrical algorithm (in say a type 0x00 S2K Usage), what do you do if you
want to use a 256 bit session key to encrypt the secret key? I'm assuming
here that S2K will only allow a session key equal to the symmetrical
algorithm block size...
No, it doesn't have this limitation. You hash the plaintext and extract
whatever size session size is needed from the hash. If necessary you
do multiple hashes and concatenate them.
Do you decide what length of the S2K session key to use (in your program),
then when the secret key needs to be extracted from the secret key-ring,
just keep trying multiple session key lengths in block size multiples (as
generated from the S2K specifier) until the checksum checks out OK?
It seems it would be a lot easier (maybe less secure?) if a session key
length was specified somewhere.
The session key length is always known. It is part of the algorithm
identifier. See section 9.2.
Hal