Break out function "execute"

Code motion and incidental changes:
 - Make the 2nd half of main into its own function
 - Make most of the arg variables have file scope and static duration

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
New --entire option

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
New mode --both (-b), which does create then verify

This implies --entire unless a size is specified.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Make --both the default

This does away with the NONE mode and the corresponding usage error.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Use RC4-drop, not RC4

RC4 is broken and is vulnerable to key recovery attacks.
See http://en.wikipedia.org/wiki/RC4#Security

Dropping the first 3072 bytes of the stream makes one of these attacks
harder.  This doesn't fix the problems with using RC4 but it is an
improvement.

These problems are probably theoretical right now because plausible
contemporary threat models don't seem to involve the fake flash drive
trying serious cryptanalysis on our datastream.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Turn "seed" from a string to a byte block.

This will make it easier to read seeds from [u]random in the next change.
No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Move default seed setting to main().

This will make it easier to change later and will simplify the seed
file option parsing which is to come.

No functional change.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Support --seed-file (and --seed-length)

This allows us to read the seed from a file (which might be
/dev/*random or simply a file with key material).

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Usage message: fix alignment

Whitespace change, in usage message, only.

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Use /dev/urandom (or corresponding file) by default in --both mode

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
Manpage: add some usage hints

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>