summaryrefslogtreecommitdiffstats
path: root/libkdenetwork/libgpgme-copy/gpgme/import.c
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-11-16 16:06:07 -0600
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-11-16 16:06:07 -0600
commitbe0ca741fd12897337408d1d7a7d8f5f18e1fac9 (patch)
treeb9fa3458193a17180d8773a0204ee05ae206cd99 /libkdenetwork/libgpgme-copy/gpgme/import.c
parentbbb7afdb6da2969535e7f05715e2cb95cfdc917c (diff)
downloadtdepim-be0ca741fd12897337408d1d7a7d8f5f18e1fac9.tar.gz
tdepim-be0ca741fd12897337408d1d7a7d8f5f18e1fac9.zip
Finish rename from prior commit
Diffstat (limited to 'libkdenetwork/libgpgme-copy/gpgme/import.c')
-rw-r--r--libkdenetwork/libgpgme-copy/gpgme/import.c273
1 files changed, 0 insertions, 273 deletions
diff --git a/libkdenetwork/libgpgme-copy/gpgme/import.c b/libkdenetwork/libgpgme-copy/gpgme/import.c
deleted file mode 100644
index 03967f74..00000000
--- a/libkdenetwork/libgpgme-copy/gpgme/import.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* import.c - Import a key.
- Copyright (C) 2000 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., 51 Franklin Street, Fifth Floor, Boston, MA
- 02110-1301, USA. */
-
-#if HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <stdlib.h>
-#include <errno.h>
-#include <string.h>
-
-#include "gpgme.h"
-#include "context.h"
-#include "ops.h"
-
-
-typedef struct
-{
- struct _gpgme_op_import_result result;
-
- /* A pointer to the next pointer of the last import status in the
- list. This makes appending new imports painless while preserving
- the order. */
- gpgme_import_status_t *lastp;
-} *op_data_t;
-
-
-static void
-release_op_data (void *hook)
-{
- op_data_t opd = (op_data_t) hook;
- gpgme_import_status_t import = opd->result.imports;
-
- while (import)
- {
- gpgme_import_status_t next = import->next;
- free (import->fpr);
- free (import);
- import = next;
- }
-}
-
-
-gpgme_import_result_t
-gpgme_op_import_result (gpgme_ctx_t ctx)
-{
- void *hook;
- op_data_t opd;
- gpgme_error_t err;
-
- err = _gpgme_op_data_lookup (ctx, OPDATA_IMPORT, &hook, -1, NULL);
- opd = hook;
- if (err || !opd)
- return NULL;
-
- return &opd->result;
-}
-
-
-static gpgme_error_t
-parse_import (char *args, gpgme_import_status_t *import_status, int problem)
-{
- gpgme_import_status_t import;
- char *tail;
- long int nr;
-
- import = malloc (sizeof (*import));
- if (!import)
- return gpg_error_from_errno (errno);
- import->next = NULL;
-
- errno = 0;
- nr = strtol (args, &tail, 0);
- if (errno || args == tail || *tail != ' ')
- {
- /* The crypto backend does not behave. */
- free (import);
- return gpg_error (GPG_ERR_INV_ENGINE);
- }
- args = tail;
-
- if (problem)
- {
- switch (nr)
- {
- case 0:
- case 4:
- default:
- import->result = gpg_error (GPG_ERR_GENERAL);
- break;
-
- case 1:
- import->result = gpg_error (GPG_ERR_BAD_CERT);
- break;
-
- case 2:
- import->result = gpg_error (GPG_ERR_MISSING_CERT);
- break;
-
- case 3:
- import->result = gpg_error (GPG_ERR_BAD_CERT_CHAIN);
- break;
- }
- import->status = 0;
- }
- else
- {
- import->result = gpg_error (GPG_ERR_NO_ERROR);
- import->status = nr;
- }
-
- while (*args == ' ')
- args++;
- tail = strchr (args, ' ');
- if (tail)
- *tail = '\0';
-
- import->fpr = strdup (args);
- if (!import->fpr)
- {
- int saved_errno = errno;
- free (import);
- return gpg_error_from_errno (saved_errno);
- }
-
- *import_status = import;
- return 0;
-}
-
-
-
-gpgme_error_t
-parse_import_res (char *args, gpgme_import_result_t result)
-{
- char *tail;
-
- errno = 0;
-
-#define PARSE_NEXT(x) \
- (x) = strtol (args, &tail, 0); \
- if (errno || args == tail || *tail != ' ') \
- /* The crypto backend does not behave. */ \
- return gpg_error (GPG_ERR_INV_ENGINE); \
- args = tail;
-
- PARSE_NEXT (result->considered);
- PARSE_NEXT (result->no_user_id);
- PARSE_NEXT (result->imported);
- PARSE_NEXT (result->imported_rsa);
- PARSE_NEXT (result->unchanged);
- PARSE_NEXT (result->new_user_ids);
- PARSE_NEXT (result->new_sub_keys);
- PARSE_NEXT (result->new_signatures);
- PARSE_NEXT (result->new_revocations);
- PARSE_NEXT (result->secret_read);
- PARSE_NEXT (result->secret_imported);
- PARSE_NEXT (result->secret_unchanged);
- PARSE_NEXT (result->skipped_new_keys);
- PARSE_NEXT (result->not_imported);
-
- return 0;
-}
-
-
-static gpgme_error_t
-import_status_handler (void *priv, gpgme_status_code_t code, char *args)
-{
- gpgme_ctx_t ctx = (gpgme_ctx_t) priv;
- gpgme_error_t err;
- void *hook;
- op_data_t opd;
-
- err = _gpgme_op_data_lookup (ctx, OPDATA_IMPORT, &hook, -1, NULL);
- opd = hook;
- if (err)
- return err;
-
- switch (code)
- {
- case GPGME_STATUS_IMPORT_OK:
- case GPGME_STATUS_IMPORT_PROBLEM:
- err = parse_import (args, opd->lastp,
- code == GPGME_STATUS_IMPORT_OK ? 0 : 1);
- if (err)
- return err;
-
- opd->lastp = &(*opd->lastp)->next;
- break;
-
- case GPGME_STATUS_IMPORT_RES:
- err = parse_import_res (args, &opd->result);
- break;
-
- default:
- break;
- }
- return 0;
-}
-
-
-static gpgme_error_t
-_gpgme_op_import_start (gpgme_ctx_t ctx, int synchronous, gpgme_data_t keydata)
-{
- gpgme_error_t err;
- void *hook;
- op_data_t opd;
-
- err = _gpgme_op_reset (ctx, synchronous);
- if (err)
- return err;
-
- err = _gpgme_op_data_lookup (ctx, OPDATA_IMPORT, &hook,
- sizeof (*opd), release_op_data);
- opd = hook;
- if (err)
- return err;
- opd->lastp = &opd->result.imports;
-
- if (!keydata)
- return gpg_error (GPG_ERR_NO_DATA);
-
- _gpgme_engine_set_status_handler (ctx->engine, import_status_handler, ctx);
-
- return _gpgme_engine_op_import (ctx->engine, keydata);
-}
-
-
-gpgme_error_t
-gpgme_op_import_start (gpgme_ctx_t ctx, gpgme_data_t keydata)
-{
- return _gpgme_op_import_start (ctx, 0, keydata);
-}
-
-
-/* Import the key in KEYDATA into the keyring. */
-gpgme_error_t
-gpgme_op_import (gpgme_ctx_t ctx, gpgme_data_t keydata)
-{
- gpgme_error_t err = _gpgme_op_import_start (ctx, 1, keydata);
- if (!err)
- err = _gpgme_wait_one (ctx);
- return err;
-}
-
-
-gpgme_error_t
-gpgme_op_import_ext (gpgme_ctx_t ctx, gpgme_data_t keydata, int *nr)
-{
- gpgme_error_t err = gpgme_op_import (ctx, keydata);
- if (!err && nr)
- {
- gpgme_import_result_t result = gpgme_op_import_result (ctx);
- *nr = result->considered;
- }
- return err;
-}