aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2024-01-24 17:23:02 +0000
committerWerner Koch <[email protected]>2024-01-24 17:26:01 +0000
commitd4976e35d2ca431b2a651aa11be8a4589c8dd39a (patch)
tree7b0e4d8566d734a274d13f006647c0f32c1ce32c
parentpo: Update German translation. (diff)
downloadgnupg-d4976e35d2ca431b2a651aa11be8a4589c8dd39a.tar.gz
gnupg-d4976e35d2ca431b2a651aa11be8a4589c8dd39a.zip
gpg: Add sub-option ignore-attributes to --import-options.
* g10/options.h (IMPORT_IGNORE_ATTRIBUTES): New. * g10/import.c (parse_import_options): Add new sub-option. (read_block): Implement sub-option. -- Suggested-by: Robin H. Johnson Tested using the import-export feature: gpg --export KEY_WITH_PICTURE \ | gpg --import --import-options import-export,ignore-attributes \ | gpg --show-key
-rw-r--r--doc/gpg.texi4
-rw-r--r--g10/import.c12
-rw-r--r--g10/options.h1
3 files changed, 17 insertions, 0 deletions
diff --git a/doc/gpg.texi b/doc/gpg.texi
index a54bc1fee..1bc2bd9e4 100644
--- a/doc/gpg.texi
+++ b/doc/gpg.texi
@@ -2579,6 +2579,10 @@ opposite meaning. The options are:
import-clean it suppresses the final clean step after merging the
imported key into the existing key.
+ @item ignore-attributes
+ Ignore all attribute user IDs (photo IDs) and their signatures while
+ importing a key.
+
@item repair-keys
After import, fix various problems with the
keys. For example, this reorders signatures, and strips duplicate
diff --git a/g10/import.c b/g10/import.c
index c1e76c3f0..8f874a7d1 100644
--- a/g10/import.c
+++ b/g10/import.c
@@ -209,6 +209,9 @@ parse_import_options(char *str,unsigned int *options,int noisy)
{"repair-keys", IMPORT_REPAIR_KEYS, NULL,
N_("repair keys on import")},
+ /* New options. Right now, without description string. */
+ {"ignore-attributes", IMPORT_IGNORE_ATTRIBUTES, NULL, NULL},
+
/* Hidden options which are enabled by default and are provided
* in case of problems with the respective implementation. */
{"collapse-uids", IMPORT_COLLAPSE_UIDS, NULL, NULL},
@@ -1008,6 +1011,15 @@ read_block( IOBUF a, unsigned int options,
init_packet(pkt);
continue;
}
+ else if ((opt.import_options & IMPORT_IGNORE_ATTRIBUTES)
+ && (pkt->pkttype == PKT_USER_ID || pkt->pkttype == PKT_ATTRIBUTE)
+ && pkt->pkt.user_id->attrib_data)
+ {
+ skip_sigs = 1;
+ free_packet (pkt, &parsectx);
+ init_packet (pkt);
+ continue;
+ }
if (skip_sigs)
{
diff --git a/g10/options.h b/g10/options.h
index e0ee99533..146b78361 100644
--- a/g10/options.h
+++ b/g10/options.h
@@ -406,6 +406,7 @@ EXTERN_UNLESS_MAIN_MODULE int memory_stat_debug_mode;
#define IMPORT_COLLAPSE_UIDS (1<<15)
#define IMPORT_COLLAPSE_SUBKEYS (1<<16)
#define IMPORT_BULK (1<<17)
+#define IMPORT_IGNORE_ATTRIBUTES (1<<18)
#define EXPORT_LOCAL_SIGS (1<<0)
#define EXPORT_ATTRIBUTES (1<<1)