1
0
Fork 0
mirror of git://git.gnupg.org/gnupg.git synced 2025-07-02 22:46:30 +02:00

See ChangeLog: Tue Aug 31 17:20:44 CEST 1999 Werner Koch

This commit is contained in:
Werner Koch 1999-08-31 15:30:12 +00:00
parent c2c397bedf
commit 88a916cdd4
27 changed files with 365 additions and 160 deletions

View file

@ -1,3 +1,15 @@
Tue Aug 31 17:20:44 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
* plaintext.c (do_hash): Hash CR,LF for a single CR.
(ask_for_detached_datafile): Changed arguments to be closer to
those of hash_datafiles and cleanup the code a bit.
* mainproc.c (proc_tree): Workaround for pgp5 textmode detached
signatures. Changed behavior of asking for data file to be the same
as with provided data files.
* keylist.c (list_keyblock): Use UTF8 print functions.
Mon Aug 30 20:38:33 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>

View file

@ -103,7 +103,7 @@ static struct helptexts { const char *key; const char *help; } helptexts[] = {
{ "keygen.valid", N_(
"Enter the required value as shown in the pronpt.\n"
"Enter the required value as shown in the prompt.\n"
"It is possible to enter a ISO date (YYYY-MM-DD) but you won't\n"
"get a good error response - instead the system tries to interpret\n"
"the given value as an interval."
@ -176,8 +176,8 @@ static struct helptexts { const char *key; const char *help; } helptexts[] = {
{ "keyedit.delsig.valid", N_(
"This is a valid signature on the key; you normally don't want\n"
"to delete this signature may be important to establish a trust\n"
"connection to the key or another key certified by this key."
"to delete this signature because it may be important to establish a\n"
"trust connection to the key or another key certified by this key."
)},
{ "keyedit.delsig.unknown", N_(
"This signature can't be checked because you don't have the\n"

View file

@ -157,7 +157,7 @@ print_and_check_one_sig( KBNODE keyblock, KBNODE node,
else {
size_t n;
char *p = get_user_id( sig->keyid, &n );
tty_print_string( p, n > 40? 40 : n );
tty_print_utf8_string( p, n > 40? 40 : n );
m_free(p);
}
tty_printf("\n");
@ -192,7 +192,7 @@ check_all_keysigs( KBNODE keyblock, int only_selected )
selected = (node->flag & NODFLG_SELUID);
if( selected ) {
tty_printf("uid ");
tty_print_string( uid->name, uid->len );
tty_print_utf8_string( uid->name, uid->len );
tty_printf("\n");
if( anyuid && !has_selfsig )
mis_selfsig++;
@ -330,7 +330,7 @@ sign_uids( KBNODE keyblock, STRLIST locusr, int *ret_modified, int local )
"Are you really sure that you want to sign this key\n"
"with your key: \""));
p = get_user_id( sk_keyid, &n );
tty_print_string( p, n );
tty_print_utf8_string( p, n );
m_free(p); p = NULL;
tty_printf("\"\n\n");
@ -1112,7 +1112,7 @@ show_key_with_all_names( KBNODE keyblock, int only_marked,
tty_printf("(%d)* ", i);
else
tty_printf("(%d) ", i);
tty_print_string( uid->name, uid->len );
tty_print_utf8_string( uid->name, uid->len );
tty_printf("\n");
if( with_prefs )
show_prefs( keyblock, uid );
@ -1138,7 +1138,7 @@ show_key_and_fingerprint( KBNODE keyblock )
}
else if( node->pkt->pkttype == PKT_USER_ID ) {
PKT_user_id *uid = node->pkt->pkt.user_id;
tty_print_string( uid->name, uid->len );
tty_print_utf8_string( uid->name, uid->len );
break;
}
}
@ -1322,7 +1322,7 @@ menu_delsig( KBNODE pub_keyblock )
int okay, valid, selfsig, inv_sig, no_key, other_err;
tty_printf("uid ");
tty_print_string( uid->name, uid->len );
tty_print_utf8_string( uid->name, uid->len );
tty_printf("\n");
okay = inv_sig = no_key = other_err = 0;
@ -1708,8 +1708,8 @@ ask_revoke_sig( KBNODE keyblock, KBNODE node )
}
tty_printf(_("user ID: \""));
tty_print_string( unode->pkt->pkt.user_id->name,
unode->pkt->pkt.user_id->len );
tty_print_utf8_string( unode->pkt->pkt.user_id->name,
unode->pkt->pkt.user_id->len );
tty_printf(_("\"\nsigned with your key %08lX at %s\n"),
sig->keyid[1], datestr_from_sig(sig) );
@ -1744,7 +1744,7 @@ menu_revsig( KBNODE keyblock )
PKT_user_id *uid = node->pkt->pkt.user_id;
/* Hmmm: Should we show only UIDs with a signature? */
tty_printf(" ");
tty_print_string( uid->name, uid->len );
tty_print_utf8_string( uid->name, uid->len );
tty_printf("\n");
}
else if( node->pkt->pkttype == PKT_SIGNATURE
@ -1781,7 +1781,7 @@ menu_revsig( KBNODE keyblock )
if( node->pkt->pkttype == PKT_USER_ID ) {
PKT_user_id *uid = node->pkt->pkt.user_id;
tty_printf(" ");
tty_print_string( uid->name, uid->len );
tty_print_utf8_string( uid->name, uid->len );
tty_printf("\n");
}
else if( node->pkt->pkttype == PKT_SIGNATURE ) {

View file

@ -255,10 +255,15 @@ list_keyblock( KBNODE keyblock, int secret )
else
printf("uid%*s", 28, "");
}
print_string( stdout, node->pkt->pkt.user_id->name,
node->pkt->pkt.user_id->len, opt.with_colons );
if( opt.with_colons )
if( opt.with_colons ) {
print_string( stdout, node->pkt->pkt.user_id->name,
node->pkt->pkt.user_id->len, ':' );
putchar(':');
}
else
print_utf8_string( stdout, node->pkt->pkt.user_id->name,
node->pkt->pkt.user_id->len );
putchar('\n');
if( !any ) {
if( opt.fingerprint )
@ -402,7 +407,10 @@ list_keyblock( KBNODE keyblock, int secret )
else {
size_t n;
char *p = get_user_id( sig->keyid, &n );
print_string( stdout, p, n, opt.with_colons );
if( opt.with_colons )
print_string( stdout, p, n, ':' );
else
print_utf8_string( stdout, p, n );
m_free(p);
}
if( opt.with_colons )

View file

@ -1158,8 +1158,8 @@ proc_tree( CTX c, KBNODE node )
c->signed_data, c->sigfilename,
n1? (n1->pkt->pkt.onepass_sig->sig_class == 0x01):0 );
else
rc = ask_for_detached_datafile( &c->mfx,
iobuf_get_fname(c->iobuf));
rc = ask_for_detached_datafile( c->mfx.md, c->mfx.md2,
iobuf_get_fname(c->iobuf), 0 );
if( rc ) {
log_error("can't hash datafile: %s\n", g10_errstr(rc));
return;
@ -1173,6 +1173,7 @@ proc_tree( CTX c, KBNODE node )
PKT_signature *sig = node->pkt->pkt.signature;
if( !c->have_data ) {
/* detached signature */
free_md_filter_context( &c->mfx );
c->mfx.md = md_open(sig->digest_algo, 0);
if( sig->digest_algo == DIGEST_ALGO_MD5
@ -1180,15 +1181,16 @@ proc_tree( CTX c, KBNODE node )
/* enable a workaround for a pgp2 bug */
c->mfx.md2 = md_open( DIGEST_ALGO_MD5, 0 );
}
#if 0
#warning md_start_debug enabled
md_start_debug( c->mfx.md, "det1" );
if( c->mfx.md2 )
md_start_debug( c->mfx.md2, "det2" );
#endif
else if( sig->digest_algo == DIGEST_ALGO_SHA1
&& sig->pubkey_algo == PUBKEY_ALGO_DSA
&& sig->sig_class == 0x01 ) {
/* enable the workaround also for pgp5 when the detached
* signature has been created in textmode */
c->mfx.md2 = md_open( sig->digest_algo, 0 );
}
/* Here we have another hack to work around a pgp 2 bug
* It works by not using the textmode for detached signatures;
* this will let the first signazure check (on md) fail
* this will let the first signature check (on md) fail
* but the second one (on md2) which adds an extra CR should
* then produce the "correct" hash. This is very, very ugly
* hack but it may help in some cases (and break others)
@ -1196,10 +1198,11 @@ proc_tree( CTX c, KBNODE node )
if( c->sigs_only )
rc = hash_datafiles( c->mfx.md, c->mfx.md2,
c->signed_data, c->sigfilename,
c->mfx.md2? 0 :(sig->sig_class == 0x01) );
c->mfx.md2? 0 :(sig->sig_class == 0x01) );
else
rc = ask_for_detached_datafile( &c->mfx,
iobuf_get_fname(c->iobuf));
rc = ask_for_detached_datafile( c->mfx.md, c->mfx.md2,
iobuf_get_fname(c->iobuf),
c->mfx.md2? 0 :(sig->sig_class == 0x01) );
if( rc ) {
log_error("can't hash datafile: %s\n", g10_errstr(rc));
return;

View file

@ -334,7 +334,8 @@ int encrypt_data( PKT_encrypted *ed, DEK *dek );
/*-- plaintext.c --*/
int handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
int nooutput, int clearsig );
int ask_for_detached_datafile( md_filter_context_t *mfx, const char *inname );
int ask_for_detached_datafile( MD_HANDLE md, MD_HANDLE md2,
const char *inname, int textmode );
/*-- comment.c --*/
int write_comment( IOBUF out, const char *s );

View file

@ -249,7 +249,8 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
* INFILE is the name of the input file.
*/
int
ask_for_detached_datafile( md_filter_context_t *mfx, const char *inname )
ask_for_detached_datafile( MD_HANDLE md, MD_HANDLE md2,
const char *inname, int textmode )
{
char *answer = NULL;
IOBUF fp;
@ -285,18 +286,12 @@ ask_for_detached_datafile( md_filter_context_t *mfx, const char *inname )
if( !fp ) {
if( opt.verbose )
log_info(_("reading stdin ...\n"));
while( (c = getchar()) != EOF ) {
if( mfx->md )
md_putc(mfx->md, c );
}
}
else {
while( (c = iobuf_get(fp)) != -1 ) {
if( mfx->md )
md_putc(mfx->md, c );
}
iobuf_close(fp);
fp = iobuf_open( NULL );
assert(fp);
}
do_hash( md, md2, fp, textmode );
iobuf_close(fp);
leave:
m_free(answer);
@ -315,16 +310,32 @@ do_hash( MD_HANDLE md, MD_HANDLE md2, IOBUF fp, int textmode )
iobuf_push_filter( fp, text_filter, &tfx );
}
if( md2 ) { /* work around a strange behaviour in pgp2 */
/* It seems that at least PGP5 converts a single CR to a CR,LF too */
int lc = -1;
while( (c = iobuf_get(fp)) != -1 ) {
if( c == '\n' )
md_putc(md2, '\r' );
md_putc(md, c );
md_putc(md2, c );
if( c == '\n' && lc == '\r' )
md_putc(md2, c);
else if( c == '\n' ) {
md_putc(md2, '\r');
md_putc(md2, c);
}
else if( c != '\n' && lc == '\r' ) {
md_putc(md2, '\n');
md_putc(md2, c);
}
else
md_putc(md2, c);
if( md )
md_putc(md, c );
lc = c;
}
}
else {
while( (c = iobuf_get(fp)) != -1 )
md_putc(md, c );
while( (c = iobuf_get(fp)) != -1 ) {
if( md )
md_putc(md, c );
}
}
}