diff options
author | David Shaw <[email protected]> | 2006-06-12 12:05:34 +0000 |
---|---|---|
committer | David Shaw <[email protected]> | 2006-06-12 12:05:34 +0000 |
commit | 4f7b459a9670d67d217022719cad8243f23cf8b3 (patch) | |
tree | 0b1369bf2509216ce60ce0e6368d63e8fb5a0645 /g10/import.c | |
parent | * keygen.c (gen_card_key): Add optional argument to return a pointer (diff) | |
download | gnupg-4f7b459a9670d67d217022719cad8243f23cf8b3.tar.gz gnupg-4f7b459a9670d67d217022719cad8243f23cf8b3.zip |
* import.c (import_one): Add a flag (from_sk) so we don't check prefs
on an autoconverted public key. The check should only happen on the
sk size. Noted by Dirk Traulsen.
Diffstat (limited to 'g10/import.c')
-rw-r--r-- | g10/import.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/g10/import.c b/g10/import.c index e94d3568e..eeacb58d1 100644 --- a/g10/import.c +++ b/g10/import.c @@ -66,7 +66,7 @@ static int read_block( IOBUF a, PACKET **pending_pkt, KBNODE *ret_root ); static void revocation_present(KBNODE keyblock); static int import_one(const char *fname, KBNODE keyblock,struct stats_s *stats, unsigned char **fpr,size_t *fpr_len, - unsigned int options); + unsigned int options,int from_sk); static int import_secret_one( const char *fname, KBNODE keyblock, struct stats_s *stats, unsigned int options); static int import_revoke_cert( const char *fname, KBNODE node, @@ -256,7 +256,7 @@ import( IOBUF inp, const char* fname,struct stats_s *stats, while( !(rc = read_block( inp, &pending_pkt, &keyblock) )) { if( keyblock->pkt->pkttype == PKT_PUBLIC_KEY ) - rc = import_one( fname, keyblock, stats, fpr, fpr_len, options ); + rc = import_one( fname, keyblock, stats, fpr, fpr_len, options, 0); else if( keyblock->pkt->pkttype == PKT_SECRET_KEY ) rc = import_secret_one( fname, keyblock, stats, options ); else if( keyblock->pkt->pkttype == PKT_SIGNATURE @@ -677,7 +677,8 @@ check_prefs(KBNODE keyblock) */ static int import_one( const char *fname, KBNODE keyblock, struct stats_s *stats, - unsigned char **fpr,size_t *fpr_len,unsigned int options ) + unsigned char **fpr,size_t *fpr_len,unsigned int options, + int from_sk ) { PKT_public_key *pk; PKT_public_key *pk_orig; @@ -973,7 +974,7 @@ import_one( const char *fname, KBNODE keyblock, struct stats_s *stats, if(mod_key) { revocation_present(keyblock_orig); - if(seckey_available(keyid)==0) + if(!from_sk && seckey_available(keyid)==0) check_prefs(keyblock_orig); } else if(new_key) @@ -997,7 +998,7 @@ import_one( const char *fname, KBNODE keyblock, struct stats_s *stats, } revocation_present(keyblock); - if(seckey_available(keyid)==0) + if(!from_sk && seckey_available(keyid)==0) check_prefs(keyblock); } @@ -1169,7 +1170,7 @@ import_secret_one( const char *fname, KBNODE keyblock, if(pub_keyblock) { import_one(fname,pub_keyblock,stats, - NULL,NULL,opt.import_options); + NULL,NULL,opt.import_options,1); release_kbnode(pub_keyblock); } } |