aboutsummaryrefslogtreecommitdiffstats
path: root/g10/keygen.c
diff options
context:
space:
mode:
Diffstat (limited to 'g10/keygen.c')
-rw-r--r--g10/keygen.c31
1 files changed, 17 insertions, 14 deletions
diff --git a/g10/keygen.c b/g10/keygen.c
index 0f4fb96ef..33a5a217c 100644
--- a/g10/keygen.c
+++ b/g10/keygen.c
@@ -824,7 +824,7 @@ keygen_add_revkey (PKT_signature *sig, void *opaque)
gpg_error_t
make_backsig (PKT_signature *sig, PKT_public_key *pk,
PKT_public_key *sub_pk, PKT_public_key *sub_psk,
- u32 timestamp)
+ u32 timestamp, const char *cache_nonce)
{
gpg_error_t err;
PKT_signature *backsig;
@@ -832,7 +832,7 @@ make_backsig (PKT_signature *sig, PKT_public_key *pk,
cache_public_key (sub_pk);
err = make_keysig_packet (&backsig, pk, NULL, sub_pk, sub_psk, 0x19,
- 0, 0, timestamp, 0, NULL, NULL);
+ 0, 0, timestamp, 0, NULL, NULL, cache_nonce);
if (err)
log_error ("make_keysig_packet failed for backsig: %s\n", g10_errstr(err));
else
@@ -918,7 +918,8 @@ make_backsig (PKT_signature *sig, PKT_public_key *pk,
the timestamp to set on the signature. */
static gpg_error_t
write_direct_sig (KBNODE root, PKT_public_key *psk,
- struct revocation_key *revkey, u32 timestamp)
+ struct revocation_key *revkey, u32 timestamp,
+ const char *cache_nonce)
{
gpg_error_t err;
PACKET *pkt;
@@ -942,7 +943,7 @@ write_direct_sig (KBNODE root, PKT_public_key *psk,
/* Make the signature. */
err = make_keysig_packet (&sig, pk, NULL,NULL, psk, 0x1F,
0, 0, timestamp, 0,
- keygen_add_revkey, revkey);
+ keygen_add_revkey, revkey, cache_nonce);
if (err)
{
log_error ("make_keysig_packet failed: %s\n", g10_errstr (err) );
@@ -963,7 +964,7 @@ write_direct_sig (KBNODE root, PKT_public_key *psk,
signature. */
static gpg_error_t
write_selfsigs (KBNODE root, PKT_public_key *psk,
- unsigned int use, u32 timestamp)
+ unsigned int use, u32 timestamp, const char *cache_nonce)
{
gpg_error_t err;
PACKET *pkt;
@@ -997,7 +998,7 @@ write_selfsigs (KBNODE root, PKT_public_key *psk,
/* Make the signature. */
err = make_keysig_packet (&sig, pk, uid, NULL, psk, 0x13,
0, 0, timestamp, 0,
- keygen_add_std_prefs, pk);
+ keygen_add_std_prefs, pk, cache_nonce);
if (err)
{
log_error ("make_keysig_packet failed: %s\n", g10_errstr (err));
@@ -1019,7 +1020,7 @@ write_selfsigs (KBNODE root, PKT_public_key *psk,
used if USE has the PUBKEY_USAGE_SIG capability. */
static int
write_keybinding (KBNODE root, PKT_public_key *pri_psk, PKT_public_key *sub_psk,
- unsigned int use, u32 timestamp)
+ unsigned int use, u32 timestamp, const char *cache_nonce)
{
gpg_error_t err;
PACKET *pkt;
@@ -1056,7 +1057,8 @@ write_keybinding (KBNODE root, PKT_public_key *pri_psk, PKT_public_key *sub_psk,
oduap.pk = sub_pk;
err = make_keysig_packet (&sig, pri_pk, NULL, sub_pk, pri_psk, 0x18,
0, 0, timestamp, 0,
- keygen_add_key_flags_and_expire, &oduap);
+ keygen_add_key_flags_and_expire, &oduap,
+ cache_nonce);
if (err)
{
log_error ("make_keysig_packet failed: %s\n", g10_errstr (err));
@@ -1066,7 +1068,7 @@ write_keybinding (KBNODE root, PKT_public_key *pri_psk, PKT_public_key *sub_psk,
/* Make a backsig. */
if (use & PUBKEY_USAGE_SIG)
{
- err = make_backsig (sig, pri_pk, sub_pk, sub_psk, timestamp);
+ err = make_backsig (sig, pri_pk, sub_pk, sub_psk, timestamp, cache_nonce);
if (err)
return err;
}
@@ -3254,13 +3256,14 @@ do_generate_keypair (struct para_data_s *para,
}
if (!err && (revkey = get_parameter_revkey (para, pREVOKER)))
- err = write_direct_sig (pub_root, pri_psk, revkey, timestamp);
+ err = write_direct_sig (pub_root, pri_psk, revkey, timestamp, cache_nonce);
if (!err && (s = get_parameter_value (para, pUSERID)))
{
write_uid (pub_root, s );
err = write_selfsigs (pub_root, pri_psk,
- get_parameter_uint (para, pKEYUSAGE), timestamp);
+ get_parameter_uint (para, pKEYUSAGE), timestamp,
+ cache_nonce);
}
/* Write the auth key to the card before the encryption key. This
@@ -3277,7 +3280,7 @@ do_generate_keypair (struct para_data_s *para,
get_parameter_u32 (para, pKEYEXPIRE), para);
if (!err)
err = write_keybinding (pub_root, pri_psk, NULL,
- PUBKEY_USAGE_AUTH, timestamp);
+ PUBKEY_USAGE_AUTH, timestamp, cache_nonce);
}
if (!err && get_parameter (para, pSUBKEYTYPE))
@@ -3327,7 +3330,7 @@ do_generate_keypair (struct para_data_s *para,
if (!err)
err = write_keybinding (pub_root, pri_psk, sub_psk,
get_parameter_uint (para, pSUBKEYUSAGE),
- timestamp);
+ timestamp, cache_nonce);
did_sub = 1;
}
@@ -3526,7 +3529,7 @@ generate_subkeypair (KBNODE keyblock)
sub_psk = node->pkt->pkt.public_key;
/* Write the binding signature. */
- err = write_keybinding (keyblock, pri_psk, sub_psk, use, cur_time);
+ err = write_keybinding (keyblock, pri_psk, sub_psk, use, cur_time, NULL);
if (err)
goto leave;