// Possible modes of operation
enum mode_type {
- NONE,
VERIFY,
CREATE,
BOTH
static long long size;
int main(int argc, char **argv) {
- mode_type mode = NONE;
+ mode_type mode = BOTH;
int n;
while((n = getopt_long(argc, argv, "+s:vcefhV", opts, 0)) >= 0) {
switch(n) {
}
argc -= optind;
argv += optind;
- if(mode == NONE)
- fatal(0, "must specify one of --verify or --create");
if(argc > 2)
fatal(0, "excess arguments");
if(argc == 1 && mode == BOTH)
setvbuf(fp, 0, _IONBF, 0);
char generated[4096], input[4096];
long long remain = size;
+ static const size_t rc4drop = 3072; // en.wikipedia.org/wiki/RC4#Security
+ assert(rc4drop <= sizeof(generated));
+ rng.stream(generated, rc4drop);
while(remain > 0) {
size_t bytesGenerated = (remain > (ssize_t)sizeof generated
? sizeof generated