2 * parsekey.h - Routines to parse an OpenPGP key.
4 * Jonathan McDowell <noodles@earth.li>
6 * Copyright 2002 Project Purple
10 #define __PARSEKEY_H__
12 #include "keystructs.h"
15 * add_key - Takes a key and adds it to the keyserver.
16 * @key: The public key to add.
18 * This function takes a public key and adds it to the keyserver.
19 * It first of all sees if we already have the key locally. If we do then
20 * we retrieve it and merge the two keys. We then store the resulting key
21 * (or just the original we received if we don't already have it). We then
22 * send out the appropriate updates to our keyserver peers.
24 int add_key(struct openpgp_publickey *key);
27 * parse_keys - Process a stream of packets for public keys + sigs.
28 * @packets: The packet list to parse.
29 * @keys: The returned list of public keys.
31 * This function takes an list of OpenPGP packets and attempts to parse it
32 * into a list of public keys with signatures and subkeys.
34 int parse_keys(struct openpgp_packet_list *packets,
35 struct openpgp_publickey **keys);
38 * debug_packet - Print debug info about a packet
39 * @packet: The packet to display.
41 * This function takes an OpenPGP packet and displays some information
42 * about it to stdout. Useful for debugging purposes or curiousity about
43 * an OpenPGP packet stream.
45 int debug_packet(struct openpgp_packet *packet);
48 * read_openpgp_stream - Reads a stream of OpenPGP packets.
49 * @getchar_func: The function to get the next character from the stream.
50 * @ctx: A pointer to the context structure for getchar_func.
51 * @packets: The outputted list of packets.
53 * This function uses getchar_func to read characters from an OpenPGP
54 * packet stream and reads the packets into a linked list of packets
55 * ready for parsing as a public key or whatever.
57 int read_openpgp_stream(int (*getchar_func)(void *ctx, size_t count,
60 struct openpgp_packet_list **packets);
63 * write_openpgp_stream - Reads a stream of OpenPGP packets.
64 * @putchar_func: The function to put the next character to the stream.
65 * @ctx: A pointer to the context structure for putchar_func.
66 * @packets: The list of packets.
68 * This function uses putchar_func to write characters to an OpenPGP
69 * packet stream from a linked list of packets.
71 int write_openpgp_stream(int (*putchar_func)(void *ctx, unsigned char c),
73 struct openpgp_packet_list *packets);
76 * flatten_publickey - Convert a publickey to an OpenPGP packet list.
77 * @key: The public key.
78 * @packets: The outputted packet list.
79 * @list_end: The end of the packet list.
81 * This function converts public key structure to a linked list of OpenPGP
82 * packets ready for outputing or storage. If we're not appending to an
83 * existing list then both packets & list_end will be pointers to NULLs,
84 * other wise packets should point to the start of the list and list_end
85 * to the end so we can append to the end.
87 int flatten_publickey(struct openpgp_publickey *key,
88 struct openpgp_packet_list **packets,
89 struct openpgp_packet_list **list_end);
91 #endif /* __PARSEKEY_H__ */