dirmngr: Fix https incorrectly reported in help
[gnupg.git] / g10 / migrate.c
index 9a21cfe..48cbdd0 100644 (file)
@@ -22,6 +22,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <errno.h>
+#include <unistd.h>
 #include <assert.h>
 
 #include "gpg.h"
@@ -29,6 +30,7 @@
 #include "keydb.h"
 #include "util.h"
 #include "main.h"
+#include "call-agent.h"
 
 
 #ifdef HAVE_DOSISH_SYSTEM
@@ -46,6 +48,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 +75,28 @@ 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_info ("Please make sure that a recent gpg-agent is running.\n");
+          log_info ("(restarting the user session may achieve this.)\n");
+          log_info ("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))
     {