X-Git-Url: https://git.sommitrealweird.co.uk/onak.git/blobdiff_plain/0f4971d043c38bae1bfb95201622a1405110f899..5911be914299d9af67b6a1eaedfdb2e044a369c6:/merge.h?ds=inline diff --git a/merge.h b/merge.h index 3ec64f3..794bd27 100644 --- a/merge.h +++ b/merge.h @@ -1,17 +1,36 @@ /* * merge.h - Routines to merge OpenPGP public keys. * - * Jonathan McDowell + * Copyright 2002-2005,2007,2011 Jonathan McDowell * - * Copyright 2002 Project Purple + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; version 2 of the License. * - * $Id: merge.h,v 1.5 2003/06/04 20:57:11 noodles Exp $ + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program; if not, write to the Free Software Foundation, Inc., 51 + * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __MERGE_H__ #include "keystructs.h" +/** + * compare_packets - Check to see if 2 OpenPGP packets are the same. + * @a: The first packet to compare. + * @b: The second packet to compare. + * + * Takes 2 packets and returns 0 if they are the same, -1 if a is + * less than b, or 1 if a is greater than b. + */ +int compare_packets(struct openpgp_packet *a, struct openpgp_packet *b); + /** * merge_keys - Takes 2 public keys and merges them. * @a: The old key. The merged key is returned in this structure. @@ -28,15 +47,39 @@ int merge_keys(struct openpgp_publickey *a, struct openpgp_publickey *b); /** - * update_keys - Takes a list of public keys and updates them in the DB. - * @keys: The keys to update in the DB. - * - * Takes a list of keys and adds them to the database, merging them with - * the key in the database if it's already present there. The key list is - * update to contain the minimum set of updates required to get from what - * we had before to what we have now (ie the set of data that was added to - * the DB). Returns the number of entirely new keys added. + * find_packet - Checks to see if an OpenPGP packet exists in a list. + * @packet_list: The list of packets to look in. + * @packet: The packet to look for. + * + * Walks through the packet_list checking to see if the packet given is + * present in it. Returns true if it is. + */ +bool find_packet(struct openpgp_packet_list *packet_list, + struct openpgp_packet *packet); + +/** + * get_signed_packet - Gets a signed packet from a list. + * @packet_list: The list of packets to look in. + * @packet: The packet to look for. + * + * Walks through the signedpacket_list looking for the supplied packet and + * returns it if found. Otherwise returns NULL. + */ +struct openpgp_signedpacket_list *find_signed_packet( + struct openpgp_signedpacket_list *packet_list, + struct openpgp_packet *packet); + +/** + * merge_packet_sigs - Takes 2 signed packets and merges their sigs. + * @old: The old signed packet. + * @new: The new signed packet. + * + * Takes 2 signed packet list structures and the sigs of the packets on + * the head of these structures. These packets must both be the same and + * the fully merged structure is returned in old and the minimal + * difference to get from old to new in new. */ -int update_keys(struct openpgp_publickey **keys); +int merge_packet_sigs(struct openpgp_signedpacket_list *old, + struct openpgp_signedpacket_list *new); #endif