mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
See ChangeLog: Sun Jan 24 18:16:26 CET 1999 Werner Koch
This commit is contained in:
parent
9ef0f26270
commit
a16e15282a
5
NEWS
5
NEWS
@ -1,3 +1,8 @@
|
||||
|
||||
* changed the internal design of getkey which now allows a
|
||||
efficient lookup of multiple keys and add a word match mode.
|
||||
|
||||
|
||||
Noteworthy changes in version 0.9.2
|
||||
-----------------------------------
|
||||
|
||||
|
5
PROJECTS
5
PROJECTS
@ -47,3 +47,8 @@
|
||||
|
||||
* Keep a list of duplicate, faked or unwanted keyids.
|
||||
|
||||
* use regular C strings for the user ids; this can be done because
|
||||
OpenPGP requires them to be UTF-8 and we can replace a Null by
|
||||
an UTF-8 character (which one?)
|
||||
|
||||
|
||||
|
@ -88,6 +88,11 @@
|
||||
#undef IPC_HAVE_SHM_LOCK
|
||||
#undef IPC_RMID_DEFERRED_RELEASE
|
||||
|
||||
/* set this to limit filenames to the 8.3 format */
|
||||
#undef USE_ONLY_8DOT3
|
||||
/* defined if we must run on a stupid file system */
|
||||
#undef HAVE_DRIVE_LETTERS
|
||||
|
||||
@BOTTOM@
|
||||
|
||||
#include "g10defs.h"
|
||||
|
@ -100,6 +100,8 @@ case "${target}" in
|
||||
RANLIB="i386--mingw32-ranlib"
|
||||
ac_cv_have_dev_random=no
|
||||
AC_DEFINE(USE_RNDW32)
|
||||
AC_DEFINE(USE_ONLY_8DOT3)
|
||||
AC_DEFINE(HAVE_DRIVE_LETTERS)
|
||||
;;
|
||||
*-*-hpux*)
|
||||
if test -z "$GCC" ; then
|
||||
|
@ -253,7 +253,7 @@ B<--trusted-key> I<keyid>
|
||||
time GnuPG starts up: Use for I<keyid> the one of
|
||||
your key.
|
||||
|
||||
B<-r> I<name>, B<--remote-user> I<name>
|
||||
B<-r> I<name>, B<--recipient> I<name>
|
||||
Use I<name> as the user-id for encryption.
|
||||
This option is silently ignored for the list commands,
|
||||
so that it can be used in an options file.
|
||||
|
@ -1,3 +1,18 @@
|
||||
Sun Jan 24 18:16:26 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* getkey.c: Changed the internal design to allow simultaneous
|
||||
lookup of multible user ids
|
||||
(get_pubkey_bynames): New.
|
||||
(get_seckey_bynames): New.
|
||||
(get_seckey_next): New.
|
||||
(get_seckey_end): New.
|
||||
* keylist.c (list_one): Use the new functions.
|
||||
|
||||
* keylist.c (list_keyblock): add a newline for normal listings.
|
||||
|
||||
* g10.c (--recipient): New option name to replace --remote-user
|
||||
|
||||
|
||||
Wed Jan 20 18:59:49 CET 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* textfilter.c: Mostly rewritten
|
||||
|
@ -60,7 +60,7 @@ enum cmd_and_opt_values { aNull = 0,
|
||||
oDryRun = 'n',
|
||||
oOutput = 'o',
|
||||
oQuiet = 'q',
|
||||
oRemote = 'r',
|
||||
oRecipient = 'r',
|
||||
aSign = 's',
|
||||
oTextmodeShort= 't',
|
||||
oUser = 'u',
|
||||
@ -215,9 +215,10 @@ static ARGPARSE_OPTS opts[] = {
|
||||
{ 301, NULL, 0, N_("@\nOptions:\n ") },
|
||||
|
||||
{ oArmor, "armor", 0, N_("create ascii armored output")},
|
||||
{ oRecipient, "recipient", 2, N_("|NAME|encrypt for NAME")},
|
||||
{ oRecipient, "remote-user", 2, "@"}, /* old option name */
|
||||
#ifdef IS_G10
|
||||
{ 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")},
|
||||
@ -552,7 +553,7 @@ main( int argc, char **argv )
|
||||
opt.max_cert_depth = 5;
|
||||
opt.homedir = getenv("GNUPGHOME");
|
||||
if( !opt.homedir || !*opt.homedir ) {
|
||||
#ifdef __MINGW32__
|
||||
#ifdef HAVE_DRIVE_LETTERS
|
||||
opt.homedir = "c:/gnupg";
|
||||
#else
|
||||
opt.homedir = "~/.gnupg";
|
||||
@ -758,7 +759,7 @@ main( int argc, char **argv )
|
||||
case oS2KCipher: s2k_cipher_string = m_strdup(pargs.r.ret_str); break;
|
||||
|
||||
#ifdef IS_G10
|
||||
case oRemote: /* store the remote users */
|
||||
case oRecipient: /* store the recipient */
|
||||
sl = m_alloc( sizeof *sl + strlen(pargs.r.ret_str));
|
||||
strcpy(sl->d, pargs.r.ret_str);
|
||||
sl->next = remusr;
|
||||
|
1132
g10/getkey.c
1132
g10/getkey.c
File diff suppressed because it is too large
Load Diff
10
g10/keydb.h
10
g10/keydb.h
@ -31,10 +31,8 @@
|
||||
|
||||
#define MAX_FINGERPRINT_LEN 20
|
||||
|
||||
struct getkey_ctx_s;
|
||||
typedef struct getkey_ctx_s *GETKEY_CTX;
|
||||
#ifndef DEFINES_GETKEY_CTX
|
||||
struct getkey_ctx_s { char hidden[1]; };
|
||||
#endif
|
||||
|
||||
/****************
|
||||
* A Keyblock is all packets which form an entire certificate;
|
||||
@ -135,6 +133,8 @@ void getkey_disable_caches(void);
|
||||
int get_pubkey( PKT_public_key *pk, u32 *keyid );
|
||||
int get_pubkey_byname( GETKEY_CTX *rx, PKT_public_key *pk,
|
||||
const char *name, KBNODE *ret_keyblock );
|
||||
int get_pubkey_bynames( GETKEY_CTX *rx, PKT_public_key *pk,
|
||||
STRLIST names, KBNODE *ret_keyblock );
|
||||
int get_pubkey_next( GETKEY_CTX ctx, PKT_public_key *pk, KBNODE *ret_keyblock );
|
||||
void get_pubkey_end( GETKEY_CTX ctx );
|
||||
int get_seckey( PKT_secret_key *sk, u32 *keyid );
|
||||
@ -145,6 +145,10 @@ int get_keyblock_byfprint( KBNODE *ret_keyblock, const byte *fprint,
|
||||
size_t fprint_len );
|
||||
int seckey_available( u32 *keyid );
|
||||
int get_seckey_byname( PKT_secret_key *sk, const char *name, int unlock );
|
||||
int get_seckey_bynames( GETKEY_CTX *rx, PKT_secret_key *sk,
|
||||
STRLIST names, KBNODE *ret_keyblock );
|
||||
int get_seckey_next( GETKEY_CTX ctx, PKT_secret_key *sk, KBNODE *ret_keyblock );
|
||||
void get_seckey_end( GETKEY_CTX ctx );
|
||||
int enum_secret_keys( void **context, PKT_secret_key *sk, int with_subkeys );
|
||||
void merge_keys_and_selfsig( KBNODE keyblock );
|
||||
char*get_user_id_string( u32 *keyid );
|
||||
|
@ -36,7 +36,7 @@
|
||||
#include "i18n.h"
|
||||
|
||||
static void list_all(int);
|
||||
static void list_one(const char *name, int secret);
|
||||
static void list_one( STRLIST names, int secret);
|
||||
static void list_keyblock( KBNODE keyblock, int secret );
|
||||
static void fingerprint( PKT_public_key *pk, PKT_secret_key *sk );
|
||||
|
||||
@ -51,8 +51,11 @@ public_key_list( int nnames, char **names )
|
||||
if( !nnames )
|
||||
list_all(0);
|
||||
else { /* List by user id */
|
||||
STRLIST list = NULL;
|
||||
for( ; nnames ; nnames--, names++ )
|
||||
list_one( *names, 0 );
|
||||
add_to_strlist( &list, *names );
|
||||
list_one( list, 0 );
|
||||
free_strlist( list );
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,8 +65,11 @@ secret_key_list( int nnames, char **names )
|
||||
if( !nnames )
|
||||
list_all(1);
|
||||
else { /* List by user id */
|
||||
STRLIST list = NULL;
|
||||
for( ; nnames ; nnames--, names++ )
|
||||
list_one( *names, 1 );
|
||||
add_to_strlist( &list, *names );
|
||||
list_one( list, 0 );
|
||||
free_strlist( list );
|
||||
}
|
||||
}
|
||||
|
||||
@ -111,36 +117,30 @@ list_all( int secret )
|
||||
|
||||
|
||||
static void
|
||||
list_one( const char *name, int secret )
|
||||
list_one( STRLIST names, int secret )
|
||||
{
|
||||
int rc = 0;
|
||||
KBNODE keyblock = NULL;
|
||||
GETKEY_CTX ctx;
|
||||
|
||||
if( secret ) {
|
||||
KBPOS kbpos;
|
||||
|
||||
rc = secret? find_secret_keyblock_byname( &kbpos, name )
|
||||
: find_keyblock_byname( &kbpos, name );
|
||||
rc = get_seckey_bynames( &ctx, NULL, names, &keyblock );
|
||||
if( rc ) {
|
||||
log_error("%s: user not found\n", name );
|
||||
log_error("error reading key: %s\n", g10_errstr(rc) );
|
||||
get_seckey_end( ctx );
|
||||
return;
|
||||
}
|
||||
|
||||
rc = read_keyblock( &kbpos, &keyblock );
|
||||
if( rc ) {
|
||||
log_error("%s: keyblock read problem: %s\n", name, g10_errstr(rc) );
|
||||
return;
|
||||
}
|
||||
merge_keys_and_selfsig( keyblock );
|
||||
list_keyblock( keyblock, secret );
|
||||
release_kbnode( keyblock );
|
||||
do {
|
||||
merge_keys_and_selfsig( keyblock );
|
||||
list_keyblock( keyblock, 0 );
|
||||
release_kbnode( keyblock );
|
||||
} while( !get_seckey_next( ctx, NULL, &keyblock ) );
|
||||
get_seckey_end( ctx );
|
||||
}
|
||||
else {
|
||||
GETKEY_CTX ctx;
|
||||
|
||||
rc = get_pubkey_byname( &ctx, NULL, name, &keyblock );
|
||||
rc = get_pubkey_bynames( &ctx, NULL, names, &keyblock );
|
||||
if( rc ) {
|
||||
log_error("%s: %s\n", name, g10_errstr(rc) );
|
||||
log_error("error reading key: %s\n", g10_errstr(rc) );
|
||||
get_pubkey_end( ctx );
|
||||
return;
|
||||
}
|
||||
@ -380,6 +380,8 @@ list_keyblock( KBNODE keyblock, int secret )
|
||||
putchar(':');
|
||||
putchar('\n');
|
||||
}
|
||||
else if( !opt.with_colons )
|
||||
putchar('\n'); /* separator line */
|
||||
}
|
||||
|
||||
|
||||
|
@ -33,6 +33,11 @@
|
||||
#include "status.h"
|
||||
#include "i18n.h"
|
||||
|
||||
#ifdef USE_ONLY_8DOT3
|
||||
#define SKELEXT ".skl"
|
||||
#else
|
||||
#define SKELEXT ".skel"
|
||||
#endif
|
||||
|
||||
/****************
|
||||
* Check whether FNAME exists and ask if it's okay to overwrite an
|
||||
@ -91,6 +96,9 @@ open_outfile( const char *iname, int mode, IOBUF *a )
|
||||
if( opt.outfile )
|
||||
name = opt.outfile;
|
||||
else {
|
||||
#ifdef USE_ONLY_8DOT3
|
||||
#error please implement this
|
||||
#endif
|
||||
buf = m_alloc(strlen(iname)+4+1);
|
||||
strcpy(stpcpy(buf,iname), mode==1 ? ".asc" :
|
||||
mode==2 ? ".sig" : ".gpg");
|
||||
@ -122,6 +130,9 @@ open_sigfile( const char *iname )
|
||||
IOBUF a = NULL;
|
||||
size_t len;
|
||||
|
||||
#ifdef USE_ONLY_8DOT3
|
||||
#error please implement this
|
||||
#endif
|
||||
if( iname && !(*iname == '-' && !iname[1]) ) {
|
||||
len = strlen(iname);
|
||||
if( len > 4 && ( !strcmp(iname + len - 4, ".sig")
|
||||
@ -152,7 +163,7 @@ copy_options_file( const char *destdir )
|
||||
int c;
|
||||
|
||||
fname = m_alloc( strlen(datadir) + strlen(destdir) + 15 );
|
||||
strcpy(stpcpy(fname, datadir), "/options.skel" );
|
||||
strcpy(stpcpy(fname, datadir), "/options" SKELEXT );
|
||||
src = fopen( fname, "r" );
|
||||
if( !src ) {
|
||||
log_error(_("%s: can't open: %s\n"), fname, strerror(errno) );
|
||||
|
@ -1397,15 +1397,28 @@ parse_user_id( IOBUF inp, int pkttype, unsigned long pktlen, PACKET *packet )
|
||||
{
|
||||
byte *p;
|
||||
|
||||
packet->pkt.user_id = m_alloc(sizeof *packet->pkt.user_id + pktlen - 1);
|
||||
packet->pkt.user_id = m_alloc(sizeof *packet->pkt.user_id + pktlen);
|
||||
packet->pkt.user_id->len = pktlen;
|
||||
p = packet->pkt.user_id->name;
|
||||
for( ; pktlen; pktlen--, p++ )
|
||||
for( ; pktlen; pktlen--, p++ ) {
|
||||
*p = iobuf_get_noeof(inp);
|
||||
/* 0xff is not a valid utf-8 encoding so we can use it to replace
|
||||
* Nulls. This has the advantage that we can work with regular
|
||||
* C strings. When exporting it, we change it back to Null
|
||||
* the utf-8 functions know about this special convention.
|
||||
* The advantage of this single character is that we can
|
||||
* simple replace it. Problem is that we can't handle the 0xff
|
||||
* character which may have been used by pref rfc2440 implementations
|
||||
* I hope we can live with this. */
|
||||
if( !*p )
|
||||
*p = 0xff;
|
||||
}
|
||||
*p = 0;
|
||||
|
||||
if( list_mode ) {
|
||||
int n = packet->pkt.user_id->len;
|
||||
printf(":user id packet: \"");
|
||||
/* fixme: Hey why don't we replace this wioth print_string?? */
|
||||
for(p=packet->pkt.user_id->name; n; p++, n-- ) {
|
||||
if( *p >= ' ' && *p <= 'z' )
|
||||
putchar(*p);
|
||||
|
Loading…
x
Reference in New Issue
Block a user