From e4aa006e4807285ffdd881e4e05af3bc47c5c964 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 18 Aug 2014 12:55:29 +0200 Subject: [PATCH] kbx: Make user id and signature data optional for OpenPGP. * kbx/keybox-blob.c (_keybox_create_openpgp_blob): Remove restriction. -- Although self-signature and key binding signatures are required by OpenPGP, we should not enforce that in the storage backend. --- kbx/keybox-blob.c | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/kbx/keybox-blob.c b/kbx/keybox-blob.c index ebbcdf8ff..f7abb6ccd 100644 --- a/kbx/keybox-blob.c +++ b/kbx/keybox-blob.c @@ -702,9 +702,6 @@ _keybox_create_openpgp_blob (KEYBOXBLOB *r_blob, *r_blob = NULL; - if (!info->nuids || !info->nsigs) - return gpg_error (GPG_ERR_BAD_PUBKEY); - /* If we have a signature status vector, check that the number of elements matches the actual number of signatures. */ if (sigstatus && sigstatus[0] != info->nsigs) @@ -721,19 +718,27 @@ _keybox_create_openpgp_blob (KEYBOXBLOB *r_blob, err = gpg_error_from_syserror (); goto leave; } + blob->nuids = info->nuids; - blob->uids = xtrycalloc (blob->nuids, sizeof *blob->uids ); - if (!blob->uids) + if (blob->nuids) { - err = gpg_error_from_syserror (); - goto leave; + blob->uids = xtrycalloc (blob->nuids, sizeof *blob->uids ); + if (!blob->uids) + { + err = gpg_error_from_syserror (); + goto leave; + } } + blob->nsigs = info->nsigs; - blob->sigs = xtrycalloc (blob->nsigs, sizeof *blob->sigs ); - if (!blob->sigs) + if (blob->nsigs) { - err = gpg_error_from_syserror (); - goto leave; + blob->sigs = xtrycalloc (blob->nsigs, sizeof *blob->sigs ); + if (!blob->sigs) + { + err = gpg_error_from_syserror (); + goto leave; + } } err = pgp_create_key_part (blob, info);