mirror of
git://git.gnupg.org/gnupg.git
synced 2025-05-24 16:43:28 +02:00
* keygen.c (read_parameter_file): New keyword "Handle". This is
bug 287. (print_status_key_not_created): New. (print_status_key_created): Add new arg HANDLE. (do_generate_keypair): Print not created status. * status.c, tatus.h (STATUS_KEY_NOT_CREATED): New.
This commit is contained in:
parent
b15cc684b8
commit
690aa956f1
19
doc/DETAILS
19
doc/DETAILS
@ -1,4 +1,4 @@
|
|||||||
|
-*- text -*-
|
||||||
Format of colon listings
|
Format of colon listings
|
||||||
========================
|
========================
|
||||||
First an example:
|
First an example:
|
||||||
@ -447,13 +447,19 @@ more arguments in future versions.
|
|||||||
epoch or an ISO 8601 string which can be detected by the
|
epoch or an ISO 8601 string which can be detected by the
|
||||||
presence of the letter 'T' inside.
|
presence of the letter 'T' inside.
|
||||||
|
|
||||||
KEY_CREATED <type> <fingerprint>
|
KEY_CREATED <type> <fingerprint> [<handle>]
|
||||||
A key has been created
|
A key has been created
|
||||||
type: 'B' = primary and subkey
|
type: 'B' = primary and subkey
|
||||||
'P' = primary
|
'P' = primary
|
||||||
'S' = subkey
|
'S' = subkey
|
||||||
The fingerprint is one of the primary key for type B and P and
|
The fingerprint is one of the primary key for type B and P and
|
||||||
the one of the subkey for S.
|
the one of the subkey for S. Handle is an arbitrary
|
||||||
|
non-whitespace string used to match key parameters from batch
|
||||||
|
key creation run.
|
||||||
|
|
||||||
|
KEY_NOT_CREATED [<handle>]
|
||||||
|
The key from batch run has not been created due to errors.
|
||||||
|
|
||||||
|
|
||||||
SESSION_KEY <algo>:<hexdigits>
|
SESSION_KEY <algo>:<hexdigits>
|
||||||
The session key used to decrypt the message. This message will
|
The session key used to decrypt the message. This message will
|
||||||
@ -744,6 +750,13 @@ The format of this file is as follows:
|
|||||||
revoker. The optional "sensitive" flag marks the designated
|
revoker. The optional "sensitive" flag marks the designated
|
||||||
revoker as sensitive information. Only v4 keys may be
|
revoker as sensitive information. Only v4 keys may be
|
||||||
designated revokers.
|
designated revokers.
|
||||||
|
Handle: <string>
|
||||||
|
This is an optional parameter only used with the status lines
|
||||||
|
KEY_CREATED and KEY_NOT_CREATED. STRING may be up to 100
|
||||||
|
characters and should not contauin spaces. It is useful for
|
||||||
|
batch key generation to associate a key parameter block with a
|
||||||
|
status line.
|
||||||
|
|
||||||
|
|
||||||
Here is an example:
|
Here is an example:
|
||||||
$ cat >foo <<EOF
|
$ cat >foo <<EOF
|
||||||
|
@ -3,6 +3,13 @@
|
|||||||
* keygen.c (read_parameter_file): Changed to use iobuf based file
|
* keygen.c (read_parameter_file): Changed to use iobuf based file
|
||||||
reading to allow the special file name feature to work.
|
reading to allow the special file name feature to work.
|
||||||
|
|
||||||
|
* keygen.c (read_parameter_file): New keyword "Handle". This is
|
||||||
|
bug 287.
|
||||||
|
(print_status_key_not_created): New.
|
||||||
|
(print_status_key_created): Add new arg HANDLE.
|
||||||
|
(do_generate_keypair): Print not created status.
|
||||||
|
* status.c, tatus.h (STATUS_KEY_NOT_CREATED): New.
|
||||||
|
|
||||||
2004-10-11 David Shaw <dshaw@jabberwocky.com>
|
2004-10-11 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
* pkclist.c (do_edit_ownertrust): Use the same translated string
|
* pkclist.c (do_edit_ownertrust): Use the same translated string
|
||||||
|
84
g10/keygen.c
84
g10/keygen.c
@ -64,7 +64,8 @@ enum para_name {
|
|||||||
pPASSPHRASE_DEK,
|
pPASSPHRASE_DEK,
|
||||||
pPASSPHRASE_S2K,
|
pPASSPHRASE_S2K,
|
||||||
pSERIALNO,
|
pSERIALNO,
|
||||||
pBACKUPENCDIR
|
pBACKUPENCDIR,
|
||||||
|
pHANDLE
|
||||||
};
|
};
|
||||||
|
|
||||||
struct para_data_s {
|
struct para_data_s {
|
||||||
@ -162,6 +163,49 @@ copy_mpi (MPI a, unsigned char *buffer, size_t len, size_t *ncopied)
|
|||||||
#endif /* ENABLE_CARD_SUPPORT */
|
#endif /* ENABLE_CARD_SUPPORT */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
print_status_key_created (int letter, PKT_public_key *pk, const char *handle)
|
||||||
|
{
|
||||||
|
unsigned char array[MAX_FINGERPRINT_LEN], *s;
|
||||||
|
char *buf, *p;
|
||||||
|
size_t i, n;
|
||||||
|
|
||||||
|
if (!handle)
|
||||||
|
handle = "";
|
||||||
|
|
||||||
|
buf = xmalloc (MAX_FINGERPRINT_LEN*2+31 + strlen (handle) + 1);
|
||||||
|
|
||||||
|
p = buf;
|
||||||
|
if (letter || pk)
|
||||||
|
{
|
||||||
|
*p++ = letter;
|
||||||
|
*p++ = ' ';
|
||||||
|
fingerprint_from_pk (pk, array, &n);
|
||||||
|
s = array;
|
||||||
|
for (i=0; i < n ; i++, s++, p += 2)
|
||||||
|
sprintf (p, "%02X", *s);
|
||||||
|
}
|
||||||
|
if (*handle)
|
||||||
|
{
|
||||||
|
*p++ = ' ';
|
||||||
|
for (i=0; handle[i] && i < 100; i++)
|
||||||
|
*p++ = isspace ((unsigned int)handle[i])? '_':handle[i];
|
||||||
|
}
|
||||||
|
*p = 0;
|
||||||
|
write_status_text ((letter || pk)?STATUS_KEY_CREATED:STATUS_KEY_NOT_CREATED,
|
||||||
|
buf);
|
||||||
|
xfree (buf);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
print_status_key_not_created (const char *handle)
|
||||||
|
{
|
||||||
|
print_status_key_created (0, NULL, handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
write_uid( KBNODE root, const char *s )
|
write_uid( KBNODE root, const char *s )
|
||||||
{
|
{
|
||||||
@ -2019,7 +2063,7 @@ proc_parameter_file( struct para_data_s *para, const char *fname,
|
|||||||
char *p;
|
char *p;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* check that we have all required parameters */
|
/* Check that we have all required parameters. */
|
||||||
assert( get_parameter( para, pKEYTYPE ) );
|
assert( get_parameter( para, pKEYTYPE ) );
|
||||||
i = get_parameter_algo( para, pKEYTYPE );
|
i = get_parameter_algo( para, pKEYTYPE );
|
||||||
if( i < 1 || check_pubkey_algo2( i, PUBKEY_USAGE_SIG ) ) {
|
if( i < 1 || check_pubkey_algo2( i, PUBKEY_USAGE_SIG ) ) {
|
||||||
@ -2130,7 +2174,7 @@ proc_parameter_file( struct para_data_s *para, const char *fname,
|
|||||||
|
|
||||||
/****************
|
/****************
|
||||||
* Kludge to allow non interactive key generation controlled
|
* Kludge to allow non interactive key generation controlled
|
||||||
* by a parameter file (which currently is only stdin)
|
* by a parameter file.
|
||||||
* Note, that string parameters are expected to be in UTF-8
|
* Note, that string parameters are expected to be in UTF-8
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
@ -2152,6 +2196,7 @@ read_parameter_file( const char *fname )
|
|||||||
{ "Passphrase", pPASSPHRASE },
|
{ "Passphrase", pPASSPHRASE },
|
||||||
{ "Preferences", pPREFERENCES },
|
{ "Preferences", pPREFERENCES },
|
||||||
{ "Revoker", pREVOKER },
|
{ "Revoker", pREVOKER },
|
||||||
|
{ "Handle", pHANDLE },
|
||||||
{ NULL, 0 }
|
{ NULL, 0 }
|
||||||
};
|
};
|
||||||
IOBUF fp;
|
IOBUF fp;
|
||||||
@ -2209,7 +2254,9 @@ read_parameter_file( const char *fname )
|
|||||||
outctrl.dryrun = 1;
|
outctrl.dryrun = 1;
|
||||||
else if( !ascii_strcasecmp( keyword, "%commit" ) ) {
|
else if( !ascii_strcasecmp( keyword, "%commit" ) ) {
|
||||||
outctrl.lnr = lnr;
|
outctrl.lnr = lnr;
|
||||||
proc_parameter_file( para, fname, &outctrl, 0 );
|
if (proc_parameter_file( para, fname, &outctrl, 0 ))
|
||||||
|
print_status_key_not_created
|
||||||
|
(get_parameter_value (para, pHANDLE));
|
||||||
release_parameter_list( para );
|
release_parameter_list( para );
|
||||||
para = NULL;
|
para = NULL;
|
||||||
}
|
}
|
||||||
@ -2269,7 +2316,9 @@ read_parameter_file( const char *fname )
|
|||||||
|
|
||||||
if( keywords[i].key == pKEYTYPE && para ) {
|
if( keywords[i].key == pKEYTYPE && para ) {
|
||||||
outctrl.lnr = lnr;
|
outctrl.lnr = lnr;
|
||||||
proc_parameter_file( para, fname, &outctrl, 0 );
|
if (proc_parameter_file( para, fname, &outctrl, 0 ))
|
||||||
|
print_status_key_not_created
|
||||||
|
(get_parameter_value (para, pHANDLE));
|
||||||
release_parameter_list( para );
|
release_parameter_list( para );
|
||||||
para = NULL;
|
para = NULL;
|
||||||
}
|
}
|
||||||
@ -2297,7 +2346,8 @@ read_parameter_file( const char *fname )
|
|||||||
}
|
}
|
||||||
else if( para ) {
|
else if( para ) {
|
||||||
outctrl.lnr = lnr;
|
outctrl.lnr = lnr;
|
||||||
proc_parameter_file( para, fname, &outctrl, 0 );
|
if (proc_parameter_file( para, fname, &outctrl, 0 ))
|
||||||
|
print_status_key_not_created (get_parameter_value (para, pHANDLE));
|
||||||
}
|
}
|
||||||
|
|
||||||
if( outctrl.use_files ) { /* close open streams */
|
if( outctrl.use_files ) { /* close open streams */
|
||||||
@ -2599,24 +2649,6 @@ generate_raw_key (int algo, unsigned int nbits, u32 created_at,
|
|||||||
#endif /* ENABLE_CARD_SUPPORT */
|
#endif /* ENABLE_CARD_SUPPORT */
|
||||||
|
|
||||||
|
|
||||||
static void
|
|
||||||
print_status_key_created (int letter, PKT_public_key *pk)
|
|
||||||
{
|
|
||||||
byte array[MAX_FINGERPRINT_LEN], *s;
|
|
||||||
char buf[MAX_FINGERPRINT_LEN*2+30], *p;
|
|
||||||
size_t i, n;
|
|
||||||
|
|
||||||
p = buf;
|
|
||||||
*p++ = letter;
|
|
||||||
*p++ = ' ';
|
|
||||||
fingerprint_from_pk (pk, array, &n);
|
|
||||||
s = array;
|
|
||||||
for (i=0; i < n ; i++, s++, p += 2)
|
|
||||||
sprintf (p, "%02X", *s);
|
|
||||||
*p = 0;
|
|
||||||
write_status_text (STATUS_KEY_CREATED, buf);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
do_generate_keypair( struct para_data_s *para,
|
do_generate_keypair( struct para_data_s *para,
|
||||||
struct output_control_s *outctrl, int card )
|
struct output_control_s *outctrl, int card )
|
||||||
@ -2889,11 +2921,13 @@ do_generate_keypair( struct para_data_s *para,
|
|||||||
log_error("key generation failed: %s\n", g10_errstr(rc) );
|
log_error("key generation failed: %s\n", g10_errstr(rc) );
|
||||||
else
|
else
|
||||||
tty_printf(_("Key generation failed: %s\n"), g10_errstr(rc) );
|
tty_printf(_("Key generation failed: %s\n"), g10_errstr(rc) );
|
||||||
|
print_status_key_not_created ( get_parameter_value (para, pHANDLE) );
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
PKT_public_key *pk = find_kbnode (pub_root,
|
PKT_public_key *pk = find_kbnode (pub_root,
|
||||||
PKT_PUBLIC_KEY)->pkt->pkt.public_key;
|
PKT_PUBLIC_KEY)->pkt->pkt.public_key;
|
||||||
print_status_key_created (did_sub? 'B':'P', pk);
|
print_status_key_created (did_sub? 'B':'P', pk,
|
||||||
|
get_parameter_value (para, pHANDLE));
|
||||||
}
|
}
|
||||||
release_kbnode( pub_root );
|
release_kbnode( pub_root );
|
||||||
release_kbnode( sec_root );
|
release_kbnode( sec_root );
|
||||||
|
@ -142,6 +142,7 @@ get_status_string ( int no )
|
|||||||
case STATUS_BEGIN_STREAM : s = "BEGIN_STREAM"; break;
|
case STATUS_BEGIN_STREAM : s = "BEGIN_STREAM"; break;
|
||||||
case STATUS_END_STREAM : s = "END_STREAM"; break;
|
case STATUS_END_STREAM : s = "END_STREAM"; break;
|
||||||
case STATUS_KEY_CREATED : s = "KEY_CREATED"; break;
|
case STATUS_KEY_CREATED : s = "KEY_CREATED"; break;
|
||||||
|
case STATUS_KEY_NOT_CREATED: s = "KEY_NOT_CREATED"; break;
|
||||||
case STATUS_USERID_HINT : s = "USERID_HINT"; break;
|
case STATUS_USERID_HINT : s = "USERID_HINT"; break;
|
||||||
case STATUS_UNEXPECTED : s = "UNEXPECTED"; break;
|
case STATUS_UNEXPECTED : s = "UNEXPECTED"; break;
|
||||||
case STATUS_INV_RECP : s = "INV_RECP"; break;
|
case STATUS_INV_RECP : s = "INV_RECP"; break;
|
||||||
|
@ -103,6 +103,7 @@
|
|||||||
#define STATUS_NEWSIG 72
|
#define STATUS_NEWSIG 72
|
||||||
#define STATUS_PLAINTEXT 73
|
#define STATUS_PLAINTEXT 73
|
||||||
#define STATUS_PLAINTEXT_LENGTH 74
|
#define STATUS_PLAINTEXT_LENGTH 74
|
||||||
|
#define STATUS_KEY_NOT_CREATED 75
|
||||||
|
|
||||||
/*-- status.c --*/
|
/*-- status.c --*/
|
||||||
void set_status_fd ( int fd );
|
void set_status_fd ( int fd );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user