aboutsummaryrefslogtreecommitdiffstats
path: root/g10/migrate.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--g10/migrate.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/g10/migrate.c b/g10/migrate.c
index 9a21cfe8e..5cb3512d9 100644
--- a/g10/migrate.c
+++ b/g10/migrate.c
@@ -29,6 +29,7 @@
#include "keydb.h"
#include "util.h"
#include "main.h"
+#include "call-agent.h"
#ifdef HAVE_DOSISH_SYSTEM
@@ -46,6 +47,7 @@ migrate_secring (ctrl_t ctrl)
dotlock_t lockhd = NULL;
char *secring = NULL;
char *flagfile = NULL;
+ char *agent_version = NULL;
secring = make_filename (opt.homedir, "secring" EXTSEP_S "gpg", NULL);
if (access (secring, F_OK))
@@ -72,6 +74,27 @@ migrate_secring (ctrl_t ctrl)
goto leave;
}
+ if (!agent_get_version (ctrl, &agent_version))
+ {
+ if (!gnupg_compare_version (agent_version, "2.1.0"))
+ {
+ log_error ("error: GnuPG agent version \"%s\" is too old. ",
+ agent_version);
+ log_error ("Please install an updated GnuPG agent.\n");
+ log_error ("migration aborted\n");
+ xfree (agent_version);
+ goto leave;
+ }
+ xfree (agent_version);
+ }
+ else
+ {
+ log_error ("error: GnuPG agent unusable. "
+ "Please check that a GnuPG agent can be started.\n");
+ log_error ("migration aborted\n");
+ goto leave;
+ }
+
log_info ("porting secret keys from '%s' to gpg-agent\n", secring);
if (!import_old_secring (ctrl, secring))
{