aboutsummaryrefslogtreecommitdiffstats
path: root/g10/export.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/export.c')
-rw-r--r--g10/export.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/g10/export.c b/g10/export.c
index 86bc6546c..73aa750e9 100644
--- a/g10/export.c
+++ b/g10/export.c
@@ -49,6 +49,7 @@ parse_export_options(char *str,unsigned int *options,int noisy)
{"export-attributes",EXPORT_ATTRIBUTES,NULL},
{"export-sensitive-revkeys",EXPORT_SENSITIVE_REVKEYS,NULL},
{"export-minimal",EXPORT_MINIMAL,NULL},
+ {"export-unusable-sigs",EXPORT_UNUSABLE_SIGS,NULL},
/* Aliases for backward compatibility */
{"include-local-sigs",EXPORT_LOCAL_SIGS,NULL},
{"include-attributes",EXPORT_ATTRIBUTES,NULL},
@@ -314,7 +315,7 @@ do_export_stream( IOBUF out, STRLIST users, int secret,
if( node->pkt->pkttype == PKT_SIGNATURE )
{
- /* If we have minimal-export turned on, do not include
+ /* If we have export-minimal turned on, do not include
any signature that isn't a selfsig. Note that this
only applies to uid sigs (0x10, 0x11, 0x12, and
0x13). A designated revocation is not stripped. */
@@ -324,6 +325,16 @@ do_export_stream( IOBUF out, STRLIST users, int secret,
|| node->pkt->pkt.signature->keyid[1]!=keyid[1]))
continue;
+ /* We do basically the same thing for
+ export-unusable-sigs. It only applies to expired
+ uid sigs that aren't selfsigs. */
+ if(!(options&EXPORT_UNUSABLE_SIGS)
+ && IS_UID_SIG(node->pkt->pkt.signature)
+ && node->pkt->pkt.signature->flags.expired
+ && (node->pkt->pkt.signature->keyid[0]!=keyid[0]
+ || node->pkt->pkt.signature->keyid[1]!=keyid[1]))
+ continue;
+
/* do not export packets which are marked as not exportable */
if(!(options&EXPORT_LOCAL_SIGS)
&& !node->pkt->pkt.signature->flags.exportable)