1998-01-12 10:18:17 +00:00
|
|
|
/* trustdb.h - Trust database
|
2005-02-06 17:38:43 +00:00
|
|
|
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004,
|
|
|
|
* 2005 Free Software Foundation, Inc.
|
1998-01-12 10:18:17 +00:00
|
|
|
*
|
1998-12-23 12:41:40 +00:00
|
|
|
* This file is part of GnuPG.
|
1998-01-12 10:18:17 +00:00
|
|
|
*
|
1998-12-23 12:41:40 +00:00
|
|
|
* GnuPG is free software; you can redistribute it and/or modify
|
1998-01-12 10:18:17 +00:00
|
|
|
* it under the terms of the GNU General Public License as published by
|
2007-10-23 10:48:09 +00:00
|
|
|
* the Free Software Foundation; either version 3 of the License, or
|
1998-01-12 10:18:17 +00:00
|
|
|
* (at your option) any later version.
|
|
|
|
*
|
1998-12-23 12:41:40 +00:00
|
|
|
* GnuPG is distributed in the hope that it will be useful,
|
1998-01-12 10:18:17 +00:00
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
*
|
|
|
|
* You should have received a copy of the GNU General Public License
|
2007-10-23 10:48:09 +00:00
|
|
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
1998-01-12 10:18:17 +00:00
|
|
|
*/
|
|
|
|
|
2002-06-29 13:46:34 +00:00
|
|
|
#ifndef G10_TRUSTDB_H
|
|
|
|
#define G10_TRUSTDB_H
|
1998-01-12 10:18:17 +00:00
|
|
|
|
1998-02-18 13:58:46 +00:00
|
|
|
/* Trust values must be sorted in ascending order */
|
|
|
|
#define TRUST_MASK 15
|
2002-06-29 13:46:34 +00:00
|
|
|
#define TRUST_UNKNOWN 0 /* o: not yet calculated/assigned */
|
1998-05-29 11:53:54 +00:00
|
|
|
#define TRUST_EXPIRED 1 /* e: calculation may be invalid */
|
|
|
|
#define TRUST_UNDEFINED 2 /* q: not enough information for calculation */
|
|
|
|
#define TRUST_NEVER 3 /* n: never trust this pubkey */
|
|
|
|
#define TRUST_MARGINAL 4 /* m: marginally trusted */
|
|
|
|
#define TRUST_FULLY 5 /* f: fully trusted */
|
|
|
|
#define TRUST_ULTIMATE 6 /* u: ultimately trusted */
|
1998-02-18 13:58:46 +00:00
|
|
|
/* trust values not covered by the mask */
|
1998-05-29 11:53:54 +00:00
|
|
|
#define TRUST_FLAG_REVOKED 32 /* r: revoked */
|
2002-06-29 13:46:34 +00:00
|
|
|
#define TRUST_FLAG_SUB_REVOKED 64 /* r: revoked but for subkeys */
|
1999-06-29 19:50:54 +00:00
|
|
|
#define TRUST_FLAG_DISABLED 128 /* d: key/uid disabled */
|
2002-06-29 13:46:34 +00:00
|
|
|
#define TRUST_FLAG_PENDING_CHECK 256 /* a check-trustdb is pending */
|
1998-08-05 16:51:59 +00:00
|
|
|
|
2005-04-24 16:05:41 +00:00
|
|
|
#define NAMEHASH_HASH DIGEST_ALGO_RMD160
|
|
|
|
#define NAMEHASH_LEN 20
|
|
|
|
|
1998-01-12 10:18:17 +00:00
|
|
|
/*-- trustdb.c --*/
|
2003-11-01 01:13:16 +00:00
|
|
|
void register_trusted_keyid(u32 *keyid);
|
1998-12-08 12:20:53 +00:00
|
|
|
void register_trusted_key( const char *string );
|
2002-06-29 13:46:34 +00:00
|
|
|
void check_trustdb (void);
|
|
|
|
void update_trustdb (void);
|
1999-03-11 15:42:06 +00:00
|
|
|
int setup_trustdb( int level, const char *dbname );
|
|
|
|
void init_trustdb( void );
|
2003-09-30 15:30:39 +00:00
|
|
|
void check_trustdb_stale(void);
|
2000-07-14 17:34:53 +00:00
|
|
|
void sync_trustdb( void );
|
2002-06-29 13:46:34 +00:00
|
|
|
|
2004-11-24 05:25:03 +00:00
|
|
|
const char *uid_trust_string_fixed(PKT_public_key *key,PKT_user_id *uid);
|
* tdbio.c (create_version_record): Only create new trustdbs with
TM_CLASSIC or TM_PGP.
* trustdb.h, trustdb.c (trust_string, get_ownertrust_string,
get_validity_string, ask_ownertrust, validate_keys), pkclist.c
(do_edit_ownertrust): Rename trust_string to trust_value_to_string for
naming consistency.
* trustdb.h, trustdb.c (string_to_trust_value): New function to translate
a string to a trust value.
* g10.c (main): Use string_to_trust_value here for --force-ownertrust.
* options.h, g10.c (main), trustdb.c (trust_model_string, init_trustdb,
check_trustdb, update_trustdb, get_validity, validate_one_keyblock): An
"OpenPGP" trust model is misleading since there is no official OpenPGP
trust model. Use "PGP" instead.
2003-05-01 21:37:08 +00:00
|
|
|
const char *trust_value_to_string (unsigned int value);
|
|
|
|
int string_to_trust_value (const char *str);
|
2002-06-29 13:46:34 +00:00
|
|
|
|
|
|
|
void revalidation_mark (void);
|
2002-12-13 21:10:53 +00:00
|
|
|
int trustdb_pending_check(void);
|
2005-02-06 17:38:43 +00:00
|
|
|
void trustdb_check_or_update(void);
|
2002-06-29 13:46:34 +00:00
|
|
|
|
* trustdb.h, trustdb.c (is_disabled), gpgv.c (is_disabled): Rename
is_disabled to cache_disabled_value, which now takes a pk and not just the
keyid. This is for speed since there is no need to re-fetch a key when we
already have that key handy. Cache the result of the check so we don't
need to hit the trustdb more than once.
* getkey.c (skip_disabled): New function to get a pk and call is_disabled
on it. (key_byname): Use it here.
* packet.h, getkey.c (skip_disabled), keylist.c (print_capabilities): New
"pk_is_disabled" macro to retrieve the cached disabled value if available,
and fill it in via cache_disabled_value if not available.
* trustdb.c (get_validity): Cache the disabled value since we have it
handy and it might be useful later.
* parse-packet.c (parse_key): Clear disabled flag when parsing a new key.
Just in case someone forgets to clear the whole key.
* getkey.c (merge_selfsigs_main): Add an "if all else fails" path for
setting a single user ID primary when there are multiple set primaries all
at the same second, or no primaries set and the most recent user IDs are
at the same second, or no signed user IDs at all. This is arbitrary, but
deterministic.
* exec.h, photoid.h: Add copyright message.
* keylist.c (list_keyblock_print): Don't dump attribs for
revoked/expired/etc uids for non-colon key listings. This is for
consistency with --show-photos.
* main.h, keylist.c (dump_attribs), mainproc.c (check_sig_and_print): Dump
attribs if --attrib-fd is set when verifying signatures.
* g10.c (main): New --gnupg option to disable the various --openpgp,
--pgpX, etc. options. This is the same as --no-XXXX for those options.
* revoke.c (ask_revocation_reason): Clear old reason if user elects to
repeat question. This is bug 153.
* keyedit.c (sign_uids): Show keyid of the key making the signature.
2003-05-21 16:42:22 +00:00
|
|
|
int cache_disabled_value(PKT_public_key *pk);
|
2003-01-11 21:13:41 +00:00
|
|
|
|
* armor.c (armor_filter): Comment about PGP's end of line tab problem.
* trustdb.h, trustdb.c (trust_letter): Make static. (get_ownertrust_info,
get_validity_info): Don't mask the trust level twice.
* trustdb.h, gpgv.c, trustdb.c (get_validity, get_validity_info),
keylist.c (list_keyblock_colon), keyedit.c (show_key_with_all_names_colon,
menu_revuid): Pass a user ID in rather than a namehash, so we only have to
do the hashing in one place.
* packet.h, pkclist.c (build_pk_list), free-packet.c
(release_public_key_parts): Remove unused namehash element for public
keys.
2003-01-11 03:57:00 +00:00
|
|
|
unsigned int get_validity (PKT_public_key *pk, PKT_user_id *uid);
|
|
|
|
int get_validity_info (PKT_public_key *pk, PKT_user_id *uid);
|
2003-01-11 21:13:41 +00:00
|
|
|
const char *get_validity_string (PKT_public_key *pk, PKT_user_id *uid);
|
2002-06-29 13:46:34 +00:00
|
|
|
|
|
|
|
void list_trust_path( const char *username );
|
1998-11-13 19:41:41 +00:00
|
|
|
int enum_cert_paths( void **context, ulong *lid,
|
|
|
|
unsigned *ownertrust, unsigned *validity );
|
1999-01-09 17:59:58 +00:00
|
|
|
void enum_cert_paths_print( void **context, FILE *fp,
|
1998-12-23 12:41:40 +00:00
|
|
|
int refresh, ulong selected_lid );
|
2002-06-29 13:46:34 +00:00
|
|
|
|
2003-07-21 23:19:15 +00:00
|
|
|
void read_trust_options(byte *trust_model,ulong *created,ulong *nextcheck,
|
|
|
|
byte *marginals,byte *completes,byte *cert_depth);
|
|
|
|
|
2002-06-29 13:46:34 +00:00
|
|
|
unsigned int get_ownertrust (PKT_public_key *pk);
|
2002-10-30 03:11:57 +00:00
|
|
|
unsigned int get_min_ownertrust (PKT_public_key *pk);
|
2002-06-29 13:46:34 +00:00
|
|
|
int get_ownertrust_info (PKT_public_key *pk);
|
2003-01-11 21:13:41 +00:00
|
|
|
const char *get_ownertrust_string (PKT_public_key *pk);
|
|
|
|
|
2002-06-29 13:46:34 +00:00
|
|
|
void update_ownertrust (PKT_public_key *pk, unsigned int new_trust );
|
2002-10-30 03:11:57 +00:00
|
|
|
int clear_ownertrusts (PKT_public_key *pk);
|
2002-06-29 13:46:34 +00:00
|
|
|
|
2005-11-18 04:25:07 +00:00
|
|
|
void clean_one_uid(KBNODE keyblock,KBNODE uidnode,int noisy,int self_only,
|
|
|
|
int *uids_cleaned,int *sigs_cleaned);
|
2005-11-12 04:53:03 +00:00
|
|
|
void clean_key(KBNODE keyblock,int noisy,int self_only,
|
|
|
|
int *uids_cleaned,int *sigs_cleaned);
|
2005-04-24 18:35:30 +00:00
|
|
|
|
1999-03-11 15:42:06 +00:00
|
|
|
/*-- tdbdump.c --*/
|
|
|
|
void list_trustdb(const char *username);
|
|
|
|
void export_ownertrust(void);
|
|
|
|
void import_ownertrust(const char *fname);
|
1998-01-12 10:18:17 +00:00
|
|
|
|
1998-07-30 17:37:03 +00:00
|
|
|
/*-- pkclist.c --*/
|
2002-06-29 13:46:34 +00:00
|
|
|
int edit_ownertrust (PKT_public_key *pk, int mode );
|
1998-07-30 17:37:03 +00:00
|
|
|
|
2002-06-29 13:46:34 +00:00
|
|
|
#endif /*G10_TRUSTDB_H*/
|