aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2016-07-12 11:59:10 +0000
committerWerner Koch <[email protected]>2016-07-12 13:13:34 +0000
commit0f5b105d96780a29cc58893285e6c38482e0cc2d (patch)
tree336f566839e4925ac5b0a478d886bb992438bff2
parentRegister DCO for Yann E. MORIN. (diff)
downloadgnupg-0f5b105d96780a29cc58893285e6c38482e0cc2d.tar.gz
gnupg-0f5b105d96780a29cc58893285e6c38482e0cc2d.zip
gpg: Move a function from import.c to export.c.
* g10/import.c (write_keyblock_to_output): Move to ... * g10/export.c (write_keyblock_to_output): here. Add arg WITH_ARMOR. Also make sure never to export ring trust packets.
-rw-r--r--g10/export.c57
-rw-r--r--g10/import.c59
-rw-r--r--g10/main.h5
3 files changed, 62 insertions, 59 deletions
diff --git a/g10/export.c b/g10/export.c
index d31b09af3..3ce8185e0 100644
--- a/g10/export.c
+++ b/g10/export.c
@@ -1203,6 +1203,63 @@ receive_seckey_from_agent (ctrl_t ctrl, gcry_cipher_hd_t cipherhd,
}
+/* Write KEYBLOCK either to stdout or to the file set with the
+ * --output option. */
+gpg_error_t
+write_keyblock_to_output (kbnode_t keyblock, int with_armor)
+{
+ gpg_error_t err;
+ const char *fname;
+ iobuf_t out;
+ kbnode_t node;
+ armor_filter_context_t *afx = NULL;
+
+ fname = opt.outfile? opt.outfile : "-";
+ if (is_secured_filename (fname) )
+ return gpg_error (GPG_ERR_EPERM);
+
+ out = iobuf_create (fname, 0);
+ if (!out)
+ {
+ err = gpg_error_from_syserror ();
+ log_error(_("can't create '%s': %s\n"), fname, gpg_strerror (err));
+ return err;
+ }
+ if (opt.verbose)
+ log_info (_("writing to '%s'\n"), iobuf_get_fname_nonnull (out));
+
+ if (with_armor)
+ {
+ afx = new_armor_context ();
+ afx->what = 1;
+ push_armor_filter (afx, out);
+ }
+
+ for (node = keyblock; node; node = node->next)
+ {
+ if (!is_deleted_kbnode (node) && node->pkt->pkttype != PKT_RING_TRUST)
+ {
+ err = build_packet (out, node->pkt);
+ if (err)
+ {
+ log_error ("build_packet(%d) failed: %s\n",
+ node->pkt->pkttype, gpg_strerror (err) );
+ goto leave;
+ }
+ }
+ }
+ err = 0;
+
+ leave:
+ if (err)
+ iobuf_cancel (out);
+ else
+ iobuf_close (out);
+ release_armor_context (afx);
+ return err;
+}
+
+
/* Helper for apply_keep_uid_filter. */
static const char *
filter_getval (void *cookie, const char *propname)
diff --git a/g10/import.c b/g10/import.c
index e03532834..371f0951a 100644
--- a/g10/import.c
+++ b/g10/import.c
@@ -937,63 +937,6 @@ fix_bad_direct_key_sigs (kbnode_t keyblock, u32 *keyid)
}
-/* Write the keyblock either to stdin or to the file set with
- * the --output option. */
-static gpg_error_t
-write_keyblock_to_output (kbnode_t keyblock)
-{
- gpg_error_t err;
- const char *fname;
- iobuf_t out;
- kbnode_t node;
- armor_filter_context_t *afx = NULL;
-
- fname = opt.outfile? opt.outfile : "-";
- if (is_secured_filename (fname) )
- return gpg_error (GPG_ERR_EPERM);
-
- out = iobuf_create (fname, 0);
- if (!out)
- {
- err = gpg_error_from_syserror ();
- log_error(_("can't create '%s': %s\n"), fname, gpg_strerror (err));
- return err;
- }
- if (opt.verbose)
- log_info (_("writing to '%s'\n"), iobuf_get_fname_nonnull (out));
-
- if (opt.armor)
- {
- afx = new_armor_context ();
- afx->what = 1;
- push_armor_filter (afx, out);
- }
-
- for (node = keyblock; node; node = node->next)
- {
- if (!is_deleted_kbnode (node))
- {
- err = build_packet (out, node->pkt);
- if (err)
- {
- log_error ("build_packet(%d) failed: %s\n",
- node->pkt->pkttype, gpg_strerror (err) );
- goto leave;
- }
- }
- }
- err = 0;
-
- leave:
- if (err)
- iobuf_cancel (out);
- else
- iobuf_close (out);
- release_armor_context (afx);
- return err;
-}
-
-
static void
print_import_ok (PKT_public_key *pk, unsigned int reason)
{
@@ -1387,7 +1330,7 @@ import_one (ctrl_t ctrl,
merge_keys_and_selfsig (keyblock);
merge_keys_done = 1;
}
- rc = write_keyblock_to_output (keyblock);
+ rc = write_keyblock_to_output (keyblock, opt.armor);
goto leave;
}
diff --git a/g10/main.h b/g10/main.h
index ec20b28df..92a26a7ed 100644
--- a/g10/main.h
+++ b/g10/main.h
@@ -396,9 +396,12 @@ gpg_error_t export_pubkey_buffer (ctrl_t ctrl, const char *keyspec,
gpg_error_t receive_seckey_from_agent (ctrl_t ctrl, gcry_cipher_hd_t cipherhd,
int cleartext,
- char **cache_nonce_addr, const char *hexgrip,
+ char **cache_nonce_addr,
+ const char *hexgrip,
PKT_public_key *pk);
+gpg_error_t write_keyblock_to_output (kbnode_t keyblock, int with_armor);
+
gpg_error_t export_ssh_key (ctrl_t ctrl, const char *userid);
/*-- dearmor.c --*/