cscvs to tla changeset 2
[onak.git] / keydb.h
1 /*
2  * keydb.h - Routines to store and fetch keys.
3  *
4  * Jonathan McDowell <noodles@earth.li>
5  *
6  * Copyright 2002 Project Purple
7  */
8
9 #ifndef __KEYDB_H__
10 #define __KEYDB_H__
11
12 // #include <stdint.h>
13 #include <inttypes.h>
14
15 #include "keystructs.h"
16 #include "ll.h"
17
18 /**
19  *      initdb - Initialize the key database.
20  *
21  *      This function should be called before any of the other functions in
22  *      this file are called in order to allow the DB to be initialized ready
23  *      for access.
24  */
25 void initdb(void);
26
27 /**
28  *      cleanupdb - De-initialize the key database.
29  *
30  *      This function should be called upon program exit to allow the DB to
31  *      cleanup after itself.
32  */
33 void cleanupdb(void);
34
35 /**
36  *      fetch_key - Given a keyid fetch the key from storage.
37  *      @keyid: The keyid to fetch.
38  *      @publickey: A pointer to a structure to return the key in.
39  *
40  *      This function returns a public key from whatever storage mechanism we
41  *      are using.
42  *
43  *      TODO: What about keyid collisions? Should we use fingerprint instead?
44  */
45 int fetch_key(uint64_t keyid, struct openpgp_publickey **publickey);
46
47 /**
48  *      store_key - Takes a key and stores it.
49  *      @publickey: A pointer to the public key to store.
50  *
51  *      This function stores a public key in whatever storage mechanism we are
52  *      using.
53  *
54  *      TODO: Do we store multiple keys of the same id? Or only one and replace
55  *      it?
56  */
57 int store_key(struct openpgp_publickey *publickey);
58
59 /**
60  *      delete_key - Given a keyid delete the key from storage.
61  *      @keyid: The keyid to delete.
62  *
63  *      This function deletes a public key from whatever storage mechanism we
64  *      are using. Returns 0 if the key existed.
65  */
66 int delete_key(uint64_t keyid);
67
68 /**
69  *      fetch_key_text - Trys to find the keys that contain the supplied text.
70  *      @search: The text to search for.
71  *      @publickey: A pointer to a structure to return the key in.
72  *
73  *      This function searches for the supplied text and returns the keys that
74  *      contain it.
75  */
76 int fetch_key_text(const char *search, struct openpgp_publickey **publickey);
77
78 /**
79  *      keyid2uid - Takes a keyid and returns the primary UID for it.
80  *      @keyid: The keyid to lookup.
81  *
82  *      This function returns a UID for the given key. Returns NULL if the key
83  *      isn't found.
84  */
85 char *keyid2uid(uint64_t keyid);
86
87 /**
88  *      getkeysigs - Gets a linked list of the signatures on a key.
89  *      @keyid: The keyid to get the sigs for.
90  *
91  *      This function gets the list of signatures on a key. Used for key 
92  *      indexing and doing stats bits.
93  */
94 struct ll *getkeysigs(uint64_t keyid);
95
96 #endif /* __KEYDB_H__ */