/* -*-c-*-
*
- * $Id: keyutil.c,v 1.10 2000/10/08 12:02:21 mdw Exp $
+ * $Id: keyutil.c,v 1.12 2001/02/03 11:58:22 mdw Exp $
*
* Simple key manager program
*
/*----- Revision history --------------------------------------------------*
*
* $Log: keyutil.c,v $
+ * Revision 1.12 2001/02/03 11:58:22 mdw
+ * Store the correct seed information and count for DSA keys now that it's
+ * available.
+ *
+ * Revision 1.11 2000/12/06 20:33:27 mdw
+ * Make flags be macros rather than enumerations, to ensure that they're
+ * unsigned.
+ *
* Revision 1.10 2000/10/08 12:02:21 mdw
* Use @MP_EQ@ instead of @MP_CMP@.
*
key *p; /* Parameters key-data */
} keyopts;
-enum {
- f_bogus = 1, /* Error in parsing */
- f_lock = 2, /* Passphrase-lock private key */
- f_quiet = 4, /* Don't show a progress indicator */
- f_limlee = 8, /* Generate Lim-Lee primes */
- f_subgroup = 16 /* Generate a subgroup */
-};
+#define f_bogus 1u /* Error in parsing */
+#define f_lock 2u /* Passphrase-lock private key */
+#define f_quiet 4u /* Don't show a progress indicator */
+#define f_limlee 8u /* Generate Lim-Lee primes */
+#define f_subgroup 16u /* Generate a subgroup */
/* --- @dolock@ --- *
*
dstr d = DSTR_INIT;
base64_ctx c;
key_data *kd = &k->k->k;
+ dsa_seed ds;
/* --- Choose appropriate bit lengths if necessary --- */
/* --- Allocate the parameters --- */
- if (dsa_gen(&dp, k->qbits, k->bits, 0, p, sz,
+ if (dsa_gen(&dp, k->qbits, k->bits, 0, p, sz, &ds,
(k->f & f_quiet) ? 0 : pgen_ev, 0))
die(EXIT_FAILURE, "DSA parameter generation failed");
base64_init(&c);
c.maxline = 0;
c.indent = "";
- base64_encode(&c, p, sz, &d);
+ base64_encode(&c, ds.p, ds.sz, &d);
base64_encode(&c, 0, 0, &d);
key_putattr(k->kf, k->k, "seed", d.buf);
+ DRESET(&d);
+ dstr_putf(&d, "%u", ds.count);
+ key_putattr(k->kf, k->k, "count", d.buf);
+ xfree(ds.p);
sub_free(p, sz);
dstr_destroy(&d);
}
/* --- Listing flags --- */
-enum {
- f_newline = 2, /* Write newline before next entry */
- f_attr = 4, /* Written at least one attribute */
- f_utc = 8 /* Emit UTC time, not local time */
-};
+#define f_newline 2u /* Write newline before next entry */
+#define f_attr 4u /* Written at least one attribute */
+#define f_utc 8u /* Emit UTC time, not local time */
/* --- @showkeydata@ --- *
*
{
unsigned f = 0;
- enum {
- f_bogus = 1
- };
+#define f_bogus 1u
/* --- Initialization --- */