X-Git-Url: https://the.earth.li/gitweb/?a=blobdiff_plain;ds=sidebyside;f=keyid.h;h=08bf1fea8d694e36231e000f73f0bc581c09b0c2;hb=5d25774c5cd9f80709f852f79bce26d582fad360;hp=1959a0d2848067ca055c494eb332ff060a14c13a;hpb=4b8483ae278577a3adc8d84da81d77019704466f;p=onak.git diff --git a/keyid.h b/keyid.h index 1959a0d..08bf1fe 100644 --- a/keyid.h +++ b/keyid.h @@ -9,17 +9,62 @@ #ifndef __KEYID_H__ #define __KEYID_H__ -// #include #include #include "keystructs.h" /** * get_keyid - Given a public key returns the keyid. - * @publickey: The key to calculate the fingerprint for. + * @publickey: The key to calculate the id for. * * This function returns the key id for a given public key. */ uint64_t get_keyid(struct openpgp_publickey *publickey); +/** + * get_fingerprint - Given a public key returns the fingerprint. + * @publickey: The key to calculate the id for. + * @fingerprint: The fingerprint (must be at least 20 bytes of space). + * @len: The length of the returned fingerprint. + * + * This function returns the fingerprint for a given public key. As Type 3 + * fingerprints are 16 bytes and Type 4 are 20 the len field indicates + * which we've returned. + */ +unsigned char *get_fingerprint(struct openpgp_packet *packet, + unsigned char *fingerprint, + size_t *len); + +/** + * get_packetid - Given a PGP packet returns the keyid. + * @packet: The packet to calculate the id for. + * + * This function returns the key id for a given PGP packet. + */ +uint64_t get_packetid(struct openpgp_packet *packet); + +/** + * get_skshash - Given a public key returns the SKS hash for it. + * @publickey: The key to calculate the hash for. + * @skshash: Hash structure to sort the result in. + * + * This function returns the SKS hash for a given public key. This + * is an MD5 hash over a sorted list of all of the packets that + * make up the key. The caller should allocate the memory for the + * hash. + */ +void get_skshash(struct openpgp_publickey *publickey, struct skshash *hash); + +/** + * parse_skshash - Parse a string into an SKS hash structure. + * @search: The string representing the SKS hash. + * @hash: A pointer to the structure to store the hash in. + * + * Takes a string and tries to parse it as an SKS hash hex + * representation. Puts the hash into the supplied structure + * if successful. Returns 1 if we parsed something ok, 0 if + * we failed. + */ +int parse_skshash(char *search, struct skshash *hash); + #endif /* __KEYID_H__ */