kbx: Make user id and signature data optional for OpenPGP.
authorWerner Koch <wk@gnupg.org>
Mon, 18 Aug 2014 10:55:29 +0000 (12:55 +0200)
committerWerner Koch <wk@gnupg.org>
Mon, 18 Aug 2014 10:55:29 +0000 (12:55 +0200)
* 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

index ebbcdf8..f7abb6c 100644 (file)
@@ -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);