mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
gpg: New options import-drop-uids and export-drop-uids.
* g10/options.h (IMPORT_DROP_UIDS): New. (EXPORT_DROP_UIDS): New. * g10/import.c (parse_import_options): Add option "import-drop-uids". (import_one): Don't bail out with that options and no uids found. Also remove all uids. (remove_all_uids): New. * g10/export.c (parse_export_options): Add option "export-drop-uids". (do_export_one_keyblock): Implement option. -- These options are required for experiments with changes to the keyserver infrastructure. Signed-off-by: Werner Koch <wk@gnupg.org>
This commit is contained in:
parent
50b02dba20
commit
8e83493dae
5 changed files with 94 additions and 9 deletions
29
g10/export.c
29
g10/export.c
|
@ -97,7 +97,7 @@ cleanup_export_globals (void)
|
|||
}
|
||||
|
||||
|
||||
/* Option parser for export options. See parse_options fro
|
||||
/* Option parser for export options. See parse_options for
|
||||
details. */
|
||||
int
|
||||
parse_export_options(char *str,unsigned int *options,int noisy)
|
||||
|
@ -114,6 +114,8 @@ parse_export_options(char *str,unsigned int *options,int noisy)
|
|||
N_("remove unusable parts from key during export")},
|
||||
{"export-minimal",EXPORT_MINIMAL|EXPORT_CLEAN,NULL,
|
||||
N_("remove as much as possible from key during export")},
|
||||
{"export-drop-uids", EXPORT_DROP_UIDS, NULL,
|
||||
N_("Do not export user id or attribute packets")},
|
||||
|
||||
{"export-pka", EXPORT_PKA_FORMAT, NULL, NULL },
|
||||
{"export-dane", EXPORT_DANE_FORMAT, NULL, NULL },
|
||||
|
@ -136,14 +138,20 @@ parse_export_options(char *str,unsigned int *options,int noisy)
|
|||
int rc;
|
||||
|
||||
rc = parse_options (str, options, export_opts, noisy);
|
||||
if (rc && (*options & EXPORT_BACKUP))
|
||||
if (!rc)
|
||||
return 0;
|
||||
|
||||
/* Alter other options we want or don't want for restore. */
|
||||
if ((*options & EXPORT_BACKUP))
|
||||
{
|
||||
/* Alter other options we want or don't want for restore. */
|
||||
*options |= (EXPORT_LOCAL_SIGS | EXPORT_ATTRIBUTES
|
||||
| EXPORT_SENSITIVE_REVKEYS);
|
||||
*options &= ~(EXPORT_CLEAN | EXPORT_MINIMAL
|
||||
| EXPORT_PKA_FORMAT | EXPORT_DANE_FORMAT);
|
||||
}
|
||||
/* Dropping uids also means to drop attributes. */
|
||||
if ((*options & EXPORT_DROP_UIDS))
|
||||
*options &= ~(EXPORT_ATTRIBUTES);
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
@ -1575,7 +1583,7 @@ do_export_one_keyblock (ctrl_t ctrl, kbnode_t keyblock, u32 *keyid,
|
|||
if (node->pkt->pkttype == PKT_COMMENT)
|
||||
continue;
|
||||
|
||||
/* Skip ring trust packets - they should not ne here anyway. */
|
||||
/* Skip ring trust packets - they should not be here anyway. */
|
||||
if (node->pkt->pkttype == PKT_RING_TRUST)
|
||||
continue;
|
||||
|
||||
|
@ -1650,6 +1658,19 @@ do_export_one_keyblock (ctrl_t ctrl, kbnode_t keyblock, u32 *keyid,
|
|||
}
|
||||
}
|
||||
|
||||
/* Don't export user ids (and attributes)? This is not RFC-4880
|
||||
* compliant but we allow it anyway. */
|
||||
if ((options & EXPORT_DROP_UIDS)
|
||||
&& node->pkt->pkttype == PKT_USER_ID)
|
||||
{
|
||||
/* Skip until we get to something that is not a user id (or
|
||||
* attrib) or a signature on it. */
|
||||
while (kbctx->next && kbctx->next->pkt->pkttype == PKT_SIGNATURE)
|
||||
kbctx = kbctx->next;
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
/* Don't export attribs? */
|
||||
if (!(options & EXPORT_ATTRIBUTES)
|
||||
&& node->pkt->pkttype == PKT_USER_ID
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue