aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--g10/ChangeLog5
-rw-r--r--g10/keygen.c23
2 files changed, 20 insertions, 8 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 123cec9ea..e0d19d79a 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,3 +1,8 @@
+2004-12-09 David Shaw <[email protected]>
+
+ * keygen.c (ask_algo): Add a choose-your-own-capabilities option
+ for DSA.
+
2004-12-07 David Shaw <[email protected]>
* keygen.c (ask_keysize): Change strings to always use %u instead
diff --git a/g10/keygen.c b/g10/keygen.c
index 2be6364be..de57f23e4 100644
--- a/g10/keygen.c
+++ b/g10/keygen.c
@@ -1349,13 +1349,15 @@ ask_algo (int addmode, unsigned int *r_usage)
if( !addmode )
tty_printf(_(" (%d) DSA and Elgamal (default)\n"), 1 );
tty_printf( _(" (%d) DSA (sign only)\n"), 2 );
+ if (opt.expert)
+ tty_printf( _(" (%d) DSA (set your own capabilities)\n"), 3 );
if( addmode )
- tty_printf( _(" (%d) Elgamal (encrypt only)\n"), 3 );
- tty_printf( _(" (%d) RSA (sign only)\n"), 4 );
+ tty_printf(_(" (%d) Elgamal (encrypt only)\n"), 4 );
+ tty_printf( _(" (%d) RSA (sign only)\n"), 5 );
if (addmode)
- tty_printf( _(" (%d) RSA (encrypt only)\n"), 5 );
+ tty_printf(_(" (%d) RSA (encrypt only)\n"), 6 );
if (opt.expert)
- tty_printf( _(" (%d) RSA (set your own capabilities)\n"), 6 );
+ tty_printf( _(" (%d) RSA (set your own capabilities)\n"), 7 );
for(;;) {
answer = cpr_get("keygen.algo",_("Your selection? "));
@@ -1366,26 +1368,31 @@ ask_algo (int addmode, unsigned int *r_usage)
algo = 0; /* create both keys */
break;
}
- else if( algo == 6 && opt.expert ) {
+ else if( algo == 7 && opt.expert ) {
algo = PUBKEY_ALGO_RSA;
*r_usage=ask_key_flags(algo);
break;
}
- else if( algo == 5 && addmode ) {
+ else if( algo == 6 && addmode ) {
algo = PUBKEY_ALGO_RSA;
*r_usage = PUBKEY_USAGE_ENC;
break;
}
- else if( algo == 4 ) {
+ else if( algo == 5 ) {
algo = PUBKEY_ALGO_RSA;
*r_usage = PUBKEY_USAGE_SIG;
break;
}
- else if( algo == 3 && addmode ) {
+ else if( algo == 4 && addmode ) {
algo = PUBKEY_ALGO_ELGAMAL_E;
*r_usage = PUBKEY_USAGE_ENC;
break;
}
+ else if( algo == 3 && opt.expert ) {
+ algo = PUBKEY_ALGO_DSA;
+ *r_usage=ask_key_flags(algo);
+ break;
+ }
else if( algo == 2 ) {
algo = PUBKEY_ALGO_DSA;
*r_usage = PUBKEY_USAGE_SIG;