]> the.earth.li Git - onak.git/blobdiff - keydb.c
Add ability to drop overly large packets
[onak.git] / keydb.c
diff --git a/keydb.c b/keydb.c
index 354255fecea07fce1b9ca6a2e64aacbdecf9ab7a..f92c252667a95eeb23bed61d76f763d69031e6a7 100644 (file)
--- a/keydb.c
+++ b/keydb.c
@@ -13,8 +13,7 @@
  * 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.
+ * this program.  If not, see <https://www.gnu.org/licenses/>.
  */
 
 /**
@@ -25,6 +24,7 @@
  *     slower than custom functions however.
  */
 
+#include <stdbool.h>
 #include <stdio.h>
 
 #include "decodekey.h"
 #include "keydb.h"
 #include "keyid.h"
 #include "keystructs.h"
+#include "ll.h"
 #include "mem.h"
 #include "merge.h"
 #include "openpgp.h"
-#include "parsekey.h"
 #include "sendsync.h"
+#include "stats.h"
 
 #ifdef NEED_KEYID2UID
 /**
@@ -87,13 +88,19 @@ struct ll *generic_getkeysigs(struct onak_dbctx *dbctx,
 {
        struct ll *sigs = NULL;
        struct openpgp_signedpacket_list *uids = NULL;
+       struct openpgp_packet_list *cursig;
        struct openpgp_publickey *publickey = NULL;
 
        dbctx->fetch_key_id(dbctx, keyid, &publickey, false);
        
        if (publickey != NULL) {
                for (uids = publickey->uids; uids != NULL; uids = uids->next) {
-                       sigs = keysigs(sigs, uids->sigs);
+                       for (cursig = uids->sigs; cursig != NULL;
+                                       cursig = cursig->next) {
+                               sigs = lladd(sigs,
+                                               createandaddtohash(sig_keyid(
+                                                       cursig->packet)));
+                       }
                }
                if (revoked != NULL) {
                        *revoked = publickey->revoked;