/* -*-c-*-
*
- * $Id: dsa-gen.c,v 1.4 1999/12/22 15:52:44 mdw Exp $
+ * $Id: dsa-gen.c,v 1.6 2000/07/29 10:00:14 mdw Exp $
*
* Generate DSA shared parameters
*
/*----- Revision history --------------------------------------------------*
*
* $Log: dsa-gen.c,v $
+ * Revision 1.6 2000/07/29 10:00:14 mdw
+ * Rename `dsa_seed' to `dsa_gen' for consistency with other parameter-
+ * generation interfaces.
+ *
+ * Revision 1.5 2000/02/12 18:21:02 mdw
+ * Overhaul of key management (again).
+ *
* Revision 1.4 1999/12/22 15:52:44 mdw
* Reworking for new prime-search system.
*
/*----- Glue code ---------------------------------------------------------*/
-/* --- @dsa_seed@ --- *
+/* --- @dsa_gen@ --- *
*
* Arguments: @dsa_param *dp@ = where to store parameters
* @unsigned ql@ = length of @q@ in bits
* Returns: @PGEN_DONE@ if everything worked ok; @PGEN_ABORT@ otherwise.
*
* Use: Generates the DSA shared parameters from a given seed value.
- * This can take quite a long time.
+ *
+ * The parameters are a prime %$q$%, relatively small, and a
+ * large prime %$p = kq + 1$% for some %$k$%, together with a
+ * generator %$g$% of the cyclic subgroup of order %$q$%. These
+ * are actually the same as the Diffie-Hellman parameter set,
+ * but the generation algorithm is different.
*
* The algorithm used is a compatible extension of the method
* described in the DSA standard, FIPS 186. The standard
* %$l$%. Neither limitation applies to this implementation.
*/
-int dsa_seed(dsa_param *dp, unsigned ql, unsigned pl, unsigned steps,
- const void *k, size_t sz, pgen_proc *event, void *ectx)
+int dsa_gen(dsa_param *dp, unsigned ql, unsigned pl, unsigned steps,
+ const void *k, size_t sz, pgen_proc *event, void *ectx)
{
dsa_stepctx s;
prim_ctx p;
mpmont_create(&p.mm, dp->p);
qc = MP_NEW; mp_div(&qc, 0, dp->p, dp->q);
i = 0;
- p.f = qc;
+ p.exp = qc;
p.n = 0;
if ((dp->g = pgen("g", MP_NEW, MP_NEW, event, ectx, 0, prim_step, &i,
1, prim_test, &p)) == 0)
int ok = 1;
int rc;
- rc = dsa_seed(&dp, 160, l, 1, v[0].buf, v[0].len, pgen_evspin, 0);
+ rc = dsa_gen(&dp, 160, l, 1, v[0].buf, v[0].len, pgen_evspin, 0);
if (rc || MP_CMP(q, !=, dp.q) ||
MP_CMP(p, !=, dp.p) || MP_CMP(g, !=, dp.g)) {
fputs("\n*** gen failed", stderr);