mirror of
git://git.gnupg.org/gnupg.git
synced 2025-04-17 15:44:34 +02:00
* keygen.c (ask_key_flags): New. (ask_algo): Call it here in --expert mode
so we don't need to specify each possible variation of RSA capabilities.
This commit is contained in:
parent
aa50dcff2f
commit
d41e6455a3
@ -1,5 +1,9 @@
|
|||||||
2004-10-10 David Shaw <dshaw@jabberwocky.com>
|
2004-10-10 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
|
* keygen.c (ask_key_flags): New.
|
||||||
|
(ask_algo): Call it here in --expert mode so we don't need to
|
||||||
|
specify each possible variation of RSA capabilities.
|
||||||
|
|
||||||
* keygen.c (do_add_key_flags): The spec says that all primary keys
|
* keygen.c (do_add_key_flags): The spec says that all primary keys
|
||||||
MUST be able to certify. Force the certify flag on for primaries
|
MUST be able to certify. Force the certify flag on for primaries
|
||||||
(and off for subkeys).
|
(and off for subkeys).
|
||||||
|
127
g10/keygen.c
127
g10/keygen.c
@ -1196,6 +1196,100 @@ check_valid_days( const char *s )
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
print_key_flags(int flags)
|
||||||
|
{
|
||||||
|
if(flags&PUBKEY_USAGE_SIG)
|
||||||
|
tty_printf("%s ",_("Sign"));
|
||||||
|
|
||||||
|
if(flags&PUBKEY_USAGE_ENC)
|
||||||
|
tty_printf("%s ",_("Encrypt"));
|
||||||
|
|
||||||
|
if(flags&PUBKEY_USAGE_AUTH)
|
||||||
|
tty_printf("%s ",_("Authenticate"));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Returns the key flags */
|
||||||
|
static unsigned int
|
||||||
|
ask_key_flags(int algo)
|
||||||
|
{
|
||||||
|
const char *togglers=_("SsEeAaQq");
|
||||||
|
char *answer=NULL;
|
||||||
|
unsigned int current=0;
|
||||||
|
unsigned int possible=openpgp_pk_algo_usage(algo);
|
||||||
|
|
||||||
|
if(strlen(togglers)!=8)
|
||||||
|
BUG();
|
||||||
|
|
||||||
|
/* Preload the current set with the possible set, minus
|
||||||
|
authentication, since nobody really uses auth yet. */
|
||||||
|
current=possible&~PUBKEY_USAGE_AUTH;
|
||||||
|
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
tty_printf("\n");
|
||||||
|
tty_printf(_("Possible actions for a %s key: "),
|
||||||
|
pubkey_algo_to_string(algo));
|
||||||
|
print_key_flags(possible);
|
||||||
|
tty_printf("\n");
|
||||||
|
tty_printf(_("Current allowed actions: "));
|
||||||
|
print_key_flags(current);
|
||||||
|
tty_printf("\n\n");
|
||||||
|
|
||||||
|
if(possible&PUBKEY_USAGE_SIG)
|
||||||
|
tty_printf(_(" (%c) Toggle the sign capability\n"),
|
||||||
|
togglers[0]);
|
||||||
|
if(possible&PUBKEY_USAGE_ENC)
|
||||||
|
tty_printf(_(" (%c) Toggle the encrypt capability\n"),
|
||||||
|
togglers[2]);
|
||||||
|
if(possible&PUBKEY_USAGE_AUTH)
|
||||||
|
tty_printf(_(" (%c) Toggle the authenticate capability\n"),
|
||||||
|
togglers[4]);
|
||||||
|
|
||||||
|
tty_printf(_(" (%c) Finished\n"),togglers[6]);
|
||||||
|
tty_printf("\n");
|
||||||
|
|
||||||
|
m_free(answer);
|
||||||
|
answer = cpr_get("keygen.flags",_("Your selection? "));
|
||||||
|
cpr_kill_prompt();
|
||||||
|
|
||||||
|
if(strlen(answer)>1)
|
||||||
|
continue;
|
||||||
|
else if(*answer=='\0' || *answer==togglers[6] || *answer==togglers[7])
|
||||||
|
break;
|
||||||
|
else if((*answer==togglers[0] || *answer==togglers[1])
|
||||||
|
&& possible&PUBKEY_USAGE_SIG)
|
||||||
|
{
|
||||||
|
if(current&PUBKEY_USAGE_SIG)
|
||||||
|
current&=~PUBKEY_USAGE_SIG;
|
||||||
|
else
|
||||||
|
current|=PUBKEY_USAGE_SIG;
|
||||||
|
}
|
||||||
|
else if((*answer==togglers[2] || *answer==togglers[3])
|
||||||
|
&& possible&PUBKEY_USAGE_ENC)
|
||||||
|
{
|
||||||
|
if(current&PUBKEY_USAGE_ENC)
|
||||||
|
current&=~PUBKEY_USAGE_ENC;
|
||||||
|
else
|
||||||
|
current|=PUBKEY_USAGE_ENC;
|
||||||
|
}
|
||||||
|
else if((*answer==togglers[4] || *answer==togglers[5])
|
||||||
|
&& possible&PUBKEY_USAGE_AUTH)
|
||||||
|
{
|
||||||
|
if(current&PUBKEY_USAGE_AUTH)
|
||||||
|
current&=~PUBKEY_USAGE_AUTH;
|
||||||
|
else
|
||||||
|
current|=PUBKEY_USAGE_AUTH;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_free(answer);
|
||||||
|
|
||||||
|
return current;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/****************
|
/****************
|
||||||
* Returns: 0 to create both a DSA and a Elgamal key.
|
* Returns: 0 to create both a DSA and a Elgamal key.
|
||||||
* and only if key flags are to be written the desired usage.
|
* and only if key flags are to be written the desired usage.
|
||||||
@ -1217,15 +1311,7 @@ ask_algo (int addmode, unsigned int *r_usage)
|
|||||||
if (addmode)
|
if (addmode)
|
||||||
tty_printf( _(" (%d) RSA (encrypt only)\n"), 5 );
|
tty_printf( _(" (%d) RSA (encrypt only)\n"), 5 );
|
||||||
if (opt.expert)
|
if (opt.expert)
|
||||||
tty_printf( _(" (%d) RSA (sign and encrypt)\n"), 6 );
|
tty_printf( _(" (%d) RSA (set your own capabilities)\n"), 6 );
|
||||||
if (opt.expert && addmode)
|
|
||||||
tty_printf( _(" (%d) RSA (auth only)\n"), 7 );
|
|
||||||
if (opt.expert)
|
|
||||||
tty_printf( _(" (%d) RSA (sign and auth)\n"), 8 );
|
|
||||||
if (opt.expert && addmode)
|
|
||||||
tty_printf( _(" (%d) RSA (encrypt and auth)\n"), 9 );
|
|
||||||
if (opt.expert)
|
|
||||||
tty_printf( _(" (%d) RSA (sign, encrypt and auth)\n"), 10 );
|
|
||||||
|
|
||||||
for(;;) {
|
for(;;) {
|
||||||
answer = cpr_get("keygen.algo",_("Your selection? "));
|
answer = cpr_get("keygen.algo",_("Your selection? "));
|
||||||
@ -1236,29 +1322,9 @@ ask_algo (int addmode, unsigned int *r_usage)
|
|||||||
algo = 0; /* create both keys */
|
algo = 0; /* create both keys */
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if( algo == 10 && opt.expert ) {
|
|
||||||
algo = PUBKEY_ALGO_RSA;
|
|
||||||
*r_usage = PUBKEY_USAGE_ENC | PUBKEY_USAGE_SIG | PUBKEY_USAGE_AUTH;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else if( algo == 9 && opt.expert && addmode) {
|
|
||||||
algo = PUBKEY_ALGO_RSA;
|
|
||||||
*r_usage = PUBKEY_USAGE_ENC | PUBKEY_USAGE_AUTH;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else if( algo == 8 && opt.expert ) {
|
|
||||||
algo = PUBKEY_ALGO_RSA;
|
|
||||||
*r_usage = PUBKEY_USAGE_SIG | PUBKEY_USAGE_AUTH;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else if( algo == 7 && opt.expert && addmode) {
|
|
||||||
algo = PUBKEY_ALGO_RSA;
|
|
||||||
*r_usage = PUBKEY_USAGE_AUTH;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
else if( algo == 6 && opt.expert ) {
|
else if( algo == 6 && opt.expert ) {
|
||||||
algo = PUBKEY_ALGO_RSA;
|
algo = PUBKEY_ALGO_RSA;
|
||||||
*r_usage = PUBKEY_USAGE_ENC | PUBKEY_USAGE_SIG;
|
*r_usage=ask_key_flags(algo);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if( algo == 5 && addmode ) {
|
else if( algo == 5 && addmode ) {
|
||||||
@ -1284,6 +1350,7 @@ ask_algo (int addmode, unsigned int *r_usage)
|
|||||||
else
|
else
|
||||||
tty_printf(_("Invalid selection.\n"));
|
tty_printf(_("Invalid selection.\n"));
|
||||||
}
|
}
|
||||||
|
|
||||||
return algo;
|
return algo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user