if (action < PROGFN_READY && p->nphases < phase)
p->nphases = phase;
switch (action) {
+ case PROGFN_INITIALISE:
+ p->nphases = 0;
+ break;
case PROGFN_LIN_PHASE:
p->phases[phase-1].exponential = 0;
p->phases[phase-1].mult = p->phases[phase].total / progress;
struct progress prog;
prog.progbar = params->progressbar;
+ progress_update(&prog, PROGFN_INITIALISE, 0, 0);
+
if (params->is_dsa)
dsa_generate(params->dsskey, params->keysize, progress_update, &prog);
else
/*
* For progress updates in the key generation utility.
*/
-#define PROGFN_LIN_PHASE 1
-#define PROGFN_EXP_PHASE 2
-#define PROGFN_PHASE_EXTENT 3
-#define PROGFN_READY 4
-#define PROGFN_PROGRESS 5
+#define PROGFN_INITIALISE 1
+#define PROGFN_LIN_PHASE 2
+#define PROGFN_EXP_PHASE 3
+#define PROGFN_PHASE_EXTENT 4
+#define PROGFN_READY 5
+#define PROGFN_PROGRESS 6
typedef void (*progfn_t) (void *param, int action, int phase, int progress);
int rsa_generate(struct RSAKey *key, int bits, progfn_t pfn,