X-Git-Url: https://git.sommitrealweird.co.uk/onak.git/blobdiff_plain/e57492c98069420201b291d1596116fb8dd437f0..b46987cfe602a9a7e2c98bae1528b4a6cdf3e56e:/decodekey.c?ds=inline diff --git a/decodekey.c b/decodekey.c index 8fca176..eb0a79d 100644 --- a/decodekey.c +++ b/decodekey.c @@ -249,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; +}