]> the.earth.li Git - onak.git/blobdiff - decodekey.c
Use full key id in key id retrieval test + add separate short key id test
[onak.git] / decodekey.c
index 5b2092e024c0b6016e9a77b679fc1c8006f2f019..aeb7c623c516a959a277bf0b7177792fb5e472b8 100644 (file)
@@ -61,11 +61,11 @@ int parse_subpackets(unsigned char *data, uint64_t *keyid, time_t *creation)
                } else if (packetlen == 255) {
                        packetlen = data[offset++];
                        packetlen <<= 8;
-                       packetlen = data[offset++];
+                       packetlen |= data[offset++];
                        packetlen <<= 8;
-                       packetlen = data[offset++];
+                       packetlen |= data[offset++];
                        packetlen <<= 8;
-                       packetlen = data[offset++];
+                       packetlen |= data[offset++];
                }
                switch (data[offset] & 0x7F) {
                case OPENPGP_SIGSUB_CREATION:
@@ -315,13 +315,13 @@ 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);
+                       get_packetid(cursubkey->packet, &subkeys[count++]);
                        cursubkey = cursubkey -> next;
                }
                subkeys[count] = 0;