diff --git a/rsa.c b/rsa.c index ab4859563..5e7297be0 100644 --- a/rsa.c +++ b/rsa.c @@ -35,7 +35,7 @@ */ #include "includes.h" -RCSID("$Id: rsa.c,v 1.5 1999/11/25 00:54:59 damien Exp $"); +RCSID("$Id: rsa.c,v 1.6 1999/12/17 03:02:47 damien Exp $"); #include "rsa.h" #include "ssh.h" @@ -55,6 +55,21 @@ rsa_alive() return (1); } +/* + * Key generation progress meter callback + */ +void +keygen_progress(int p, int n, void *arg) +{ + const char progress_chars[] = ".o+O?"; + + if ((p < 0) || (p > (sizeof(progress_chars) - 2))) + p = 4; + + printf("%c", progress_chars[p]); + fflush(stdout); +} + /* * Generates RSA public and private keys. This initializes the data * structures; they should be freed with rsa_clear_private_key and @@ -69,8 +84,11 @@ rsa_generate_key(RSA *prv, RSA *pub, unsigned int bits) if (rsa_verbose) { printf("Generating RSA keys: "); fflush(stdout); + key = RSA_generate_key(bits, 35, keygen_progress, NULL); + printf("\n"); + } else { + key = RSA_generate_key(bits, 35, NULL, NULL); } - key = RSA_generate_key(bits, 35, NULL, NULL); if (key == NULL) fatal("rsa_generate_key: key generation failed.");