1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-06-06 23:17:47 +02:00
gnupg/g10
Werner Koch 7777e68d04 Implement unattended OpenPGP secret key import.
* agent/command.c (cmd_import_key): Add option --unattended.
* agent/cvt-openpgp.c (convert_transfer_key): New.
(do_unprotect): Factor some code out to ...
(prepare_unprotect): new function.
(convert_from_openpgp): Factor all code out to ...
(convert_from_openpgp_main): this.  Add arg 'passphrase'.  Implement
openpgp-native protection modes.
(convert_from_openpgp_native): New.
* agent/t-protect.c (convert_from_openpgp_native): New dummy fucntion
* agent/protect-tool.c (convert_from_openpgp_native): Ditto.
* agent/protect.c (agent_unprotect): Add arg CTRL.  Adjust all
callers.  Support openpgp-native protection.
* g10/call-agent.c (agent_import_key): Add arg 'unattended'.
* g10/import.c (transfer_secret_keys): Use unattended in batch mode.
--

With the gpg-agent taking care of the secret keys, the user needs to
migrate existing keys from secring.gpg to the agent.  This and also
the standard import of secret keys required the user to unprotect the
secret keys first, so that gpg-agent was able to re-protected them
using its own scheme.  With many secret keys this is quite some
usability hurdle.  In particular if a passphrase is not instantly
available.

To make this migration smoother, this patch implements an unattended
key import/migration which delays the conversion to the gpg-agent
format until the key is actually used.  For example:

   gpg2 --batch --import mysecretkey.gpg

works without any user interaction due to the use of --batch.  Now if
a key is used (e.g. "gpg2 -su USERID_FROM_MYSECRETKEY foo"), gpg-agent
has to ask for the passphrase anyway, converts the key from the
openpgp format to the internal format, signs, re-encrypts the key and
tries to store it in the gpg-agent format to the disk.  The next time,
the internal format of the key is used.

This patch has only been tested with the old demo keys, more tests
with other protection formats and no protection are needed.

Signed-off-by: Werner Koch <wk@gnupg.org>
2013-05-22 10:14:57 +02:00
..
armor.c Fix faulty gcc warnings 2011-03-03 12:40:54 +01:00
build-packet.c Fixed set but unused variable bugs 2011-08-10 14:11:30 +02:00
call-agent.c Implement unattended OpenPGP secret key import. 2013-05-22 10:14:57 +02:00
call-agent.h Implement unattended OpenPGP secret key import. 2013-05-22 10:14:57 +02:00
call-dirmngr.c Use has_leading_keyword in the assuan callbacks. 2013-02-22 10:56:13 +01:00
call-dirmngr.h Require libgcrypt 1.5 2011-03-08 12:23:59 +01:00
card-util.c gpg: fix keytocard and support ECC card for key attribute. 2013-02-22 11:00:27 +09:00
ChangeLog-2011 Generate the ChangeLog from commit logs. 2011-12-01 11:09:02 +01:00
cipher.c Replace gcry_md_start_debug by gcry_md_debug. 2011-09-20 09:54:27 +02:00
comment.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
compress-bz2.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
compress.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
cpr.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
dearmor.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
decrypt-data.c Replace gcry_md_start_debug by gcry_md_debug. 2011-09-20 09:54:27 +02:00
decrypt.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
delkey.c gpg: Remove a function wrapper. 2013-01-08 09:43:21 +01:00
ecdh.c Removed memory leak in the ECDH code. 2011-04-28 10:51:14 +02:00
encrypt.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
exec.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
exec.h Changed to GPLv3. 2007-07-04 19:49:40 +00:00
export.c gpg: Remove a function wrapper. 2013-01-08 09:43:21 +01:00
filter.h Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
free-packet.c Allow NULL for free_public_key. 2011-09-20 19:24:52 +02:00
getkey.c Merge branch 'master' into key-storage-work 2013-03-20 10:00:12 +01:00
gpg-w32info.rc w32: Add icons and version information. 2013-05-07 21:35:48 +02:00
gpg.c Fix potential heap corruption in "gpg -v --version". 2013-04-22 20:43:27 +02:00
gpg.h Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
gpgv.c gpg: First patches to support a keybox storage backend. 2012-12-27 15:04:42 +01:00
helptext.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
import.c Implement unattended OpenPGP secret key import. 2013-05-22 10:14:57 +02:00
kbnode.c Add code to allow for late memory cleanup. 2013-03-20 09:50:17 +01:00
keydb.c gpg: Cache keybox searches. 2013-01-08 14:46:06 +01:00
keydb.h Merge branch 'master' into key-storage-work 2013-02-12 19:17:42 +01:00
keyedit.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
keygen.c gpg: Allow setting of all zero key flags 2013-03-19 17:26:42 +01:00
keyid.c Minor code cleanups. 2011-03-03 13:01:03 +01:00
keylist.c gpg: Print indicator for unknown key capability. 2013-03-19 17:26:42 +01:00
keyring.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
keyring.h Decryption and signi via agent is now implemented. 2010-04-23 11:36:59 +00:00
keyserver-internal.h Initial code checking for backup - not yet working. 2011-01-10 14:30:17 +01:00
keyserver.c gpg: Remove a function wrapper. 2013-01-08 09:43:21 +01:00
main.h gpg: Add status line PINENTRY_LAUNCHED. 2013-01-30 12:00:29 +01:00
mainproc.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
Makefile.am w32: Add icons and version information. 2013-05-07 21:35:48 +02:00
mdfilter.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
misc.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
openfile.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
OPTIONS See ChangeLog: Mon Jul 31 10:04:47 CEST 2000 Werner Koch 2000-07-31 08:04:16 +00:00
options.h Merge branch 'master' into key-storage-work 2013-02-12 19:17:42 +01:00
options.skel Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
packet.h Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
parse-packet.c Print decoded S2K count in --list-packets mode. 2011-07-18 10:57:33 +02:00
passphrase.c gpg: Fix a memory leak in batch key generation 2013-02-22 09:30:07 +01:00
photoid.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
photoid.h Decryption and signi via agent is now implemented. 2010-04-23 11:36:59 +00:00
pkclist.c gpg: Suppress "public key already present" in quiet mode. 2012-12-19 11:21:26 +01:00
pkglue.c Fix for latest fix in Libgcrypt. 2011-06-13 14:54:40 +02:00
pkglue.h Compute the fingerprint for ECDH only on demand. 2011-02-02 17:40:32 +01:00
plaintext.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
progress.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
pubkey-enc.c Merge branch 'master' into key-storage-work 2013-02-12 19:17:42 +01:00
pubring.asc See ChangeLog: Mon Jul 31 10:04:47 CEST 2000 Werner Koch 2000-07-31 08:04:16 +00:00
revoke.c gpg: Remove a function wrapper. 2013-01-08 09:43:21 +01:00
rmd160.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
rmd160.h Add missing header file. 2008-12-12 08:54:50 +00:00
seckey-cert.c Add tweaks for the not anymore patented IDEA algorithm. 2012-05-08 18:18:32 +02:00
server.c gpg: Add status line PINENTRY_LAUNCHED. 2013-01-30 12:00:29 +01:00
seskey.c Fix typos spotted during translations 2012-08-24 09:44:33 +02:00
sig-check.c Fixed set but unused variable bugs 2011-08-10 14:11:30 +02:00
sign.c gpg: Add pinentry-mode feature. 2013-02-07 20:37:58 +01:00
signal.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
skclist.c Allow NULL for free_public_key. 2011-09-20 19:24:52 +02:00
t-rmd160.c Nuked almost all trailing white space. 2011-02-04 12:57:53 +01:00
tdbdump.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
tdbio.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00
tdbio.h Changes to --min-cert-level should cause a trustdb rebuild (issue 1366) 2012-01-20 16:50:42 -05:00
textfilter.c Started to implement the audit log feature. 2007-11-19 16:03:50 +00:00
trustdb.c gpg: Remove a function wrapper. 2013-01-08 09:43:21 +01:00
trustdb.h Changes to --min-cert-level should cause a trustdb rebuild (issue 1366) 2012-01-20 16:50:42 -05:00
verify.c Change all quotes in strings and comments to the new GNU standard. 2012-06-05 19:29:22 +02:00