aboutsummaryrefslogtreecommitdiffstats
path: root/g10/import.c
diff options
context:
space:
mode:
authorDavid Shaw <[email protected]>2006-06-12 12:05:34 +0000
committerDavid Shaw <[email protected]>2006-06-12 12:05:34 +0000
commit4f7b459a9670d67d217022719cad8243f23cf8b3 (patch)
tree0b1369bf2509216ce60ce0e6368d63e8fb5a0645 /g10/import.c
parent* keygen.c (gen_card_key): Add optional argument to return a pointer (diff)
downloadgnupg-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.c13
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);
}
}