diff options
author | NIIBE Yutaka <[email protected]> | 2017-11-01 01:19:35 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2017-11-01 01:19:35 +0000 |
commit | 6c63a04569c07c9c2817c7c530a92ccfa58155cc (patch) | |
tree | 8f115181445ed4a4616be968d6e1e7ca60b27a6c | |
parent | g10: Simplify "factory-reset" procedure. (diff) | |
download | gnupg-6c63a04569c07c9c2817c7c530a92ccfa58155cc.tar.gz gnupg-6c63a04569c07c9c2817c7c530a92ccfa58155cc.zip |
g10: Unattended key generation "Key-Grip" and "Subkey-Grip".
* g10/keygen.c (pSUBKEYGRIP): New.
(read_parameter_file): Add "Key-Grip" and "Subkey-Grip".
(do_generate_keypair): Support pSUBKEYGRIP.
--
In the manual, it says "Key-Grip". gpgsm also supports "Key-Grip".
Adding "Subkey-Grip" now, adding "Key-Grip" makes sense.
GnuPG-bug-id: 3478
Signed-off-by: NIIBE Yutaka <[email protected]>
-rw-r--r-- | g10/keygen.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/g10/keygen.c b/g10/keygen.c index 1dddfeeda..e63fbaabe 100644 --- a/g10/keygen.c +++ b/g10/keygen.c @@ -89,7 +89,8 @@ enum para_name { pCARDBACKUPKEY, pHANDLE, pKEYSERVER, - pKEYGRIP + pKEYGRIP, + pSUBKEYGRIP, }; struct para_data_s { @@ -3648,6 +3649,8 @@ read_parameter_file (ctrl_t ctrl, const char *fname ) { "Handle", pHANDLE }, { "Keyserver", pKEYSERVER }, { "Keygrip", pKEYGRIP }, + { "Key-Grip", pKEYGRIP }, + { "Subkey-grip", pSUBKEYGRIP }, { NULL, 0 } }; IOBUF fp; @@ -4696,8 +4699,7 @@ do_generate_keypair (ctrl_t ctrl, struct para_data_s *para, if (!err && card && get_parameter (para, pAUTHKEYTYPE)) { err = gen_card_key (3, get_parameter_algo( para, pAUTHKEYTYPE, NULL ), - 0, pub_root, ×tamp, - get_parameter_u32 (para, pKEYEXPIRE)); + 0, pub_root, ×tamp, expire); if (!err) err = write_keybinding (ctrl, pub_root, pri_psk, NULL, PUBKEY_USAGE_AUTH, timestamp, cache_nonce); @@ -4705,11 +4707,18 @@ do_generate_keypair (ctrl_t ctrl, struct para_data_s *para, if (!err && get_parameter (para, pSUBKEYTYPE)) { - sub_psk = NULL; + int subkey_algo = get_parameter_algo (para, pSUBKEYTYPE, NULL); + s = NULL; - if (!card || (s = get_parameter_value (para, pCARDBACKUPKEY))) + key_from_hexgrip = get_parameter_value (para, pSUBKEYGRIP); + if (key_from_hexgrip) + err = do_create_from_keygrip (ctrl, subkey_algo, key_from_hexgrip, + pub_root, timestamp, + get_parameter_u32 (para, pSUBKEYEXPIRE), + 1); + else if (!card || (s = get_parameter_value (para, pCARDBACKUPKEY))) { - err = do_create (get_parameter_algo (para, pSUBKEYTYPE, NULL), + err = do_create (subkey_algo, get_parameter_uint (para, pSUBKEYLENGTH), get_parameter_value (para, pSUBKEYCURVE), pub_root, @@ -4735,9 +4744,7 @@ do_generate_keypair (ctrl_t ctrl, struct para_data_s *para, } else { - err = gen_card_key (2, get_parameter_algo (para, pSUBKEYTYPE, NULL), - 0, pub_root, ×tamp, - get_parameter_u32 (para, pKEYEXPIRE)); + err = gen_card_key (2, subkey_algo, 0, pub_root, ×tamp, expire); } if (!err) |