]> the.earth.li Git - onak.git/blobdiff - decodekey.c
Various compiler warning cleanups.
[onak.git] / decodekey.c
index 71723911c6981a2e18ee11697ad5927638a22dd4..eb0a79d2cfd2277adcb5d18ad89df19ce0ac6f59 100644 (file)
@@ -5,7 +5,7 @@
  *
  * Copyright 2002 Project Purple
  *
- * $Id: decodekey.c,v 1.5 2004/03/23 12:35:11 noodles Exp $
+ * $Id: decodekey.c,v 1.6 2004/05/27 03:24:01 noodles Exp $
  */
 
 #include <assert.h>
@@ -218,8 +218,11 @@ char **keyuids(struct openpgp_publickey *key, char **primary)
        char buf[1024];
        char **uids = NULL;
        int count = 0;
+        
+        if (primary != NULL) {
+               *primary = NULL;
+       }
 
-       *primary = NULL;
        if (key != NULL && key->uids != NULL) {
                uids = malloc((spsize(key->uids) + 1) * sizeof (char *));
        
@@ -246,3 +249,30 @@ char **keyuids(struct openpgp_publickey *key, char **primary)
 
        return uids;
 }
+
+/**
+ *     keysubkeys - Takes a key and returns an array of its subkey keyids.
+ *     @key: The key to get the subkeys of.
+ *
+ *     keysubkeys takes a public key structure and returns an array of the
+ *     subkey keyids for that key.
+ */
+uint64_t *keysubkeys(struct openpgp_publickey *key)
+{
+       struct openpgp_signedpacket_list *cursubkey = NULL;
+       uint64_t                         *subkeys = NULL;
+       int                               count = 0;
+        
+       if (key != NULL && key->subkeys != NULL) {
+               subkeys = malloc((spsize(key->subkeys) + 1) *
+                               sizeof (uint64_t));
+               cursubkey = key->subkeys;
+               while (cursubkey != NULL) {
+                       subkeys[count++] = get_packetid(cursubkey->packet);
+                       cursubkey = cursubkey -> next;
+               }
+               subkeys[count] = 0;
+       }
+
+       return subkeys;
+}