From 8ee6e37953dcda74d4f360014f0b4531d741f495 Mon Sep 17 00:00:00 2001 From: Chris Oei Date: Sun, 2 Sep 2012 19:46:30 -0700 Subject: [PATCH] Replace -t TIME param with -o mega-operations --- lib/genpass/genpass.c | 16 +++++----------- lib/genpass/genpass.h | 2 +- main.c | 11 +++++------ 3 files changed, 11 insertions(+), 18 deletions(-) diff --git a/lib/genpass/genpass.c b/lib/genpass/genpass.c index 9fc8677..99fc50d 100644 --- a/lib/genpass/genpass.c +++ b/lib/genpass/genpass.c @@ -47,13 +47,13 @@ #define ENCBLOCK 65536 -static int pickparams(size_t, double, double, +static int pickparams(size_t, double, int, int *, uint32_t *, uint32_t *); static int checkparams(size_t, double, double, int, uint32_t, uint32_t); static int getsalt(uint8_t[32]); static int -pickparams(size_t maxmem, double maxmemfrac, double maxtime, +pickparams(size_t maxmem, double maxmemfrac, int megaops, int * logN, uint32_t * r, uint32_t * p) { size_t memlimit; @@ -66,13 +66,7 @@ pickparams(size_t maxmem, double maxmemfrac, double maxtime, if (memtouse(maxmem, maxmemfrac, &memlimit)) return (1); - opps = 1; /* FIXIT: don't attempt to calculate CPU speed since - we want the same result on any computer. */ - opslimit = opps * maxtime; - - /* Allow a minimum of 2^15 salsa20/8 cores. */ - if (opslimit < 32768) - opslimit = 32768; + opslimit = 1000000 * megaops; /* Fix r = 8 for now. */ *r = 8; @@ -199,7 +193,7 @@ err0: int genpass(uint8_t dk[64], const uint8_t * passwd, size_t passwdlen, - size_t maxmem, double maxmemfrac, double maxtime) + size_t maxmem, double maxmemfrac, int megaops) { uint8_t salt[32]; uint8_t hbuf[32]; @@ -213,7 +207,7 @@ genpass(uint8_t dk[64], int rc; /* Pick values for N, r, p. */ - if ((rc = pickparams(maxmem, maxmemfrac, maxtime, + if ((rc = pickparams(maxmem, maxmemfrac, megaops, &logN, &r, &p)) != 0) return (rc); N = (uint64_t)(1) << logN; diff --git a/lib/genpass/genpass.h b/lib/genpass/genpass.h index dfda41b..cd1b73e 100644 --- a/lib/genpass/genpass.h +++ b/lib/genpass/genpass.h @@ -74,6 +74,6 @@ int genpass(uint8_t dk[64], const uint8_t * passwd, size_t passwdlen, - size_t maxmem, double maxmemfrac, double maxtime); + size_t maxmem, double maxmemfrac, int megaops); #endif /* !_GENPASS_H_ */ diff --git a/main.c b/main.c index 57375ed..777a751 100644 --- a/main.c +++ b/main.c @@ -53,7 +53,7 @@ main(int argc, char *argv[]) int dec = 0; size_t maxmem = 0; double maxmemfrac = 0.5; - double maxtime = 300.0; + int megaops = 5; char ch; char * passwd; int rc; @@ -67,10 +67,9 @@ main(int argc, char *argv[]) usage(); maxmem = 0; maxmemfrac = 0.125; - maxtime = 5.0; /* Parse arguments. */ - while ((ch = getopt(argc, argv, "hm:M:t:")) != -1) { + while ((ch = getopt(argc, argv, "hm:M:o:")) != -1) { switch (ch) { case 'M': maxmem = strtoumax(optarg, NULL, 0); @@ -78,8 +77,8 @@ main(int argc, char *argv[]) case 'm': maxmemfrac = strtod(optarg, NULL); break; - case 't': - maxtime = strtod(optarg, NULL); + case 'o': + megaops = atoi(optarg); break; default: usage(); @@ -99,7 +98,7 @@ main(int argc, char *argv[]) uint8_t dk[64]; rc = genpass(dk, (uint8_t *)passwd, - strlen(passwd), maxmem, maxmemfrac, maxtime); + strlen(passwd), maxmem, maxmemfrac, megaops); /* Zero and free the password. */ memset(passwd, 0, strlen(passwd));