1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-23 10:29:58 +01:00

* keyedit.c (sign_uids): Allow replacing expired signatures. Allow

duplicate signatures with --expert.

* pkclist.c (check_signatures_trust): Don't display a null fingerprint
when checking a signature with --always-trust enabled.

* filter.h (progress_filter_context_t), progress.c (handle_progress): Fix
compiler warnings.  Make "what" constant.

* build-packet.c (do_plaintext): Do not create invalid literal packets
with >255-byte names.
This commit is contained in:
David Shaw 2003-04-22 04:10:22 +00:00
parent 048a078fc6
commit 338be86caf
6 changed files with 73 additions and 14 deletions

View File

@ -1,3 +1,17 @@
2003-04-22 David Shaw <dshaw@jabberwocky.com>
* keyedit.c (sign_uids): Allow replacing expired signatures.
Allow duplicate signatures with --expert.
* pkclist.c (check_signatures_trust): Don't display a null
fingerprint when checking a signature with --always-trust enabled.
* filter.h (progress_filter_context_t), progress.c
(handle_progress): Fix compiler warnings. Make "what" constant.
* build-packet.c (do_plaintext): Do not create invalid literal
packets with >255-byte names.
2003-04-15 Werner Koch <wk@gnupg.org>
* g10.c, options.h: New option --enable-progress-filter.

View File

@ -1,5 +1,5 @@
/* build-packet.c - assemble packets and write them
* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
* Copyright (C) 1998-2003 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@ -539,6 +539,12 @@ do_plaintext( IOBUF out, int ctb, PKT_plaintext *pt )
byte buf[1000]; /* this buffer has the plaintext! */
int nbytes;
/* Truncate namelen to the maximum 255 characters. This does mean
that a function that calls build_packet with an illegal literal
packet will get it back legalized. */
if(pt->namelen>255)
pt->namelen=255;
write_header(out, ctb, calc_plaintext( pt ) );
iobuf_put(out, pt->mode );
iobuf_put(out, pt->namelen );

View File

@ -110,7 +110,7 @@ typedef struct {
typedef struct {
char *what; /* description */
const char *what; /* description */
u32 last_time; /* last time reported */
unsigned long last; /* last amount reported */
unsigned long offset; /* current amount */
@ -149,6 +149,6 @@ int copy_clearsig_text( IOBUF out, IOBUF inp, MD_HANDLE md,
int progress_filter (void *opaque, int control,
IOBUF a, byte *buf, size_t *ret_len);
void handle_progress (progress_filter_context_t *pfx,
IOBUF inp, char *name);
IOBUF inp, const char *name);
#endif /*G10_FILTER_H*/

View File

@ -1,5 +1,5 @@
/* keyedit.c - keyedit stuff
* Copyright (C) 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc.
* Copyright (C) 1998-2003 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@ -412,10 +412,35 @@ sign_uids( KBNODE keyblock, STRLIST locusr, int *ret_modified,
{
force_v4=1;
node->flag|=NODFLG_DELSIG;
m_free(user);
continue;
}
}
/* Is the current signature expired? */
if(node->pkt->pkt.signature->flags.expired)
{
tty_printf(_("Your current signature on \"%s\"\n"
"has expired.\n"),user);
if(cpr_get_answer_is_yes("sign_uid.replace_expired_okay",
_("Do you want to issue a "
"new signature to replace "
"the expired one? (y/N) ")))
{
/* Mark these for later deletion. We
don't want to delete them here, just in
case the replacement signature doesn't
happen for some reason. We only delete
these after the replacement is already
in place. */
node->flag|=NODFLG_DELSIG;
m_free(user);
continue;
}
}
if(!node->pkt->pkt.signature->flags.exportable && !local)
{
/* It's a local sig, and we want to make a
@ -436,6 +461,7 @@ sign_uids( KBNODE keyblock, STRLIST locusr, int *ret_modified,
in place. */
node->flag|=NODFLG_DELSIG;
m_free(user);
continue;
}
}
@ -450,6 +476,18 @@ sign_uids( KBNODE keyblock, STRLIST locusr, int *ret_modified,
tty_printf(_(
"\"%s\" was already signed by key %08lX\n"),
user,(ulong)sk_keyid[1] );
if(opt.expert
&& cpr_get_answer_is_yes("sign_uid.dupe_okay",
_("Do you want to sign it "
"again anyway? (y/N) ")))
{
/* Don't delete the old sig here since this is
an --expert thing. */
m_free(user);
continue;
}
sprintf (buf, "%08lX%08lX",
(ulong)sk->keyid[0], (ulong)sk->keyid[1] );
write_status_text (STATUS_ALREADY_SIGNED, buf);

View File

@ -1,5 +1,5 @@
/* pkclist.c
* Copyright (C) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
* Copyright (C) 1998-2003 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@ -573,6 +573,14 @@ check_signatures_trust( PKT_signature *sig )
unsigned int trustlevel;
int rc=0;
rc = get_pubkey( pk, sig->keyid );
if (rc)
{ /* this should not happen */
log_error("Ooops; the key vanished - can't check the trust\n");
rc = G10ERR_NO_PUBKEY;
goto leave;
}
if ( opt.always_trust)
{
if( !opt.quiet )
@ -582,14 +590,6 @@ check_signatures_trust( PKT_signature *sig )
goto leave;
}
rc = get_pubkey( pk, sig->keyid );
if (rc)
{ /* this should not happen */
log_error("Ooops; the key vanished - can't check the trust\n");
rc = G10ERR_NO_PUBKEY;
goto leave;
}
trustlevel = get_validity (pk, NULL);
if ( (trustlevel & TRUST_FLAG_REVOKED) )

View File

@ -24,6 +24,7 @@
#include "iobuf.h"
#include "filter.h"
#include "status.h"
#include "util.h"
#include "options.h"
/****************
@ -82,7 +83,7 @@ progress_filter (void *opaque, int control,
}
void
handle_progress (progress_filter_context_t *pfx, IOBUF inp, char *name)
handle_progress (progress_filter_context_t *pfx, IOBUF inp, const char *name)
{
off_t filesize = 0;