#include "mem.h"
#include "parsekey.h"
+#ifdef NEED_KEYID2UID
/**
* keyid2uid - Takes a keyid and returns the primary UID for it.
* @keyid: The keyid to lookup.
{
struct openpgp_publickey *publickey = NULL;
struct openpgp_signedpacket_list *curuid = NULL;
- static char buf[1024];
+ char buf[1024];
buf[0]=0;
- if (fetch_key(keyid, &publickey) && publickey != NULL) {
+ if (fetch_key(keyid, &publickey, false) && publickey != NULL) {
curuid = publickey->uids;
while (curuid != NULL && buf[0] == 0) {
if (curuid->packet->tag == 13) {
if (buf[0] == 0) {
return NULL;
} else {
- return buf;
+ return strdup(buf);
}
}
+#endif
+#ifdef NEED_GETKEYSIGS
/**
* getkeysigs - Gets a linked list of the signatures on a key.
* @keyid: The keyid to get the sigs for.
struct openpgp_signedpacket_list *uids = NULL;
struct openpgp_publickey *publickey = NULL;
- fetch_key(keyid, &publickey);
+ fetch_key(keyid, &publickey, false);
if (publickey != NULL) {
for (uids = publickey->uids; uids != NULL; uids = uids->next) {
}
free_publickey(publickey);
}
-
+
return sigs;
}
+#endif
+
+#ifdef NEED_GETFULLKEYID
+/**
+ * getfullkeyid - Maps a 32bit key id to a 64bit one.
+ * @keyid: The 32bit keyid.
+ *
+ * This function maps a 32bit key id to the full 64bit one. It returns the
+ * full keyid. If the key isn't found a keyid of 0 is returned.
+ */
+uint64_t getfullkeyid(uint64_t keyid)
+{
+ struct openpgp_publickey *publickey = NULL;
+
+ if (keyid < 0x100000000LL) {
+ fetch_key(keyid, &publickey, false);
+ if (publickey != NULL) {
+ keyid = get_keyid(publickey);
+ free_publickey(publickey);
+ publickey = NULL;
+ } else {
+ keyid = 0;
+ }
+ }
+
+ return keyid;
+}
+#endif