json: Implement op:encrypt
[gpgme.git] / src / signers.c
index ae74e81..f540d70 100644 (file)
@@ -1,19 +1,19 @@
 /* signers.c - Maintain signer sets.
    Copyright (C) 2001 Werner Koch (dd9jn)
    Copyright (C) 2001, 2002, 2003, 2004 g10 Code GmbH
+
    This file is part of GPGME.
+
    GPGME is free software; you can redistribute it and/or modify it
    under the terms of the GNU Lesser General Public License as
    published by the Free Software Foundation; either version 2.1 of
    the License, or (at your option) any later version.
-   
+
    GPGME 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
    Lesser General Public License for more details.
-   
+
    You should have received a copy of the GNU Lesser General Public
    License along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
@@ -66,7 +66,7 @@ gpgme_error_t
 gpgme_signers_add (gpgme_ctx_t ctx, const gpgme_key_t key)
 {
   TRACE_BEG2 (DEBUG_CTX, "gpgme_signers_add", ctx,
-             "key=%p (%s)", key, (key->subkeys && key->subkeys->fpr) ? 
+             "key=%p (%s)", key, (key && key->subkeys && key->subkeys->fpr) ?
              key->subkeys->fpr : "invalid");
 
   if (!ctx || !key)
@@ -80,7 +80,7 @@ gpgme_signers_add (gpgme_ctx_t ctx, const gpgme_key_t key)
 
       newarr = realloc (ctx->signers, n * sizeof (*newarr));
       if (!newarr)
-       return TRACE_ERR (gpg_error_from_errno (errno));
+       return TRACE_ERR (gpg_error_from_syserror ());
       for (j = ctx->signers_size; j < n; j++)
        newarr[j] = NULL;
       ctx->signers = newarr;
@@ -93,6 +93,14 @@ gpgme_signers_add (gpgme_ctx_t ctx, const gpgme_key_t key)
 }
 
 
+/* Return the number of signers in CTX.  */
+unsigned int
+gpgme_signers_count (const gpgme_ctx_t ctx)
+{
+  return ctx? ctx->signers_len : 0;
+}
+
+
 /* Return the SEQth signer's key in CTX with one reference.  */
 gpgme_key_t
 gpgme_signers_enum (const gpgme_ctx_t ctx, int seq)