+
+/**
+ * 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.
+ */
+struct openpgp_fingerprint *keysubkeys(struct openpgp_publickey *key)
+{
+ struct openpgp_signedpacket_list *cursubkey = NULL;
+ struct openpgp_fingerprint *subkeys = NULL;
+ int count = 0;
+
+ if (key != NULL && key->subkeys != NULL) {
+ subkeys = malloc((spsize(key->subkeys) + 1) *
+ sizeof (struct openpgp_fingerprint));
+ cursubkey = key->subkeys;
+ while (cursubkey != NULL) {
+ get_fingerprint(cursubkey->packet, &subkeys[count++]);
+ cursubkey = cursubkey -> next;
+ }
+ subkeys[count].length = 0;
+ }
+
+ return subkeys;
+}