1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-01-10 13:04:23 +01:00

Move idea_cipher_warn to misc.c so gpgv.c doesn't need a stub

Remove get_temp_dir (it's in exec.c now)
Allow --delete-key (now --delete-keys, though --delete-key still works) to
delete multiple keys in one go.  This applies to
--delete-secret-key(s) and --delete-secret-and-public-key(s) as well
This commit is contained in:
David Shaw 2002-01-09 19:59:26 +00:00
parent 0bd41cc2e5
commit bd5517b9e2
6 changed files with 77 additions and 95 deletions

View File

@ -1,3 +1,16 @@
2002-01-09 David Shaw <dshaw@jabberwocky.com>
* g10.c, misc.c, gpgv.c: move idea_cipher_warn to misc.c so gpgv.c
doesn't need a stub for it any longer.
* g10.c (get_temp_dir), main.h: no longer used (it's in exec.c now)
* g10.c (main), delkey.c (delete_keys), main.h : Allow
--delete-key (now --delete-keys, though --delete-key still works,
of course) to delete multiple keys in one go. This applies to
--delete-secret-key(s) and --delete-secret-and-public-key(s) as
well.
2001-01-09 Timo Schulz <ts@winpt.org>
* encode.c (encode_crypt_files): Now it behaves like verify_files.

View File

@ -168,24 +168,33 @@ do_delete_key( const char *username, int secret, int *r_sec_avail )
* Delete a public or secret key from a keyring.
*/
int
delete_key( const char *username, int secret, int allow_both )
delete_keys( STRLIST names, int secret, int allow_both )
{
int rc, avail;
rc = do_delete_key (username, secret, &avail );
if ( rc && avail ) {
if ( allow_both ) {
rc = do_delete_key (username, 1, &avail );
if ( !rc )
rc = do_delete_key (username, 0, &avail );
}
else {
log_error(_(
"there is a secret key for this public key!\n"));
log_info(_(
"use option \"--delete-secret-key\" to delete it first.\n"));
write_status_text( STATUS_DELETE_PROBLEM, "2" );
}
for(;names;names=names->next) {
rc = do_delete_key (names->d, secret, &avail );
if ( rc && avail ) {
if ( allow_both ) {
rc = do_delete_key (names->d, 1, &avail );
if ( !rc )
rc = do_delete_key (names->d, 0, &avail );
}
else {
log_error(_(
"there is a secret key for public key \"%s\"!\n"),names->d);
log_info(_(
"use option \"--delete-secret-keys\" to delete it first.\n"));
write_status_text( STATUS_DELETE_PROBLEM, "2" );
return rc;
}
}
if(rc) {
log_error("%s: delete key failed: %s\n", names->d, g10_errstr(rc) );
return rc;
}
}
return rc;
return 0;
}

View File

@ -82,9 +82,9 @@ enum cmd_and_opt_values { aNull = 0,
aNRSignKey,
aListPackets,
aEditKey,
aDeleteKey,
aDeleteSecretKey,
aDeleteSecretAndPublicKey,
aDeleteKeys,
aDeleteSecretKeys,
aDeleteSecretAndPublicKeys,
aKMode,
aKModeC,
aImport,
@ -282,9 +282,9 @@ static ARGPARSE_OPTS opts[] = {
{ oFingerprint, "fingerprint", 256, N_("list keys and fingerprints")},
{ aListSecretKeys, "list-secret-keys", 256, N_("list secret keys")},
{ aKeygen, "gen-key", 256, N_("generate a new key pair")},
{ aDeleteKey, "delete-key",256, N_("remove key from the public keyring")},
{ aDeleteSecretKey, "delete-secret-key",256,
N_("remove key from the secret keyring")},
{ aDeleteKeys,"delete-keys",256,N_("remove keys from the public keyring")},
{ aDeleteSecretKeys, "delete-secret-keys",256,
N_("remove keys from the secret keyring")},
{ aSignKey, "sign-key" ,256, N_("sign a key")},
{ aLSignKey, "lsign-key" ,256, N_("sign a key locally")},
{ aNRSignKey, "nrsign-key" ,256, N_("sign a key non-revocably")},
@ -499,7 +499,7 @@ static ARGPARSE_OPTS opts[] = {
{ oTryAllSecrets, "try-all-secrets", 0, "@" },
{ oEnableSpecialFilenames, "enable-special-filenames", 0, "@" },
{ oNoExpensiveTrustChecks, "no-expensive-trust-checks", 0, "@" },
{ aDeleteSecretAndPublicKey, "delete-secret-and-public-key",256, "@" },
{ aDeleteSecretAndPublicKeys, "delete-secret-and-public-keys",256, "@" },
{ aRebuildKeydbCaches, "rebuild-keydb-caches", 256, "@"},
{ oPreservePermissions, "preserve-permissions", 0, "@"},
{ oPreferenceList, "preference-list", 2, "@"},
@ -888,13 +888,13 @@ main( int argc, char **argv )
case aListSigs: set_cmd( &cmd, aListSigs); break;
case aExportSecret: set_cmd( &cmd, aExportSecret); break;
case aExportSecretSub: set_cmd( &cmd, aExportSecretSub); break;
case aDeleteSecretKey: set_cmd( &cmd, aDeleteSecretKey);
case aDeleteSecretKeys: set_cmd( &cmd, aDeleteSecretKeys);
greeting=1; break;
case aDeleteSecretAndPublicKey:
set_cmd( &cmd, aDeleteSecretAndPublicKey);
case aDeleteSecretAndPublicKeys:
set_cmd( &cmd, aDeleteSecretAndPublicKeys);
greeting=1;
break;
case aDeleteKey: set_cmd( &cmd, aDeleteKey); greeting=1; break;
case aDeleteKeys: set_cmd( &cmd, aDeleteKeys); greeting=1; break;
case aDetachedSign: detached_sig = 1; set_cmd( &cmd, aSign ); break;
case aSym: set_cmd( &cmd, aSym); break;
@ -1652,26 +1652,18 @@ main( int argc, char **argv )
m_free(username);
break;
case aDeleteSecretKey:
if( argc != 1 )
wrong_args(_("--delete-secret-key user-id"));
case aDeleteKey:
if( argc != 1 )
wrong_args(_("--delete-key user-id"));
username = make_username( fname );
if( (rc = delete_key(username, cmd==aDeleteSecretKey, 0)) )
log_error("%s: delete key failed: %s\n", username, g10_errstr(rc) );
m_free(username);
case aDeleteKeys:
case aDeleteSecretKeys:
case aDeleteSecretAndPublicKeys:
sl = NULL;
/* I'm adding these in reverse order as add_to_strlist2
reverses them again, and it's easier to understand in the
proper order :) */
for( ; argc; argc-- )
add_to_strlist2( &sl, argv[argc-1], utf8_strings );
delete_keys(sl,cmd==aDeleteSecretKeys,cmd==aDeleteSecretAndPublicKeys);
free_strlist(sl);
break;
case aDeleteSecretAndPublicKey:
if( argc != 1 )
wrong_args(_("--delete-secret-and-public-key user-id"));
username = make_username( fname );
if( (rc = delete_key(username, 0, 1)) )
log_error("%s: delete key failed: %s\n", username, g10_errstr(rc));
m_free(username);
break;
case aCheckKeys:
opt.check_sigs = 1;
@ -2232,46 +2224,3 @@ check_policy_url( const char *s )
}
return 0;
}
/* Special warning for the IDEA cipher */
void
idea_cipher_warn(int show)
{
static int warned=0;
if(!warned || show)
{
log_info(_("the IDEA cipher plugin is not present\n"));
log_info(_("please see http://www.gnupg.org/why-not-idea.html "
"for more information\n"));
warned=1;
}
}
const char *
get_temp_dir(void)
{
char *tmp;
#ifndef __MINGW32__
/* Don't allow to be setuid when we are going to create temporary
files or directories - yes, this is a bit paranoid */
if (getuid() != geteuid() )
BUG ();
#endif
if(opt.temp_dir)
return opt.temp_dir;
if((tmp=getenv("TMPDIR")))
return tmp;
if((tmp=getenv("TMP")))
return tmp;
#ifdef __riscos__
return "<Wimp$ScrapDir>";
#else
return "/tmp";
#endif
}

View File

@ -300,9 +300,6 @@ passphrase_to_dek( u32 *keyid, int pubkey_algo,
return NULL;
}
/* Stub: no decrypting, so no IDEA needed */
void idea_cipher_warn( int show ) {}
/* Stub to avoid linking to photoid.c */
void show_photo(const struct user_attribute *attr,PKT_public_key *pk) {}

View File

@ -48,8 +48,6 @@ extern int g10_errors_seen;
void print_pubkey_algo_note( int algo );
void print_cipher_algo_note( int algo );
void print_digest_algo_note( int algo );
void idea_cipher_warn( int show );
const char *get_temp_dir(void);
/*-- armor.c --*/
char *make_radix64_string( const byte *data, size_t len );
@ -68,6 +66,7 @@ int openpgp_pk_test_algo( int algo, unsigned int usage_flags );
int openpgp_pk_algo_usage ( int algo );
int openpgp_md_test_algo( int algo );
int check_permissions(const char *path,int extension,int checkonly);
void idea_cipher_warn( int show );
/*-- helptext.c --*/
void display_online_help( const char *keyword );
@ -94,7 +93,7 @@ int check_key_signature2( KBNODE root, KBNODE node,
int *is_selfsig, u32 *r_expiredate, int *r_expired );
/*-- delkey.c --*/
int delete_key( const char *username, int secret, int allow_both );
int delete_keys( STRLIST names, int secret, int allow_both );
/*-- keyedit.c --*/
void keyedit_menu( const char *username, STRLIST locusr, STRLIST cmds,

View File

@ -423,3 +423,18 @@ check_permissions(const char *path,int extension,int checkonly)
return 0;
}
/* Special warning for the IDEA cipher */
void
idea_cipher_warn(int show)
{
static int warned=0;
if(!warned || show)
{
log_info(_("the IDEA cipher plugin is not present\n"));
log_info(_("please see http://www.gnupg.org/why-not-idea.html "
"for more information\n"));
warned=1;
}
}