aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--g10/ChangeLog4
-rw-r--r--g10/export.c11
2 files changed, 11 insertions, 4 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 94be194bf..7cf78e4f4 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,5 +1,9 @@
2004-11-26 David Shaw <[email protected]>
+ * export.c (do_export_stream): Allow export-minimal to work with
+ secret keys, even though a non-selfsig secret key signature is
+ rare.
+
* options.h, export.c (parse_export_options, do_export_stream),
import.c (parse_import_options, import_keys_internal): Make the
import-options and export-options distinct since they can be mixed
diff --git a/g10/export.c b/g10/export.c
index f56019b37..86bc6546c 100644
--- a/g10/export.c
+++ b/g10/export.c
@@ -145,7 +145,7 @@ do_export_stream( IOBUF out, STRLIST users, int secret,
KEYDB_SEARCH_DESC *desc = NULL;
KEYDB_HANDLE kdbhd;
STRLIST sl;
- u32 pk_keyid[2];
+ u32 keyid[2];
*any = 0;
init_packet( &pkt );
@@ -220,10 +220,13 @@ do_export_stream( IOBUF out, STRLIST users, int secret,
keystr(sk_keyid));
continue;
}
+
+ if(options&EXPORT_MINIMAL)
+ keyid_from_sk(sk,keyid);
}
else if((options&EXPORT_MINIMAL)
&& (node=find_kbnode(keyblock,PKT_PUBLIC_KEY)))
- keyid_from_pk(node->pkt->pkt.public_key,pk_keyid);
+ keyid_from_pk(node->pkt->pkt.public_key,keyid);
/* and write it */
for( kbctx=NULL; (node = walk_kbnode( keyblock, &kbctx, 0 )); ) {
@@ -317,8 +320,8 @@ do_export_stream( IOBUF out, STRLIST users, int secret,
0x13). A designated revocation is not stripped. */
if((options&EXPORT_MINIMAL)
&& IS_UID_SIG(node->pkt->pkt.signature)
- && (node->pkt->pkt.signature->keyid[0]!=pk_keyid[0]
- || node->pkt->pkt.signature->keyid[1]!=pk_keyid[1]))
+ && (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 */