g10: Simplify get_seckey_byname: it was never called with NAME not NULL.
[gnupg.git] / g10 / t-keydb.c
1 /* t-keydb.c - Tests for keydb.c.
2  * Copyright (C) 2015 g10 Code GmbH
3  *
4  * This file is part of GnuPG.
5  *
6  * GnuPG is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * GnuPG is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, see <http://www.gnu.org/licenses/>.
18  */
19
20 #include "test.c"
21
22 #include "keydb.h"
23
24 static void
25 do_test (int argc, char *argv[])
26 {
27   int rc;
28   KEYDB_HANDLE hd1, hd2;
29   KEYDB_SEARCH_DESC desc1, desc2;
30   KBNODE kb1, kb2;
31   char *uid1;
32   char *uid2;
33   char *fname;
34
35   (void) argc;
36   (void) argv;
37
38   fname = prepend_srcdir ("t-keydb-keyring.kbx");
39   rc = keydb_add_resource (fname, 0);
40   test_free (fname);
41   if (rc)
42     ABORT ("Failed to open keyring.");
43
44   hd1 = keydb_new ();
45   hd2 = keydb_new ();
46
47   rc = classify_user_id ("2689 5E25 E844 6D44 A26D  8FAF 2F79 98F3 DBFC 6AD9",
48                          &desc1, 0);
49   if (rc)
50     ABORT ("Failed to convert fingerprint for DBFC6AD9");
51
52   rc = keydb_search (hd1, &desc1, 1, NULL);
53   if (rc)
54     ABORT ("Failed to lookup key associated with DBFC6AD9");
55
56
57   classify_user_id ("8061 5870 F5BA D690 3336  86D0 F2AD 85AC 1E42 B367",
58                     &desc2, 0);
59   if (rc)
60     ABORT ("Failed to convert fingerprint for 1E42B367");
61
62   rc = keydb_search (hd2, &desc2, 1, NULL);
63   if (rc)
64     ABORT ("Failed to lookup key associated with 1E42B367");
65
66   rc = keydb_get_keyblock (hd2, &kb2);
67   if (rc)
68     ABORT ("Failed to get keyblock for 1E42B367");
69
70   rc = keydb_get_keyblock (hd1, &kb1);
71   if (rc)
72     ABORT ("Failed to get keyblock for DBFC6AD9");
73
74   while (kb1 && kb1->pkt->pkttype != PKT_USER_ID)
75     kb1 = kb1->next;
76   if (! kb1)
77     ABORT ("DBFC6AD9 has no user id packet");
78   uid1 = kb1->pkt->pkt.user_id->name;
79
80   while (kb2 && kb2->pkt->pkttype != PKT_USER_ID)
81     kb2 = kb2->next;
82   if (! kb2)
83     ABORT ("1E42B367 has no user id packet");
84   uid2 = kb2->pkt->pkt.user_id->name;
85
86   if (verbose)
87     {
88       printf ("user id for DBFC6AD9: %s\n", uid1);
89       printf ("user id for 1E42B367: %s\n", uid2);
90     }
91
92   TEST_P ("cache consistency", strcmp (uid1, uid2) != 0);
93 }