diff options
Diffstat (limited to 'sm')
-rw-r--r-- | sm/ChangeLog | 6 | ||||
-rw-r--r-- | sm/gpgsm.c | 255 | ||||
-rw-r--r-- | sm/keydb.c | 324 |
3 files changed, 293 insertions, 292 deletions
diff --git a/sm/ChangeLog b/sm/ChangeLog index d36a3aef6..7f7118ab0 100644 --- a/sm/ChangeLog +++ b/sm/ChangeLog @@ -1,3 +1,9 @@ +2011-08-04 Werner Koch <[email protected]> + + * keydb.c (keydb_add_resource): Remove set but unused var + CREATED_FNAME. + * gpgsm.c (main): Remove set but used var FNAME. + 2011-07-21 Werner Koch <[email protected]> * call-dirmngr.c (get_cached_cert, get_cached_cert_data_cb): New. diff --git a/sm/gpgsm.c b/sm/gpgsm.c index 6388d9061..484ce9d31 100644 --- a/sm/gpgsm.c +++ b/sm/gpgsm.c @@ -1,4 +1,4 @@ -/* gpgsm.c - GnuPG for S/MIME +/* gpgsm.c - GnuPG for S/MIME * Copyright (C) 2001, 2002, 2003, 2004, 2005, * 2006, 2007, 2008 Free Software Foundation, Inc. * @@ -72,7 +72,7 @@ enum cmd_and_opt_values { aRecvKeys, aExport, aExportSecretKeyP12, - aServer, + aServer, aLearnCard, aCallDirmngr, aCallProtectTool, @@ -140,7 +140,7 @@ enum cmd_and_opt_values { oDisablePolicyChecks, oEnablePolicyChecks, oAutoIssuerKeyRetrieve, - + oWithFingerprint, oWithMD5Fingerprint, oAnswerYes, @@ -193,22 +193,22 @@ static ARGPARSE_OPTS opts[] = { ARGPARSE_c (aDecrypt, "decrypt", N_("decrypt data (default)")), ARGPARSE_c (aVerify, "verify", N_("verify a signature")), ARGPARSE_c (aListKeys, "list-keys", N_("list keys")), - ARGPARSE_c (aListExternalKeys, "list-external-keys", + ARGPARSE_c (aListExternalKeys, "list-external-keys", N_("list external keys")), ARGPARSE_c (aListSecretKeys, "list-secret-keys", N_("list secret keys")), - ARGPARSE_c (aListChain, "list-chain", N_("list certificate chain")), + ARGPARSE_c (aListChain, "list-chain", N_("list certificate chain")), ARGPARSE_c (aFingerprint, "fingerprint", N_("list keys and fingerprints")), ARGPARSE_c (aKeygen, "gen-key", N_("generate a new key pair")), - ARGPARSE_c (aDeleteKey, "delete-keys", + ARGPARSE_c (aDeleteKey, "delete-keys", N_("remove keys from the public keyring")), ARGPARSE_c (aSendKeys, "send-keys", N_("export keys to a key server")), ARGPARSE_c (aRecvKeys, "recv-keys", N_("import keys from a key server")), ARGPARSE_c (aImport, "import", N_("import certificates")), ARGPARSE_c (aExport, "export", N_("export certificates")), - ARGPARSE_c (aExportSecretKeyP12, "export-secret-key-p12", "@"), + ARGPARSE_c (aExportSecretKeyP12, "export-secret-key-p12", "@"), ARGPARSE_c (aLearnCard, "learn-card", N_("register a smartcard")), ARGPARSE_c (aServer, "server", N_("run in server mode")), - ARGPARSE_c (aCallDirmngr, "call-dirmngr", + ARGPARSE_c (aCallDirmngr, "call-dirmngr", N_("pass a command to the dirmngr")), ARGPARSE_c (aCallProtectTool, "call-protect-tool", N_("invoke gpg-protect-tool")), @@ -231,11 +231,11 @@ static ARGPARSE_OPTS opts[] = { ARGPARSE_s_s (oP12Charset, "p12-charset", "@"), - ARGPARSE_s_n (oAssumeArmor, "assume-armor", + ARGPARSE_s_n (oAssumeArmor, "assume-armor", N_("assume input is in PEM format")), ARGPARSE_s_n (oAssumeBase64, "assume-base64", N_("assume input is in base-64 format")), - ARGPARSE_s_n (oAssumeBinary, "assume-binary", + ARGPARSE_s_n (oAssumeBinary, "assume-binary", N_("assume input is in binary format")), ARGPARSE_s_s (oRecipient, "recipient", N_("|USER-ID|encrypt for USER-ID")), @@ -243,12 +243,12 @@ static ARGPARSE_OPTS opts[] = { ARGPARSE_s_n (oPreferSystemDirmngr,"prefer-system-dirmngr", N_("use system's dirmngr if available")), - ARGPARSE_s_n (oDisableCRLChecks, "disable-crl-checks", + ARGPARSE_s_n (oDisableCRLChecks, "disable-crl-checks", N_("never consult a CRL")), ARGPARSE_s_n (oEnableCRLChecks, "enable-crl-checks", "@"), ARGPARSE_s_n (oDisableTrustedCertCRLCheck, "disable-trusted-cert-crl-check", "@"), - ARGPARSE_s_n (oEnableTrustedCertCRLCheck, + ARGPARSE_s_n (oEnableTrustedCertCRLCheck, "enable-trusted-cert-crl-check", "@"), ARGPARSE_s_n (oForceCRLRefresh, "force-crl-refresh", "@"), @@ -258,7 +258,7 @@ static ARGPARSE_OPTS opts[] = { ARGPARSE_s_s (oValidationModel, "validation-model", "@"), - ARGPARSE_s_i (oIncludeCerts, "include-certs", + ARGPARSE_s_i (oIncludeCerts, "include-certs", N_("|N|number of certificates to include") ), ARGPARSE_s_s (oPolicyFile, "policy-file", @@ -286,7 +286,7 @@ static ARGPARSE_OPTS opts[] = { ARGPARSE_s_n (oNoLogFile, "no-log-file", "@"), ARGPARSE_s_i (oLoggerFD, "logger-fd", "@"), - ARGPARSE_s_s (oAuditLog, "audit-log", + ARGPARSE_s_s (oAuditLog, "audit-log", N_("|FILE|write an audit log to FILE")), ARGPARSE_s_s (oHtmlAuditLog, "html-audit-log", "@"), ARGPARSE_s_n (oDryRun, "dry-run", N_("do not make any changes")), @@ -325,12 +325,12 @@ static ARGPARSE_OPTS opts[] = { ARGPARSE_s_i (oStatusFD, "status-fd", N_("|FD|write status info to this FD")), - ARGPARSE_s_s (oCipherAlgo, "cipher-algo", + ARGPARSE_s_s (oCipherAlgo, "cipher-algo", N_("|NAME|use cipher algorithm NAME")), ARGPARSE_s_s (oDigestAlgo, "digest-algo", N_("|NAME|use message digest algorithm NAME")), ARGPARSE_s_s (oExtraDigestAlgo, "extra-digest-algo", "@"), - + ARGPARSE_group (302, N_( "@\n(See the man page for a complete listing of all commands and options)\n" @@ -346,13 +346,13 @@ static ARGPARSE_OPTS opts[] = { /* Hidden options. */ ARGPARSE_s_n (oNoVerbose, "no-verbose", "@"), ARGPARSE_s_n (oEnableSpecialFilenames, "enable-special-filenames", "@"), - ARGPARSE_s_n (oNoSecmemWarn, "no-secmem-warning", "@"), + ARGPARSE_s_n (oNoSecmemWarn, "no-secmem-warning", "@"), ARGPARSE_s_n (oNoArmor, "no-armor", "@"), ARGPARSE_s_n (oNoArmor, "no-armour", "@"), ARGPARSE_s_n (oNoDefKeyring, "no-default-keyring", "@"), ARGPARSE_s_n (oNoGreeting, "no-greeting", "@"), ARGPARSE_s_n (oNoOptions, "no-options", "@"), - ARGPARSE_s_s (oHomedir, "homedir", "@"), + ARGPARSE_s_s (oHomedir, "homedir", "@"), ARGPARSE_s_s (oAgentProgram, "agent-program", "@"), ARGPARSE_s_s (oDisplay, "display", "@"), ARGPARSE_s_s (oTTYname, "ttyname", "@"), @@ -380,11 +380,11 @@ static ARGPARSE_OPTS opts[] = { ARGPARSE_s_s (oIgnoreCertExtension, "ignore-cert-extension", "@"), /* Command aliases. */ - ARGPARSE_c (aListKeys, "list-key", "@"), - ARGPARSE_c (aListChain, "list-sig", "@"), - ARGPARSE_c (aListChain, "list-sigs", "@"), - ARGPARSE_c (aListChain, "check-sig", "@"), - ARGPARSE_c (aListChain, "check-sigs", "@"), + ARGPARSE_c (aListKeys, "list-key", "@"), + ARGPARSE_c (aListChain, "list-sig", "@"), + ARGPARSE_c (aListChain, "list-sigs", "@"), + ARGPARSE_c (aListChain, "check-sig", "@"), + ARGPARSE_c (aListChain, "check-sigs", "@"), ARGPARSE_c (aDeleteKey, "delete-key", "@"), ARGPARSE_end () @@ -410,7 +410,7 @@ static int allow_special_filenames; gpgconf-list because the variable will be changed by the command line option. */ #define DEFAULT_INCLUDE_CERTS -2 /* Include all certs but root. */ -static int default_include_certs = DEFAULT_INCLUDE_CERTS; +static int default_include_certs = DEFAULT_INCLUDE_CERTS; /* Whether the chain mode shall be used for validation. */ static int default_validation_model; @@ -490,7 +490,7 @@ make_libversion (const char *libname, const char *(*getfnc)(const char*)) { const char *s; char *result; - + if (maybe_setuid) { gcry_control (GCRYCTL_INIT_SECMEM, 0, 0); /* Drop setuid. */ @@ -558,7 +558,7 @@ my_strusage( int level ) digests = build_list("Hash: ", gcry_md_algo_name, our_md_test_algo ); p = digests; break; - + default: p = NULL; break; } return p; @@ -571,7 +571,7 @@ build_list (const char *text, const char * (*mapf)(int), int (*chkf)(int)) int i; size_t n=strlen(text)+2; char *list, *p; - + if (maybe_setuid) { gcry_control (GCRYCTL_DROP_PRIVS); /* drop setuid */ } @@ -625,7 +625,7 @@ static void set_opt_session_env (const char *name, const char *value) { gpg_error_t err; - + err = session_env_setenv (opt.session_env, name, value); if (err) log_fatal ("error setting session environment: %s\n", @@ -660,7 +660,7 @@ set_debug (void) /* Unless the "guru" string has been used we don't want to allow hashing debugging. The rationale is that people tend to select the highest debug value and would then clutter their - disk with debug files which may reveal confidential data. */ + disk with debug files which may reveal confidential data. */ if (numok) opt.debug &= ~(DBG_HASHING_VALUE); } @@ -685,16 +685,16 @@ set_debug (void) if (opt.debug) log_info ("enabled debug flags:%s%s%s%s%s%s%s%s\n", - (opt.debug & DBG_X509_VALUE )? " x509":"", - (opt.debug & DBG_MPI_VALUE )? " mpi":"", - (opt.debug & DBG_CRYPTO_VALUE )? " crypto":"", - (opt.debug & DBG_MEMORY_VALUE )? " memory":"", - (opt.debug & DBG_CACHE_VALUE )? " cache":"", - (opt.debug & DBG_MEMSTAT_VALUE)? " memstat":"", - (opt.debug & DBG_HASHING_VALUE)? " hashing":"", + (opt.debug & DBG_X509_VALUE )? " x509":"", + (opt.debug & DBG_MPI_VALUE )? " mpi":"", + (opt.debug & DBG_CRYPTO_VALUE )? " crypto":"", + (opt.debug & DBG_MEMORY_VALUE )? " memory":"", + (opt.debug & DBG_CACHE_VALUE )? " cache":"", + (opt.debug & DBG_MEMSTAT_VALUE)? " memstat":"", + (opt.debug & DBG_HASHING_VALUE)? " hashing":"", (opt.debug & DBG_ASSUAN_VALUE )? " assuan":"" ); } - + static void @@ -711,7 +711,7 @@ set_cmd (enum cmd_and_opt_values *ret_cmd, enum cmd_and_opt_values new_cmd) else if ( (cmd == aSign && new_cmd == aClearsign) || (cmd == aClearsign && new_cmd == aSign) ) cmd = aClearsign; - else + else { log_error(_("conflicting commands\n")); gpgsm_exit(2); @@ -803,39 +803,39 @@ parse_keyserver_line (char *line, fail = 1; } break; - + case 2: if (*p) server->port = atoi (p); break; - + case 3: if (*p) server->user = xstrdup (p); break; - + case 4: if (*p && !server->user) { - log_error (_("%s:%u: password given without user\n"), + log_error (_("%s:%u: password given without user\n"), filename, lineno); fail = 1; } else if (*p) server->pass = xstrdup (p); break; - + case 5: if (*p) server->base = xstrdup (p); break; - + default: /* (We silently ignore extra fields.) */ break; } } - + if (fail) { log_info (_("%s:%u: skipping this line\n"), filename, lineno); @@ -852,7 +852,6 @@ main ( int argc, char **argv) ARGPARSE_ARGS pargs; int orig_argc; char **orig_argv; - const char *fname; /* char *username;*/ int may_coredump; strlist_t sl, remusr= NULL, locusr=NULL; @@ -909,7 +908,7 @@ main ( int argc, char **argv) /* Check that the libraries are suitable. Do it here because the option parse may need services of the library */ if (!gcry_check_version (NEED_LIBGCRYPT_VERSION) ) - log_fatal (_("%s is too old (need %s, have %s)\n"), "libgcrypt", + log_fatal (_("%s is too old (need %s, have %s)\n"), "libgcrypt", NEED_LIBGCRYPT_VERSION, gcry_check_version (NULL) ); if (!ksba_check_version (NEED_KSBA_VERSION) ) log_fatal (_("%s is too old (need %s, have %s)\n"), "libksba", @@ -919,9 +918,9 @@ main ( int argc, char **argv) gcry_control (GCRYCTL_USE_SECURE_RNDPOOL); may_coredump = disable_core_dumps (); - + gnupg_init_signals (0, emergency_cleanup); - + create_dotlock (NULL); /* register locking cleanup */ opt.session_env = session_env_new (); @@ -959,14 +958,14 @@ main ( int argc, char **argv) break; /* This break makes sure that --version and --help are passed to the protect-tool. */ } - - + + /* Initialize the secure memory. */ gcry_control (GCRYCTL_INIT_SECMEM, 16384, 0); maybe_setuid = 0; - /* - Now we are now working under our real uid + /* + Now we are now working under our real uid */ ksba_set_malloc_hooks (gcry_malloc, gcry_realloc, gcry_free ); @@ -992,7 +991,7 @@ main ( int argc, char **argv) configname = make_filename (opt.homedir, "gpgsm.conf", NULL); /* Set the default policy file */ opt.policy_file = make_filename (opt.homedir, "policies.txt", NULL); - + argc = orig_argc; argv = orig_argv; pargs.argc = &argc; @@ -1010,7 +1009,7 @@ main ( int argc, char **argv) if (parse_debug) log_info (_("NOTE: no default option file `%s'\n"), configname); } - else + else { log_error (_("option file `%s': %s\n"), configname, strerror(errno)); gpgsm_exit(2); @@ -1023,19 +1022,19 @@ main ( int argc, char **argv) default_config = 0; } - while (!no_more_options + while (!no_more_options && optfile_parse (configfp, configname, &configlineno, &pargs, opts)) { switch (pargs.r_opt) { - case aGPGConfList: - case aGPGConfTest: + case aGPGConfList: + case aGPGConfTest: set_cmd (&cmd, pargs.r_opt); do_not_setup_keys = 1; nogreeting = 1; break; - case aServer: + case aServer: opt.batch = 1; set_cmd (&cmd, aServer); break; @@ -1052,7 +1051,7 @@ main ( int argc, char **argv) no_more_options = 1; /* Stop parsing. */ do_not_setup_keys = 1; break; - + case aDeleteKey: set_cmd (&cmd, aDeleteKey); /*greeting=1;*/ @@ -1061,45 +1060,45 @@ main ( int argc, char **argv) case aDetachedSign: detached_sig = 1; - set_cmd (&cmd, aSign ); + set_cmd (&cmd, aSign ); break; case aKeygen: set_cmd (&cmd, aKeygen); - greeting=1; + greeting=1; do_not_setup_keys = 1; break; - case aImport: - case aSendKeys: - case aRecvKeys: - case aExport: - case aExportSecretKeyP12: + case aImport: + case aSendKeys: + case aRecvKeys: + case aExport: + case aExportSecretKeyP12: case aDumpKeys: case aDumpChain: - case aDumpExternalKeys: - case aDumpSecretKeys: + case aDumpExternalKeys: + case aDumpSecretKeys: case aListKeys: - case aListExternalKeys: - case aListSecretKeys: - case aListChain: - case aLearnCard: - case aPasswd: + case aListExternalKeys: + case aListSecretKeys: + case aListChain: + case aLearnCard: + case aPasswd: case aKeydbClearSomeCertFlags: do_not_setup_keys = 1; set_cmd (&cmd, pargs.r_opt); break; - case aEncr: + case aEncr: recp_required = 1; set_cmd (&cmd, pargs.r_opt); break; case aSym: - case aDecrypt: - case aSign: - case aClearsign: - case aVerify: + case aDecrypt: + case aSign: + case aClearsign: + case aVerify: set_cmd (&cmd, pargs.r_opt); break; @@ -1107,15 +1106,15 @@ main ( int argc, char **argv) case oArmor: ctrl.create_pem = 1; break; - case oBase64: + case oBase64: ctrl.create_pem = 0; ctrl.create_base64 = 1; break; - case oNoArmor: + case oNoArmor: ctrl.create_pem = 0; ctrl.create_base64 = 0; break; - + case oP12Charset: opt.p12_charset = pargs.r.ret_str; break; @@ -1160,8 +1159,8 @@ main ( int argc, char **argv) ctrl.use_ocsp = opt.enable_ocsp = 1; break; - case oIncludeCerts: - ctrl.include_certs = default_include_certs = pargs.r.ret_int; + case oIncludeCerts: + ctrl.include_certs = default_include_certs = pargs.r.ret_int; break; case oPolicyFile: @@ -1178,14 +1177,14 @@ main ( int argc, char **argv) case oEnablePolicyChecks: opt.no_policy_check = 0; break; - + case oAutoIssuerKeyRetrieve: opt.auto_issuer_key_retrieve = 1; break; case oOutput: opt.outfile = pargs.r.ret_str; break; - + case oQuiet: opt.quiet = 1; break; case oNoTTY: /* fixme:tty_no_terminal(1);*/ break; case oDryRun: opt.dry_run = 1; break; @@ -1200,17 +1199,17 @@ main ( int argc, char **argv) break; case oLogFile: logfile = pargs.r.ret_str; break; - case oNoLogFile: logfile = NULL; break; + case oNoLogFile: logfile = NULL; break; case oAuditLog: auditlog = pargs.r.ret_str; break; case oHtmlAuditLog: htmlauditlog = pargs.r.ret_str; break; - case oBatch: + case oBatch: opt.batch = 1; greeting = 0; break; case oNoBatch: opt.batch = 0; break; - + case oAnswerYes: opt.answer_yes = 1; break; case oAnswerNo: opt.answer_no = 1; break; @@ -1271,12 +1270,12 @@ main ( int argc, char **argv) case oDisableDirmngr: opt.disable_dirmngr = 1; break; case oPreferSystemDirmngr: opt.prefer_system_dirmngr = 1; break; case oProtectToolProgram: - opt.protect_tool_program = pargs.r.ret_str; + opt.protect_tool_program = pargs.r.ret_str; break; - + case oFakedSystemTime: { - time_t faked_time = isotime2epoch (pargs.r.ret_str); + time_t faked_time = isotime2epoch (pargs.r.ret_str); if (faked_time == (time_t)(-1)) faked_time = (time_t)strtoul (pargs.r.ret_str, NULL, 10); gnupg_set_time (faked_time, 0); @@ -1332,20 +1331,20 @@ main ( int argc, char **argv) break; case oNoSecmemWarn: - gcry_control (GCRYCTL_DISABLE_SECMEM_WARN); + gcry_control (GCRYCTL_DISABLE_SECMEM_WARN); break; case oCipherAlgo: opt.def_cipher_algoid = pargs.r.ret_str; break; - case oDisableCipherAlgo: + case oDisableCipherAlgo: { int algo = gcry_cipher_map_name (pargs.r.ret_str); gcry_cipher_ctl (NULL, GCRYCTL_DISABLE_ALGO, &algo, sizeof algo); } break; - case oDisablePubkeyAlgo: + case oDisablePubkeyAlgo: { int algo = gcry_pk_map_name (pargs.r.ret_str); gcry_pk_ctl (GCRYCTL_DISABLE_ALGO,&algo, sizeof algo ); @@ -1356,7 +1355,7 @@ main ( int argc, char **argv) forced_digest_algo = pargs.r.ret_str; break; - case oExtraDigestAlgo: + case oExtraDigestAlgo: extra_digest_algo = pargs.r.ret_str; break; @@ -1390,8 +1389,8 @@ main ( int argc, char **argv) add_to_strlist (&opt.ignored_cert_extensions, pargs.r.ret_str); break; - default: - pargs.err = configfp? ARGPARSE_PRINT_WARNING:ARGPARSE_PRINT_ERROR; + default: + pargs.err = configfp? ARGPARSE_PRINT_WARNING:ARGPARSE_PRINT_ERROR; break; } } @@ -1420,7 +1419,7 @@ main ( int argc, char **argv) if (nogreeting) greeting = 0; - + if (greeting) { fprintf(stderr, "%s %s; %s\n", @@ -1459,7 +1458,7 @@ main ( int argc, char **argv) dump_isotime (tbuf); log_printf ("\n"); } - + /*FIXME if (opt.batch) */ /* tty_batchmode (1); */ @@ -1497,7 +1496,7 @@ main ( int argc, char **argv) opt.def_cipher_algoid = "1.3.6.1.4.1.11591.13.2.42"; else if (!strcmp (opt.def_cipher_algoid, "SEED") ) opt.def_cipher_algoid = "1.2.410.200004.1.4"; - else if (!strcmp (opt.def_cipher_algoid, "CAMELLIA") + else if (!strcmp (opt.def_cipher_algoid, "CAMELLIA") || !strcmp (opt.def_cipher_algoid, "CAMELLIA128") ) opt.def_cipher_algoid = "1.2.392.200011.61.1.1.1.2"; else if (!strcmp (opt.def_cipher_algoid, "CAMELLIA192") ) @@ -1527,18 +1526,18 @@ main ( int argc, char **argv) if (log_get_errorcount(0)) gpgsm_exit(2); - + /* Set the random seed file. */ - if (use_random_seed) + if (use_random_seed) { char *p = make_filename (opt.homedir, "random_seed", NULL); gcry_control (GCRYCTL_SET_RANDOM_SEED_FILE, p); xfree(p); } - + if (!cmd && opt.fingerprint && !with_fpr) set_cmd (&cmd, aListKeys); - + /* Add default keybox. */ if (!nrings && default_keyring) { @@ -1549,7 +1548,7 @@ main ( int argc, char **argv) { /* Import the standard certificates for a new default keybox. */ char *filelist[2]; - + filelist[0] = make_filename (gnupg_datadir (),"com-certs.pem", NULL); filelist[1] = NULL; if (!access (filelist[0], F_OK)) @@ -1571,7 +1570,7 @@ main ( int argc, char **argv) { switch (cmd) { - case aEncr: + case aEncr: case aSign: case aDecrypt: case aVerify: @@ -1603,7 +1602,7 @@ main ( int argc, char **argv) get_inv_recpsgnr_code (rc), sl->d, NULL); } } - + /* Build the recipient list. We first add the regular ones and then the encrypt-to ones because the underlying function will silently ignore duplicates and we can't allow to keep a duplicate which is @@ -1622,13 +1621,11 @@ main ( int argc, char **argv) if (log_get_errorcount(0)) gpgsm_exit(1); /* Must stop for invalid recipients. */ - - fname = argc? *argv : NULL; - + /* Dispatch command. */ switch (cmd) { - case aGPGConfList: + case aGPGConfList: { /* List options and default values in the GPG Conf format. */ char *config_filename_esc = percent_escape (opt.config_filename, NULL); @@ -1698,7 +1695,7 @@ main ( int argc, char **argv) set_binary (stdin); if (!argc) /* Source is stdin. */ - gpgsm_encrypt (&ctrl, recplist, 0, fp); + gpgsm_encrypt (&ctrl, recplist, 0, fp); else if (argc == 1) /* Source is the given file. */ gpgsm_encrypt (&ctrl, recplist, open_read (*argv), fp); else @@ -1717,10 +1714,10 @@ main ( int argc, char **argv) signing because that is what gpg does.*/ set_binary (stdin); if (!argc) /* Create from stdin. */ - gpgsm_sign (&ctrl, signerlist, 0, detached_sig, fp); + gpgsm_sign (&ctrl, signerlist, 0, detached_sig, fp); else if (argc == 1) /* From file. */ gpgsm_sign (&ctrl, signerlist, - open_read (*argv), detached_sig, fp); + open_read (*argv), detached_sig, fp); else wrong_args ("--sign [datafile]"); @@ -1728,7 +1725,7 @@ main ( int argc, char **argv) fclose (fp); } break; - + case aSignEncr: /* sign and encrypt the given file */ log_error ("this command has not yet been implemented\n"); break; @@ -1752,7 +1749,7 @@ main ( int argc, char **argv) else if (argc == 1) gpgsm_verify (&ctrl, open_read (*argv), -1, fp); /* std signature */ else if (argc == 2) /* detached signature (sig, detached) */ - gpgsm_verify (&ctrl, open_read (*argv), open_read (argv[1]), NULL); + gpgsm_verify (&ctrl, open_read (*argv), open_read (argv[1]), NULL); else wrong_args ("--verify [signature [detached_data]]"); @@ -1801,7 +1798,7 @@ main ( int argc, char **argv) { case aListChain: case aListKeys: mode = (0 | 0 | (1<<6)); break; - case aDumpChain: + case aDumpChain: case aDumpKeys: mode = (256 | 0 | (1<<6)); break; case aListExternalKeys: mode = (0 | 0 | (1<<7)); break; case aDumpExternalKeys: mode = (256 | 0 | (1<<7)); break; @@ -1828,13 +1825,13 @@ main ( int argc, char **argv) if (opt.batch) { if (!argc) /* Create from stdin. */ - fpin = open_es_fread ("-"); + fpin = open_es_fread ("-"); else if (argc == 1) /* From file. */ - fpin = open_es_fread (*argv); + fpin = open_es_fread (*argv); else wrong_args ("--gen-key --batch [parmfile]"); } - + fpout = open_fwrite (opt.outfile?opt.outfile:"-"); if (fpin) @@ -1877,7 +1874,7 @@ main ( int argc, char **argv) fclose (fp); } break; - + case aSendKeys: case aRecvKeys: log_error ("this command has not yet been implemented\n"); @@ -1909,7 +1906,7 @@ main ( int argc, char **argv) ; else if (!(grip = gpgsm_get_keygrip_hexstring (cert))) rc = gpg_error (GPG_ERR_BUG); - else + else { char *desc = gpgsm_format_keydesc (cert); rc = gpgsm_agent_passwd (&ctrl, grip, desc); @@ -1947,7 +1944,7 @@ main ( int argc, char **argv) es_fclose (auditfp); es_fclose (htmlauditfp); } - + /* cleanup */ keyserver_list_free (opt.keyserver); opt.keyserver = NULL; @@ -1995,7 +1992,7 @@ gpgsm_init_default_ctrl (struct server_control_s *ctrl) int gpgsm_parse_validation_model (const char *model) -{ +{ if (!ascii_strcasecmp (model, "shell") ) return 0; else if ( !ascii_strcasecmp (model, "chain") ) @@ -2013,11 +2010,11 @@ check_special_filename (const char *fname, int for_write) if (allow_special_filenames && fname && *fname == '-' && fname[1] == '&' ) { int i; - + fname += 2; for (i=0; isdigit (fname[i]); i++ ) ; - if ( !fname[i] ) + if ( !fname[i] ) return translate_sys2libc_fd_int (atoi (fname), for_write); } return -1; @@ -2028,7 +2025,7 @@ check_special_filename (const char *fname, int for_write) /* Open the FILENAME for read and return the filedescriptor. Stop with an error message in case of problems. "-" denotes stdin and if special filenames are allowed the given fd is opened instead. */ -static int +static int open_read (const char *filename) { int fd; @@ -2177,7 +2174,7 @@ run_protect_tool (int argc, char **argv) for (i=1; argc; i++, argc--, argv++) av[i] = *argv; av[i] = NULL; - execv (pgm, av); + execv (pgm, av); log_error ("error executing `%s': %s\n", pgm, strerror (errno)); #endif /*HAVE_W32_SYSTEM*/ gpgsm_exit (2); diff --git a/sm/keydb.c b/sm/keydb.c index 26f195cbb..37f791e6b 100644 --- a/sm/keydb.c +++ b/sm/keydb.c @@ -29,7 +29,7 @@ #include "gpgsm.h" #include "../kbx/keybox.h" -#include "keydb.h" +#include "keydb.h" #include "i18n.h" static int active_handles; @@ -71,7 +71,7 @@ static void unlock_all (KEYDB_HANDLE hd); * Register a resource (which currently may only be a keybox file). * The first keybox which is added by this function is created if it * does not exist. If AUTO_CREATED is not NULL it will be set to true - * if the function has created a a new keybox. + * if the function has created a a new keybox. */ int keydb_add_resource (const char *url, int force, int secret, int *auto_created) @@ -79,10 +79,9 @@ keydb_add_resource (const char *url, int force, int secret, int *auto_created) static int any_secret, any_public; const char *resname = url; char *filename = NULL; - int rc = 0; + int rc = 0; FILE *fp; KeydbResourceType rt = KEYDB_RESOURCE_TYPE_NONE; - const char *created_fname = NULL; if (auto_created) *auto_created = 0; @@ -91,7 +90,7 @@ keydb_add_resource (const char *url, int force, int secret, int *auto_created) gnupg-kbx:filename := this is a plain keybox filename := See what is is, but create as plain keybox. */ - if (strlen (resname) > 10) + if (strlen (resname) > 10) { if (!strncmp (resname, "gnupg-kbx:", 10) ) { @@ -117,20 +116,20 @@ keydb_add_resource (const char *url, int force, int secret, int *auto_created) } else filename = xstrdup (resname); - + if (!force) force = secret? !any_secret : !any_public; - + /* see whether we can determine the filetype */ if (rt == KEYDB_RESOURCE_TYPE_NONE) { FILE *fp2 = fopen( filename, "rb" ); - + if (fp2) { u32 magic; - + /* FIXME: check for the keybox magic */ - if (fread( &magic, 4, 1, fp2) == 1 ) + if (fread( &magic, 4, 1, fp2) == 1 ) { if (magic == 0x13579ace || magic == 0xce9a5713) ; /* GDBM magic - no more support */ @@ -144,14 +143,14 @@ keydb_add_resource (const char *url, int force, int secret, int *auto_created) else /* no file yet: create ring */ rt = KEYDB_RESOURCE_TYPE_KEYBOX; } - + switch (rt) { case KEYDB_RESOURCE_TYPE_NONE: log_error ("unknown type of key resource `%s'\n", url ); rc = gpg_error (GPG_ERR_GENERAL); goto leave; - + case KEYDB_RESOURCE_TYPE_KEYBOX: fp = fopen (filename, "rb"); if (!fp && !force) @@ -159,13 +158,13 @@ keydb_add_resource (const char *url, int force, int secret, int *auto_created) rc = gpg_error (gpg_err_code_from_errno (errno)); goto leave; } - + if (!fp) { /* no file */ #if 0 /* no autocreate of the homedirectory yet */ { char *last_slash_in_filename; - + last_slash_in_filename = strrchr (filename, DIRSEP_C); *last_slash_in_filename = 0; if (access (filename, F_OK)) @@ -194,7 +193,6 @@ keydb_add_resource (const char *url, int force, int secret, int *auto_created) if (!opt.quiet) log_info (_("keybox `%s' created\n"), filename); - created_fname = filename; if (auto_created) *auto_created = 1; } @@ -202,13 +200,13 @@ keydb_add_resource (const char *url, int force, int secret, int *auto_created) fp = NULL; /* now register the file */ { - + void *token = keybox_register_file (filename, secret); if (!token) ; /* already registered - ignore it */ else if (used_resources >= MAX_KEYDB_RESOURCES) rc = gpg_error (GPG_ERR_RESOURCE_LIMIT); - else + else { all_resources[used_resources].type = rt; all_resources[used_resources].u.kr = NULL; /* Not used here */ @@ -224,7 +222,7 @@ keydb_add_resource (const char *url, int force, int secret, int *auto_created) if (!make_dotlock (all_resources[used_resources].lockhandle, 0)) { KEYBOX_HANDLE kbxhd = keybox_new (token, secret); - + if (kbxhd) { keybox_compress (kbxhd); @@ -232,7 +230,7 @@ keydb_add_resource (const char *url, int force, int secret, int *auto_created) } release_dotlock (all_resources[used_resources].lockhandle); } - + used_resources++; } } @@ -264,10 +262,10 @@ keydb_new (int secret) { KEYDB_HANDLE hd; int i, j; - + hd = xcalloc (1, sizeof *hd); hd->found = -1; - + assert (used_resources <= MAX_KEYDB_RESOURCES); for (i=j=0; i < used_resources; i++) { @@ -283,7 +281,7 @@ keydb_new (int secret) hd->active[j].secret = all_resources[i].secret; hd->active[j].lockhandle = all_resources[i].lockhandle; hd->active[j].u.kr = keybox_new (all_resources[i].token, secret); - if (!hd->active[j].u.kr) + if (!hd->active[j].u.kr) { xfree (hd); return NULL; /* fixme: release all previously allocated handles*/ @@ -293,16 +291,16 @@ keydb_new (int secret) } } hd->used = j; - + active_handles++; return hd; } -void +void keydb_release (KEYDB_HANDLE hd) { int i; - + if (!hd) return; assert (active_handles > 0); @@ -311,7 +309,7 @@ keydb_release (KEYDB_HANDLE hd) unlock_all (hd); for (i=0; i < hd->used; i++) { - switch (hd->active[i].type) + switch (hd->active[i].type) { case KEYDB_RESOURCE_TYPE_NONE: break; @@ -336,27 +334,27 @@ keydb_get_resource_name (KEYDB_HANDLE hd) { int idx; const char *s = NULL; - - if (!hd) + + if (!hd) return NULL; - if ( hd->found >= 0 && hd->found < hd->used) + if ( hd->found >= 0 && hd->found < hd->used) idx = hd->found; - else if ( hd->current >= 0 && hd->current < hd->used) + else if ( hd->current >= 0 && hd->current < hd->used) idx = hd->current; else idx = 0; - switch (hd->active[idx].type) + switch (hd->active[idx].type) { case KEYDB_RESOURCE_TYPE_NONE: - s = NULL; + s = NULL; break; case KEYDB_RESOURCE_TYPE_KEYBOX: s = keybox_get_resource_name (hd->active[idx].u.kr); break; } - + return s? s: ""; } @@ -374,7 +372,7 @@ keydb_set_ephemeral (KEYDB_HANDLE hd, int yes) { for (i=0; i < hd->used; i++) { - switch (hd->active[i].type) + switch (hd->active[i].type) { case KEYDB_RESOURCE_TYPE_NONE: break; @@ -384,7 +382,7 @@ keydb_set_ephemeral (KEYDB_HANDLE hd, int yes) } } } - + i = hd->is_ephemeral; hd->is_ephemeral = yes; return i; @@ -407,7 +405,7 @@ keydb_lock (KEYDB_HANDLE hd) -static int +static int lock_all (KEYDB_HANDLE hd) { int i, rc = 0; @@ -415,9 +413,9 @@ lock_all (KEYDB_HANDLE hd) /* Fixme: This locking scheme may lead to deadlock if the resources are not added in the same order by all processes. We are currently only allowing one resource so it is not a problem. */ - for (i=0; i < hd->used; i++) + for (i=0; i < hd->used; i++) { - switch (hd->active[i].type) + switch (hd->active[i].type) { case KEYDB_RESOURCE_TYPE_NONE: break; @@ -430,12 +428,12 @@ lock_all (KEYDB_HANDLE hd) break; } - if (rc) + if (rc) { /* revert the already set locks */ - for (i--; i >= 0; i--) + for (i--; i >= 0; i--) { - switch (hd->active[i].type) + switch (hd->active[i].type) { case KEYDB_RESOURCE_TYPE_NONE: break; @@ -459,13 +457,13 @@ static void unlock_all (KEYDB_HANDLE hd) { int i; - + if (!hd->locked) return; - for (i=hd->used-1; i >= 0; i--) + for (i=hd->used-1; i >= 0; i--) { - switch (hd->active[i].type) + switch (hd->active[i].type) { case KEYDB_RESOURCE_TYPE_NONE: break; @@ -483,7 +481,7 @@ unlock_all (KEYDB_HANDLE hd) /* * Return the last found keybox. Caller must free it. * The returned keyblock has the kbode flag bit 0 set for the node with - * the public key used to locate the keyblock or flag bit 1 set for + * the public key used to locate the keyblock or flag bit 1 set for * the user ID node. */ int @@ -494,7 +492,7 @@ keydb_get_keyblock (KEYDB_HANDLE hd, KBNODE *ret_kb) if (!hd) return G10ERR_INV_ARG; - if ( hd->found < 0 || hd->found >= hd->used) + if ( hd->found < 0 || hd->found >= hd->used) return -1; /* nothing found */ switch (hd->active[hd->found].type) { @@ -509,7 +507,7 @@ keydb_get_keyblock (KEYDB_HANDLE hd, KBNODE *ret_kb) return rc; } -/* +/* * update the current keyblock with KB */ int @@ -520,7 +518,7 @@ keydb_update_keyblock (KEYDB_HANDLE hd, KBNODE kb) if (!hd) return G10ERR_INV_ARG; - if ( hd->found < 0 || hd->found >= hd->used) + if ( hd->found < 0 || hd->found >= hd->used) return -1; /* nothing found */ if( opt.dry_run ) @@ -543,8 +541,8 @@ keydb_update_keyblock (KEYDB_HANDLE hd, KBNODE kb) } -/* - * Insert a new KB into one of the resources. +/* + * Insert a new KB into one of the resources. */ int keydb_insert_keyblock (KEYDB_HANDLE hd, KBNODE kb) @@ -552,15 +550,15 @@ keydb_insert_keyblock (KEYDB_HANDLE hd, KBNODE kb) int rc = -1; int idx; - if (!hd) + if (!hd) return G10ERR_INV_ARG; if( opt.dry_run ) return 0; - if ( hd->found >= 0 && hd->found < hd->used) + if ( hd->found >= 0 && hd->found < hd->used) idx = hd->found; - else if ( hd->current >= 0 && hd->current < hd->used) + else if ( hd->current >= 0 && hd->current < hd->used) idx = hd->current; else return G10ERR_GENERAL; @@ -598,11 +596,11 @@ keydb_get_cert (KEYDB_HANDLE hd, ksba_cert_t *r_cert) if (!hd) return gpg_error (GPG_ERR_INV_VALUE); - - if ( hd->found < 0 || hd->found >= hd->used) + + if ( hd->found < 0 || hd->found >= hd->used) return -1; /* nothing found */ - - switch (hd->active[hd->found].type) + + switch (hd->active[hd->found].type) { case KEYDB_RESOURCE_TYPE_NONE: rc = gpg_error (GPG_ERR_GENERAL); /* oops */ @@ -611,7 +609,7 @@ keydb_get_cert (KEYDB_HANDLE hd, ksba_cert_t *r_cert) rc = keybox_get_cert (hd->active[hd->found].u.kr, r_cert); break; } - + return rc; } @@ -626,11 +624,11 @@ keydb_get_flags (KEYDB_HANDLE hd, int which, int idx, unsigned int *value) if (!hd) return gpg_error (GPG_ERR_INV_VALUE); - - if ( hd->found < 0 || hd->found >= hd->used) + + if ( hd->found < 0 || hd->found >= hd->used) return gpg_error (GPG_ERR_NOTHING_FOUND); - - switch (hd->active[hd->found].type) + + switch (hd->active[hd->found].type) { case KEYDB_RESOURCE_TYPE_NONE: err = gpg_error (GPG_ERR_GENERAL); /* oops */ @@ -639,7 +637,7 @@ keydb_get_flags (KEYDB_HANDLE hd, int which, int idx, unsigned int *value) err = keybox_get_flags (hd->active[hd->found].u.kr, which, idx, value); break; } - + return err; } @@ -656,14 +654,14 @@ keydb_set_flags (KEYDB_HANDLE hd, int which, int idx, unsigned int value) if (!hd) return gpg_error (GPG_ERR_INV_VALUE); - - if ( hd->found < 0 || hd->found >= hd->used) + + if ( hd->found < 0 || hd->found >= hd->used) return gpg_error (GPG_ERR_NOTHING_FOUND); - + if (!hd->locked) return gpg_error (GPG_ERR_NOT_LOCKED); - switch (hd->active[hd->found].type) + switch (hd->active[hd->found].type) { case KEYDB_RESOURCE_TYPE_NONE: err = gpg_error (GPG_ERR_GENERAL); /* oops */ @@ -672,12 +670,12 @@ keydb_set_flags (KEYDB_HANDLE hd, int which, int idx, unsigned int value) err = keybox_set_flags (hd->active[hd->found].u.kr, which, idx, value); break; } - + return err; } -/* - * Insert a new Certificate into one of the resources. +/* + * Insert a new Certificate into one of the resources. */ int keydb_insert_cert (KEYDB_HANDLE hd, ksba_cert_t cert) @@ -685,16 +683,16 @@ keydb_insert_cert (KEYDB_HANDLE hd, ksba_cert_t cert) int rc = -1; int idx; unsigned char digest[20]; - - if (!hd) + + if (!hd) return gpg_error (GPG_ERR_INV_VALUE); if (opt.dry_run) return 0; - - if ( hd->found >= 0 && hd->found < hd->used) + + if ( hd->found >= 0 && hd->found < hd->used) idx = hd->found; - else if ( hd->current >= 0 && hd->current < hd->used) + else if ( hd->current >= 0 && hd->current < hd->used) idx = hd->current; else return gpg_error (GPG_ERR_GENERAL); @@ -704,7 +702,7 @@ keydb_insert_cert (KEYDB_HANDLE hd, ksba_cert_t cert) gpgsm_get_fingerprint (cert, GCRY_MD_SHA1, digest, NULL); /* kludge*/ - switch (hd->active[idx].type) + switch (hd->active[idx].type) { case KEYDB_RESOURCE_TYPE_NONE: rc = gpg_error (GPG_ERR_GENERAL); @@ -713,7 +711,7 @@ keydb_insert_cert (KEYDB_HANDLE hd, ksba_cert_t cert) rc = keybox_insert_cert (hd->active[idx].u.kr, cert, digest); break; } - + unlock_all (hd); return rc; } @@ -726,11 +724,11 @@ keydb_update_cert (KEYDB_HANDLE hd, ksba_cert_t cert) { int rc = 0; unsigned char digest[20]; - + if (!hd) return gpg_error (GPG_ERR_INV_VALUE); - if ( hd->found < 0 || hd->found >= hd->used) + if ( hd->found < 0 || hd->found >= hd->used) return -1; /* nothing found */ if (opt.dry_run) @@ -742,7 +740,7 @@ keydb_update_cert (KEYDB_HANDLE hd, ksba_cert_t cert) gpgsm_get_fingerprint (cert, GCRY_MD_SHA1, digest, NULL); /* kludge*/ - switch (hd->active[hd->found].type) + switch (hd->active[hd->found].type) { case KEYDB_RESOURCE_TYPE_NONE: rc = gpg_error (GPG_ERR_GENERAL); /* oops */ @@ -757,25 +755,25 @@ keydb_update_cert (KEYDB_HANDLE hd, ksba_cert_t cert) } -/* +/* * The current keyblock or cert will be deleted. */ int keydb_delete (KEYDB_HANDLE hd, int unlock) { int rc = -1; - + if (!hd) return gpg_error (GPG_ERR_INV_VALUE); - if ( hd->found < 0 || hd->found >= hd->used) + if ( hd->found < 0 || hd->found >= hd->used) return -1; /* nothing found */ if( opt.dry_run ) return 0; if (!hd->locked) - return gpg_error (GPG_ERR_NOT_LOCKED); + return gpg_error (GPG_ERR_NOT_LOCKED); switch (hd->active[hd->found].type) { @@ -797,7 +795,7 @@ keydb_delete (KEYDB_HANDLE hd, int unlock) /* * Locate the default writable key resource, so that the next * operation (which is only relevant for inserts) will be done on this - * resource. + * resource. */ int keydb_locate_writable (KEYDB_HANDLE hd, const char *reserved) @@ -805,17 +803,17 @@ keydb_locate_writable (KEYDB_HANDLE hd, const char *reserved) int rc; (void)reserved; - + if (!hd) return gpg_error (GPG_ERR_INV_VALUE); - + rc = keydb_search_reset (hd); /* this does reset hd->current */ if (rc) return rc; - - for ( ; hd->current >= 0 && hd->current < hd->used; hd->current++) + + for ( ; hd->current >= 0 && hd->current < hd->used; hd->current++) { - switch (hd->active[hd->current].type) + switch (hd->active[hd->current].type) { case KEYDB_RESOURCE_TYPE_NONE: BUG(); @@ -826,7 +824,7 @@ keydb_locate_writable (KEYDB_HANDLE hd, const char *reserved) break; } } - + return -1; } @@ -837,7 +835,7 @@ void keydb_rebuild_caches (void) { int i; - + for (i=0; i < used_resources; i++) { if (all_resources[i].secret) @@ -858,23 +856,23 @@ keydb_rebuild_caches (void) -/* +/* * Start the next search on this handle right at the beginning */ -int +int keydb_search_reset (KEYDB_HANDLE hd) { int i, rc = 0; - + if (!hd) return gpg_error (GPG_ERR_INV_VALUE); - hd->current = 0; + hd->current = 0; hd->found = -1; /* and reset all resources */ - for (i=0; !rc && i < hd->used; i++) + for (i=0; !rc && i < hd->used; i++) { - switch (hd->active[i].type) + switch (hd->active[i].type) { case KEYDB_RESOURCE_TYPE_NONE: break; @@ -887,21 +885,21 @@ keydb_search_reset (KEYDB_HANDLE hd) all modules*/ } -/* +/* * Search through all keydb resources, starting at the current position, * for a keyblock which contains one of the keys described in the DESC array. */ -int +int keydb_search (KEYDB_HANDLE hd, KEYDB_SEARCH_DESC *desc, size_t ndesc) { int rc = -1; - + if (!hd) return gpg_error (GPG_ERR_INV_VALUE); - while (rc == -1 && hd->current >= 0 && hd->current < hd->used) + while (rc == -1 && hd->current >= 0 && hd->current < hd->used) { - switch (hd->active[hd->current].type) + switch (hd->active[hd->current].type) { case KEYDB_RESOURCE_TYPE_NONE: BUG(); /* we should never see it here */ @@ -911,12 +909,12 @@ keydb_search (KEYDB_HANDLE hd, KEYDB_SEARCH_DESC *desc, size_t ndesc) break; } if (rc == -1) /* EOF -> switch to next resource */ - hd->current++; + hd->current++; else if (!rc) hd->found = hd->current; } - - return rc; + + return rc; } @@ -924,7 +922,7 @@ int keydb_search_first (KEYDB_HANDLE hd) { KEYDB_SEARCH_DESC desc; - + memset (&desc, 0, sizeof desc); desc.mode = KEYDB_SEARCH_MODE_FIRST; return keydb_search (hd, &desc, 1); @@ -934,7 +932,7 @@ int keydb_search_next (KEYDB_HANDLE hd) { KEYDB_SEARCH_DESC desc; - + memset (&desc, 0, sizeof desc); desc.mode = KEYDB_SEARCH_MODE_NEXT; return keydb_search (hd, &desc, 1); @@ -946,7 +944,7 @@ keydb_search_kid (KEYDB_HANDLE hd, u32 *kid) KEYDB_SEARCH_DESC desc; (void)kid; - + memset (&desc, 0, sizeof desc); desc.mode = KEYDB_SEARCH_MODE_LONG_KID; /* desc.u.kid[0] = kid[0]; */ @@ -958,7 +956,7 @@ int keydb_search_fpr (KEYDB_HANDLE hd, const byte *fpr) { KEYDB_SEARCH_DESC desc; - + memset (&desc, 0, sizeof desc); desc.mode = KEYDB_SEARCH_MODE_FPR; memcpy (desc.u.fpr, fpr, 20); @@ -970,7 +968,7 @@ keydb_search_issuer (KEYDB_HANDLE hd, const char *issuer) { KEYDB_SEARCH_DESC desc; int rc; - + memset (&desc, 0, sizeof desc); desc.mode = KEYDB_SEARCH_MODE_ISSUER; desc.u.name = issuer; @@ -985,7 +983,7 @@ keydb_search_issuer_sn (KEYDB_HANDLE hd, KEYDB_SEARCH_DESC desc; int rc; const unsigned char *s; - + memset (&desc, 0, sizeof desc); desc.mode = KEYDB_SEARCH_MODE_ISSUER_SN; s = serial; @@ -1007,7 +1005,7 @@ keydb_search_subject (KEYDB_HANDLE hd, const char *name) { KEYDB_SEARCH_DESC desc; int rc; - + memset (&desc, 0, sizeof desc); desc.mode = KEYDB_SEARCH_MODE_SUBJECT; desc.u.name = name; @@ -1017,15 +1015,15 @@ keydb_search_subject (KEYDB_HANDLE hd, const char *name) static int -classify_user_id (const char *name, +classify_user_id (const char *name, KEYDB_SEARCH_DESC *desc, int *force_exact ) { const char *s; int hexprefix = 0; int hexlength; - int mode = 0; - + int mode = 0; + /* clear the structure so that the mode field is set to zero unless * we set it to the correct value right at the end of this function */ memset (desc, 0, sizeof *desc); @@ -1034,7 +1032,7 @@ classify_user_id (const char *name, for(s = name; *s && spacep (s); s++ ) ; - switch (*s) + switch (*s) { case 0: /* empty string is an error */ return 0; @@ -1084,9 +1082,9 @@ classify_user_id (const char *name, break; case '#': - { + { const char *si; - + s++; if ( *s == '/') { /* "#/" indicates an issuer's DN */ @@ -1096,7 +1094,7 @@ classify_user_id (const char *name, desc->u.name = s; mode = KEYDB_SEARCH_MODE_ISSUER; } - else + else { /* serialnumber + optional issuer ID */ for (si=s; *si && *si != '/'; si++) { @@ -1120,10 +1118,10 @@ classify_user_id (const char *name, break; case ':': /*Unified fingerprint */ - { + { const char *se, *si; int i; - + se = strchr (++s,':'); if (!se) return 0; @@ -1134,21 +1132,21 @@ classify_user_id (const char *name, } if (i != 32 && i != 40) return 0; /* invalid length of fpr*/ - for (i=0,si=s; si < se; i++, si +=2) + for (i=0,si=s; si < se; i++, si +=2) desc->u.fpr[i] = hextobyte(si); for (; i < 20; i++) desc->u.fpr[i]= 0; s = se + 1; mode = KEYDB_SEARCH_MODE_FPR; - } + } break; case '&': /* Keygrip*/ - { + { if (hex2bin (s+1, desc->u.grip, 20) < 0) return 0; /* Invalid. */ mode = KEYDB_SEARCH_MODE_KEYGRIP; - } + } break; default: @@ -1164,17 +1162,17 @@ classify_user_id (const char *name, *force_exact = 1; hexlength++; /* just for the following check */ } - + /* check if a hexadecimal number is terminated by EOS or blank */ - if (hexlength && s[hexlength] && !spacep (s+hexlength)) + if (hexlength && s[hexlength] && !spacep (s+hexlength)) { if (hexprefix) /* a "0x" prefix without correct */ return 0; /* termination is an error */ /* The first chars looked like a hex number, but really is not */ - hexlength = 0; + hexlength = 0; } - + if (*force_exact) hexlength--; /* remove the bang */ @@ -1185,10 +1183,10 @@ classify_user_id (const char *name, if (hexlength == 9) s++; kid = strtoul( s, NULL, 16 ); - desc->u.kid[4] = kid >> 24; - desc->u.kid[5] = kid >> 16; - desc->u.kid[6] = kid >> 8; - desc->u.kid[7] = kid; + desc->u.kid[4] = kid >> 24; + desc->u.kid[5] = kid >> 16; + desc->u.kid[6] = kid >> 8; + desc->u.kid[7] = kid; mode = KEYDB_SEARCH_MODE_SHORT_KID; } else if (hexlength == 16 @@ -1201,14 +1199,14 @@ classify_user_id (const char *name, mem2str(buf, s, 9 ); kid0 = strtoul (buf, NULL, 16); kid1 = strtoul (s+8, NULL, 16); - desc->u.kid[0] = kid0 >> 24; - desc->u.kid[1] = kid0 >> 16; - desc->u.kid[2] = kid0 >> 8; - desc->u.kid[3] = kid0; - desc->u.kid[4] = kid1 >> 24; - desc->u.kid[5] = kid1 >> 16; - desc->u.kid[6] = kid1 >> 8; - desc->u.kid[7] = kid1; + desc->u.kid[0] = kid0 >> 24; + desc->u.kid[1] = kid0 >> 16; + desc->u.kid[2] = kid0 >> 8; + desc->u.kid[3] = kid0; + desc->u.kid[4] = kid1 >> 24; + desc->u.kid[5] = kid1 >> 16; + desc->u.kid[6] = kid1 >> 8; + desc->u.kid[7] = kid1; mode = KEYDB_SEARCH_MODE_LONG_KID; } else if (hexlength == 32 @@ -1217,8 +1215,8 @@ classify_user_id (const char *name, int i; if (hexlength == 33) s++; - memset(desc->u.fpr+16, 0, 4); - for (i=0; i < 16; i++, s+=2) + memset(desc->u.fpr+16, 0, 4); + for (i=0; i < 16; i++, s+=2) { int c = hextobyte(s); if (c == -1) @@ -1233,7 +1231,7 @@ classify_user_id (const char *name, int i; if (hexlength == 41) s++; - for (i=0; i < 20; i++, s+=2) + for (i=0; i < 20; i++, s+=2) { int c = hextobyte(s); if (c == -1) @@ -1243,16 +1241,16 @@ classify_user_id (const char *name, mode = KEYDB_SEARCH_MODE_FPR20; } else if (!hexprefix) - { + { /* The fingerprint in an X.509 listing is often delimited by colons, so we try to single this case out. */ mode = 0; hexlength = strspn (s, ":0123456789abcdefABCDEF"); - if (hexlength == 59 && (!s[hexlength] || spacep (s+hexlength))) + if (hexlength == 59 && (!s[hexlength] || spacep (s+hexlength))) { int i; - for (i=0; i < 20; i++, s += 3) + for (i=0; i < 20; i++, s += 3) { int c = hextobyte(s); if (c == -1 || (i < 19 && s[2] != ':')) @@ -1263,10 +1261,10 @@ classify_user_id (const char *name, mode = KEYDB_SEARCH_MODE_FPR20; } if (!mode) /* default is substring search */ - { + { *force_exact = 0; desc->u.name = s; - mode = KEYDB_SEARCH_MODE_SUBSTR; + mode = KEYDB_SEARCH_MODE_SUBSTR; } } else @@ -1274,7 +1272,7 @@ classify_user_id (const char *name, return 0; } } - + desc->mode = mode; return mode; } @@ -1324,7 +1322,7 @@ keydb_store_cert (ksba_cert_t cert, int ephemeral, int *existed) if (ephemeral) keydb_set_ephemeral (kh, 1); - + rc = lock_all (kh); if (rc) return rc; @@ -1359,7 +1357,7 @@ keydb_store_cert (ksba_cert_t cert, int ephemeral, int *existed) keydb_release (kh); return rc; } - keydb_release (kh); + keydb_release (kh); return 0; } @@ -1368,8 +1366,8 @@ keydb_store_cert (ksba_cert_t cert, int ephemeral, int *existed) transaction by locating the certificate in the DB and updating the flags. */ gpg_error_t -keydb_set_cert_flags (ksba_cert_t cert, int ephemeral, - int which, int idx, +keydb_set_cert_flags (ksba_cert_t cert, int ephemeral, + int which, int idx, unsigned int mask, unsigned int value) { KEYDB_HANDLE kh; @@ -1434,7 +1432,7 @@ keydb_set_cert_flags (ksba_cert_t cert, int ephemeral, } } - keydb_release (kh); + keydb_release (kh); return 0; } @@ -1453,7 +1451,7 @@ keydb_clear_some_cert_flags (ctrl_t ctrl, strlist_t names) unsigned int old_value, value; (void)ctrl; - + hd = keydb_new (0); if (!hd) { @@ -1465,7 +1463,7 @@ keydb_clear_some_cert_flags (ctrl_t ctrl, strlist_t names) ndesc = 1; else { - for (sl=names, ndesc=0; sl; sl = sl->next, ndesc++) + for (sl=names, ndesc=0; sl; sl = sl->next, ndesc++) ; } @@ -1479,9 +1477,9 @@ keydb_clear_some_cert_flags (ctrl_t ctrl, strlist_t names) if (!names) desc[0].mode = KEYDB_SEARCH_MODE_FIRST; - else + else { - for (ndesc=0, sl=names; sl; sl = sl->next) + for (ndesc=0, sl=names; sl; sl = sl->next) { rc = keydb_classify_name (sl->d, desc+ndesc); if (rc) @@ -1504,7 +1502,7 @@ keydb_clear_some_cert_flags (ctrl_t ctrl, strlist_t names) while (!(rc = keydb_search (hd, desc, ndesc))) { - if (!names) + if (!names) desc[0].mode = KEYDB_SEARCH_MODE_NEXT; err = keydb_get_flags (hd, KEYBOX_FLAG_VALIDITY, 0, &old_value); @@ -1514,7 +1512,7 @@ keydb_clear_some_cert_flags (ctrl_t ctrl, strlist_t names) gpg_strerror (err)); goto leave; } - + value = (old_value & ~VALIDITY_REVOKED); if (value != old_value) { @@ -1528,7 +1526,7 @@ keydb_clear_some_cert_flags (ctrl_t ctrl, strlist_t names) } if (rc && rc != -1) log_error ("keydb_search failed: %s\n", gpg_strerror (rc)); - + leave: xfree (desc); keydb_release (hd); |