version 1.46, 2008/04/13 00:22:17 |
version 1.47, 2008/06/26 09:19:39 |
|
|
char *cp, *arg; |
char *cp, *arg; |
char *strsize, *gen, *prime; |
char *strsize, *gen, *prime; |
const char *errstr = NULL; |
const char *errstr = NULL; |
|
long long n; |
|
|
cp = line; |
cp = line; |
if ((arg = strdelim(&cp)) == NULL) |
if ((arg = strdelim(&cp)) == NULL) |
|
|
arg = strsep(&cp, " "); /* type */ |
arg = strsep(&cp, " "); /* type */ |
if (cp == NULL || *arg == '\0') |
if (cp == NULL || *arg == '\0') |
goto fail; |
goto fail; |
|
/* Ensure this is a safe prime */ |
|
n = strtonum(arg, 0, 5, &errstr); |
|
if (errstr != NULL || n != MODULI_TYPE_SAFE) |
|
goto fail; |
arg = strsep(&cp, " "); /* tests */ |
arg = strsep(&cp, " "); /* tests */ |
if (cp == NULL || *arg == '\0') |
if (cp == NULL || *arg == '\0') |
goto fail; |
goto fail; |
|
/* Ensure prime has been tested and is not composite */ |
|
n = strtonum(arg, 0, 0x1f, &errstr); |
|
if (errstr != NULL || |
|
(n & MODULI_TESTS_COMPOSITE) || !(n & ~MODULI_TESTS_COMPOSITE)) |
|
goto fail; |
arg = strsep(&cp, " "); /* tries */ |
arg = strsep(&cp, " "); /* tries */ |
if (cp == NULL || *arg == '\0') |
if (cp == NULL || *arg == '\0') |
|
goto fail; |
|
n = strtonum(arg, 0, 1<<30, &errstr); |
|
if (errstr != NULL || n == 0) |
goto fail; |
goto fail; |
strsize = strsep(&cp, " "); /* size */ |
strsize = strsep(&cp, " "); /* size */ |
if (cp == NULL || *strsize == '\0' || |
if (cp == NULL || *strsize == '\0' || |