diff options
Diffstat (limited to 'g10/tdbdump.c')
-rw-r--r-- | g10/tdbdump.c | 223 |
1 files changed, 0 insertions, 223 deletions
diff --git a/g10/tdbdump.c b/g10/tdbdump.c deleted file mode 100644 index 5eb482959..000000000 --- a/g10/tdbdump.c +++ /dev/null @@ -1,223 +0,0 @@ -/* tdbdump.c - * Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc. - * - * This file is part of GnuPG. - * - * GnuPG is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * GnuPG is distributed in the hope that it will be useful, - * 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 - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ - -#include <config.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <errno.h> -#include <ctype.h> -#include <assert.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <unistd.h> - -#include "gpg.h" -#include "errors.h" -#include "iobuf.h" -#include "keydb.h" -#include "memory.h" -#include "util.h" -#include "trustdb.h" -#include "options.h" -#include "packet.h" -#include "main.h" -#include "i18n.h" -#include "tdbio.h" - - -#define HEXTOBIN(x) ( (x) >= '0' && (x) <= '9' ? ((x)-'0') : \ - (x) >= 'A' && (x) <= 'F' ? ((x)-'A'+10) : ((x)-'a'+10)) - - -/**************** - * Wirte a record but die on error - */ -static void -write_record( TRUSTREC *rec ) -{ - int rc = tdbio_write_record( rec ); - if( !rc ) - return; - log_error(_("trust record %lu, type %d: write failed: %s\n"), - rec->recnum, rec->rectype, gpg_strerror (rc) ); - tdbio_invalid(); -} - - -/**************** - * Dump the entire trustdb or only the entries of one key. - */ -void -list_trustdb( const char *username ) -{ - TRUSTREC rec; - - init_trustdb(); - /* for now we ignore the user ID */ - if (1) { - ulong recnum; - int i; - - printf("TrustDB: %s\n", tdbio_get_dbname() ); - for(i=9+strlen(tdbio_get_dbname()); i > 0; i-- ) - putchar('-'); - putchar('\n'); - for(recnum=0; !tdbio_read_record( recnum, &rec, 0); recnum++ ) - tdbio_dump_record( &rec, stdout ); - } -} - - - - - -/**************** - * Print a list of all defined owner trust value. - */ -void -export_ownertrust() -{ - TRUSTREC rec; - ulong recnum; - int i; - byte *p; - - init_trustdb(); - printf(_("# List of assigned trustvalues, created %s\n" - "# (Use \"gpg --import-ownertrust\" to restore them)\n"), - asctimestamp( make_timestamp() ) ); - for(recnum=0; !tdbio_read_record( recnum, &rec, 0); recnum++ ) { - if( rec.rectype == RECTYPE_TRUST ) { - if( !rec.r.trust.ownertrust ) - continue; - p = rec.r.trust.fingerprint; - for(i=0; i < 20; i++, p++ ) - printf("%02X", *p ); - printf(":%u:\n", (unsigned int)rec.r.trust.ownertrust ); - } - } -} - - -void -import_ownertrust( const char *fname ) -{ - FILE *fp; - int is_stdin=0; - char line[256]; - char *p; - size_t n, fprlen; - unsigned int otrust; - byte fpr[20]; - int any = 0; - int rc; - - init_trustdb(); - if( !fname || (*fname == '-' && !fname[1]) ) { - fp = stdin; - fname = "[stdin]"; - is_stdin = 1; - } - else if( !(fp = fopen( fname, "r" )) ) { - log_error ( _("can't open `%s': %s\n"), fname, strerror(errno) ); - return; - } - - while( fgets( line, DIM(line)-1, fp ) ) { - TRUSTREC rec; - - if( !*line || *line == '#' ) - continue; - n = strlen(line); - if( line[n-1] != '\n' ) { - log_error (_("\b%s: line too long\n"), fname ); - /* ... or last line does not have a LF */ - break; /* can't continue */ - } - for(p = line; *p && *p != ':' ; p++ ) - if( !hexdigitp (p) ) - break; - if( *p != ':' ) { - log_error (_("\b%s: error: missing colon\n"), fname ); - continue; - } - fprlen = p - line; - if( fprlen != 32 && fprlen != 40 ) { - log_error (_("\b%s: error: invalid fingerprint\n"), fname ); - continue; - } - if( sscanf(p, ":%u:", &otrust ) != 1 ) { - log_error (_("\b%s: error: no ownertrust value\n"), fname ); - continue; - } - if( !otrust ) - continue; /* no otrust defined - no need to update or insert */ - /* convert the ascii fingerprint to binary */ - for(p=line, fprlen=0; fprlen < 20 && *p != ':'; p += 2 ) - fpr[fprlen++] = HEXTOBIN(p[0]) * 16 + HEXTOBIN(p[1]); - while (fprlen < 20) - fpr[fprlen++] = 0; - - rc = tdbio_search_trust_byfpr (fpr, &rec); - if( !rc ) { /* found: update */ - if (rec.r.trust.ownertrust != otrust) - { - if( rec.r.trust.ownertrust ) - log_info("changing ownertrust from %u to %u\n", - rec.r.trust.ownertrust, otrust ); - else - log_info("setting ownertrust to %u\n", otrust ); - rec.r.trust.ownertrust = otrust; - write_record (&rec ); - any = 1; - } - } - else if( rc == -1 ) { /* not found: insert */ - log_info("inserting ownertrust of %u\n", otrust ); - memset (&rec, 0, sizeof rec); - rec.recnum = tdbio_new_recnum (); - rec.rectype = RECTYPE_TRUST; - memcpy (rec.r.trust.fingerprint, fpr, 20); - rec.r.trust.ownertrust = otrust; - write_record (&rec ); - any = 1; - } - else /* error */ - log_error (_("\b%s: error finding trust record: %s\n"), - fname, gpg_strerror (rc)); - } - if( ferror(fp) ) - log_error (_("\b%s: read error: %s\n"), fname, strerror(errno) ); - if( !is_stdin ) - fclose(fp); - - if (any) - { - revalidation_mark (); - rc = tdbio_sync (); - if (rc) - log_error (_("trustdb: sync failed: %s\n"), gpg_strerror (rc) ); - } - -} - - |