static int progress_cb(EVP_PKEY_CTX *ctx) { union { void *dptr; void (*fptr)(int); } u; int p; u.dptr = EVP_PKEY_CTX_get_app_data(ctx); p = EVP_PKEY_CTX_get_keygen_info(ctx, 0); if (u.fptr != NULL) u.fptr(p); return (1); }
static int genpkey_cb(EVP_PKEY_CTX *ctx) { char c='*'; BIO *b = (BIO*)EVP_PKEY_CTX_get_app_data(ctx); int p; p = EVP_PKEY_CTX_get_keygen_info(ctx, 0); if (p == 0) c='.'; if (p == 1) c='+'; if (p == 2) c='*'; if (p == 3) c='\n'; BIO_write(b,&c,1); (void)BIO_flush(b); #ifdef LINT p=n; #endif return 1; }