* 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.
This commit is contained in:
David Shaw 2006-06-12 12:05:34 +00:00
parent 7211ee589a
commit 4f7b459a96
2 changed files with 13 additions and 6 deletions

View File

@ -1,3 +1,9 @@
2006-06-12 David Shaw <dshaw@jabberwocky.com>
* 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.
2006-06-09 David Shaw <dshaw@jabberwocky.com>
* keygen.c (gen_card_key): Add optional argument to return a

View File

@ -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);
}
}