mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
(Does not compile yet)
This commit is contained in:
parent
5ccb92591e
commit
b9dd2ebb2c
27 changed files with 1216 additions and 695 deletions
|
@ -1,3 +1,30 @@
|
|||
Tue Nov 3 16:19:21 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* keygen.c (ask_user_id): Now converted to UTF-8
|
||||
|
||||
* g10.c (main): Kludge for pgp clearsigs and textmode.
|
||||
|
||||
Fri Oct 30 16:40:39 1998 me,,, (wk@tobold)
|
||||
|
||||
* signal.c (block_all_signals): New.
|
||||
(unblock_all_signals): New
|
||||
* tdbio.c (tdbio_end_transaction): Now blocks all signals.
|
||||
|
||||
* trustdb.c (new_lid_table): Changed the represenation of the
|
||||
former local_lid_info stuff.
|
||||
|
||||
* trustdb.c (update_trust_record): Reorganized the whole thing.
|
||||
* sig-check.c (check_key_signature): Now handles class 0x28
|
||||
|
||||
|
||||
Wed Oct 28 18:56:33 1998 me,,, (wk@tobold)
|
||||
|
||||
* export.c (do_export): Takes care of the exportable sig flag.
|
||||
|
||||
Tue Oct 27 14:53:04 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* trustdb.c (update_trust_record): New "fast" parameter.
|
||||
|
||||
Sun Oct 25 19:32:05 1998 Werner Koch (wk@isil.d.shuttle.de)
|
||||
|
||||
* openfile.c (copy_options_File): New.
|
||||
|
|
|
@ -128,6 +128,15 @@ do_export( STRLIST users, int secret )
|
|||
* secret keyring */
|
||||
if( !secret && node->pkt->pkttype == PKT_COMMENT )
|
||||
continue;
|
||||
/* do not export packets which are marked as not exportable */
|
||||
if( node->pkt->pkttype == PKT_SIGNATURE ) {
|
||||
const char *p;
|
||||
p = parse_sig_subpkt2( node->pkt->pkt.signature,
|
||||
SIGSUBPKT_EXPORTABLE, NULL );
|
||||
if( p && !*p )
|
||||
continue; /* not exportable */
|
||||
}
|
||||
|
||||
if( (rc = build_packet( out, node->pkt )) ) {
|
||||
log_error("build_packet(%d) failed: %s\n",
|
||||
node->pkt->pkttype, g10_errstr(rc) );
|
||||
|
|
|
@ -60,7 +60,7 @@ enum cmd_and_opt_values { aNull = 0,
|
|||
oQuiet = 'q',
|
||||
oRemote = 'r',
|
||||
aSign = 's',
|
||||
oTextmode = 't',
|
||||
oTextmodeShort= 't',
|
||||
oUser = 'u',
|
||||
oVerbose = 'v',
|
||||
oCompress = 'z',
|
||||
|
@ -100,6 +100,7 @@ enum cmd_and_opt_values { aNull = 0,
|
|||
aEnArmor,
|
||||
aGenRandom,
|
||||
|
||||
oTextmode,
|
||||
oFingerprint,
|
||||
oAnswerYes,
|
||||
oAnswerNo,
|
||||
|
@ -205,6 +206,7 @@ static ARGPARSE_OPTS opts[] = {
|
|||
{ oUser, "local-user",2, N_("use this user-id to sign or decrypt")},
|
||||
{ oRemote, "remote-user", 2, N_("use this user-id for encryption")},
|
||||
{ oCompress, NULL, 1, N_("|N|set compress level N (0 disables)") },
|
||||
{ oTextmodeShort, NULL, 0, "@"},
|
||||
{ oTextmode, "textmode", 0, N_("use canonical text mode")},
|
||||
#endif
|
||||
{ oOutput, "output", 2, N_("use as output file")},
|
||||
|
@ -734,6 +736,7 @@ main( int argc, char **argv )
|
|||
sl->next = remusr;
|
||||
remusr = sl;
|
||||
break;
|
||||
case oTextmodeShort: opt.textmode = 2; break;
|
||||
case oTextmode: opt.textmode=1; break;
|
||||
case oUser: /* store the local users */
|
||||
sl = m_alloc( sizeof *sl + strlen(pargs.r.ret_str));
|
||||
|
@ -839,7 +842,7 @@ main( int argc, char **argv )
|
|||
|
||||
|
||||
/* kludge to let -sat generate a clear text signature */
|
||||
if( opt.textmode && !detached_sig && opt.armor && cmd == aSign )
|
||||
if( opt.textmode == 2 && !detached_sig && opt.armor && cmd == aSign )
|
||||
cmd = aClearsign;
|
||||
|
||||
if( opt.verbose > 1 )
|
||||
|
|
|
@ -465,7 +465,7 @@ import_one( const char *fname, KBNODE keyblock, int fast )
|
|||
(ulong)keyid[1], g10_errstr(rc) );
|
||||
}
|
||||
else if( mod_key )
|
||||
rc = update_trust_record( keyblock_orig, NULL );
|
||||
rc = update_trust_record( keyblock_orig, 1, NULL );
|
||||
else
|
||||
rc = clear_trust_checked_flag( new_key? pk : pk_orig );
|
||||
}
|
||||
|
|
|
@ -647,7 +647,7 @@ keyedit_menu( const char *username, STRLIST locusr )
|
|||
}
|
||||
else
|
||||
tty_printf(_("Key not changed so no update needed.\n"));
|
||||
rc = update_trust_record( keyblock, NULL );
|
||||
rc = update_trust_record( keyblock, 0, NULL );
|
||||
if( rc )
|
||||
log_error(_("update of trust db failed: %s\n"),
|
||||
g10_errstr(rc) );
|
||||
|
@ -705,7 +705,7 @@ keyedit_menu( const char *username, STRLIST locusr )
|
|||
sec_modified = modified = 1;
|
||||
/* must update the trustdb already here, so that preferences
|
||||
* get listed correctly */
|
||||
rc = update_trust_record( keyblock, NULL );
|
||||
rc = update_trust_record( keyblock, 0, NULL );
|
||||
if( rc ) {
|
||||
log_error(_("update of trust db failed: %s\n"),
|
||||
g10_errstr(rc) );
|
||||
|
|
|
@ -689,6 +689,11 @@ ask_user_id( int mode )
|
|||
break;
|
||||
m_free(uid); uid = NULL;
|
||||
}
|
||||
if( uid ) {
|
||||
char *p = native_to_utf8( uid );
|
||||
m_free( uid );
|
||||
uid = p;
|
||||
}
|
||||
return uid;
|
||||
}
|
||||
|
||||
|
|
|
@ -633,7 +633,8 @@ dump_sig_subpkt( int hashed, int type, int critical,
|
|||
printf("sig expires %s", strtimestamp( buffer_to_u32(buffer) ) );
|
||||
break;
|
||||
case SIGSUBPKT_EXPORTABLE:
|
||||
p = "exportable";
|
||||
if( length )
|
||||
printf("%sexportable", *buffer? "":"not ");
|
||||
break;
|
||||
case SIGSUBPKT_TRUST:
|
||||
p = "trust signature";
|
||||
|
@ -759,6 +760,10 @@ parse_sig_subpkt( const byte *buffer, sigsubpkttype_t reqtype, size_t *ret_n )
|
|||
if( n < 4 )
|
||||
break;
|
||||
return buffer;
|
||||
case SIGSUBPKT_EXPORTABLE:
|
||||
if( !n )
|
||||
break;
|
||||
return buffer;
|
||||
case SIGSUBPKT_ISSUER:/* issuer key ID */
|
||||
if( n < 8 )
|
||||
break;
|
||||
|
|
|
@ -278,12 +278,27 @@ check_key_signature( KBNODE root, KBNODE node, int *is_selfsig )
|
|||
rc = do_check( pk, sig, md );
|
||||
md_close(md);
|
||||
}
|
||||
else if( sig->sig_class == 0x28 ) { /* subkey revocation */
|
||||
KBNODE snode = find_prev_kbnode( root, node, PKT_PUBLIC_SUBKEY );
|
||||
|
||||
if( snode ) {
|
||||
md = md_open( algo, 0 );
|
||||
hash_public_key( md, pk );
|
||||
hash_public_key( md, snode->pkt->pkt.public_key );
|
||||
rc = do_check( pk, sig, md );
|
||||
md_close(md);
|
||||
}
|
||||
else {
|
||||
log_error("no subkey for subkey revocation packet\n");
|
||||
rc = G10ERR_SIG_CLASS;
|
||||
}
|
||||
}
|
||||
else if( sig->sig_class == 0x18 ) {
|
||||
KBNODE snode = find_prev_kbnode( root, node, PKT_PUBLIC_SUBKEY );
|
||||
|
||||
if( snode ) {
|
||||
if( is_selfsig ) {
|
||||
u32 keyid[2];
|
||||
if( is_selfsig ) { /* does this make sense????? */
|
||||
u32 keyid[2]; /* it should always be a selfsig */
|
||||
|
||||
keyid_from_pk( pk, keyid );
|
||||
if( keyid[0] == sig->keyid[0] && keyid[1] == sig->keyid[1] )
|
||||
|
|
39
g10/signal.c
39
g10/signal.c
|
@ -121,3 +121,42 @@ pause_on_sigusr( int which )
|
|||
#endif
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
do_block( int block )
|
||||
{
|
||||
#ifndef __MINGW32__
|
||||
static int is_blocked;
|
||||
static sigset_t oldmask;
|
||||
|
||||
if( block ) {
|
||||
sigset_t newmask;
|
||||
|
||||
if( is_blocked )
|
||||
log_bug("signals are already blocked\n");
|
||||
sigfillset( &newmask );
|
||||
sigprocmask( SIG_BLOCK, &newmask, &oldmask );
|
||||
is_blocked = 1;
|
||||
}
|
||||
else {
|
||||
if( !is_blocked )
|
||||
log_bug("signals are not blocked\n");
|
||||
sigprocmask( SIG_SETMASK, &oldmask, NULL );
|
||||
is_blocked = 0;
|
||||
}
|
||||
#endif /*__MINGW32__*/
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
block_all_signals()
|
||||
{
|
||||
do_block(1);
|
||||
}
|
||||
|
||||
void
|
||||
unblock_all_signals()
|
||||
{
|
||||
do_block(0);
|
||||
}
|
||||
|
||||
|
|
|
@ -320,10 +320,15 @@ tdbio_begin_transaction()
|
|||
int
|
||||
tdbio_end_transaction()
|
||||
{
|
||||
int rc;
|
||||
|
||||
if( !in_transaction )
|
||||
log_bug("tdbio: no active transaction\n");
|
||||
block_all_signals();
|
||||
in_transaction = 0;
|
||||
return tdbio_sync();
|
||||
rc = tdbio_sync();
|
||||
unblock_all_signals();
|
||||
return rc;
|
||||
}
|
||||
|
||||
int
|
||||
|
|
738
g10/trustdb.c
738
g10/trustdb.c
File diff suppressed because it is too large
Load diff
|
@ -60,7 +60,7 @@ ulong lid_from_keyblock( KBNODE keyblock );
|
|||
int query_trust_record( PKT_public_key *pk );
|
||||
int clear_trust_checked_flag( PKT_public_key *pk );
|
||||
int insert_trust_record( PKT_public_key *pk );
|
||||
int update_trust_record( KBNODE keyblock, int *modified );
|
||||
int update_trust_record( KBNODE keyblock, int fast, int *modified );
|
||||
int update_ownertrust( ulong lid, unsigned new_trust );
|
||||
|
||||
/*-- pkclist.c --*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue