GnuPG Migration Assistant

Robert J. Hansen rjh at
Sun Nov 16 03:28:39 CET 2014

Over the last few days there's been a lot of angry and hurtful words
thrown about surrounding the subject of trying to migrate a GnuPG 2.0
keyring.  I'm not going to weigh in on who's got the right of things or
who's being unreasonable.  I think we've all had the experience of being
deeply frustrated with things not working the way we think they should,
and as always I think a little sympathy for the frustrated is appropriate.

Don't get angry.  Do something productive instead.

So, in a spare hour I put together a quick and dirty tool to help Mac OS
X, Windows and UNIX users migrate their keyrings.  It's such a quick and
dirty tool that I don't have a fancy name for it, just "gpgma".

If you want to take a look at it, download it from

I've tested this out on both Windows 7 and on Fedora 20 using Mono 3.10.

It's primitive but it works and it might help you.  If there's interest
from the list, I'll see about turning it into a real application.

How does it work?

1.  Uncompress the zipfile to a directory and cd into it.
2.  (Windows) Double-click "gpgma.exe"
    (UNIX/Mac OS X) From a terminal, "mono ./gpgma.exe"
3.  You'll have a bouncing baby zipfile on your desktop.


Q0.  Didn't Hauke suggest something like this?
A0.  About a month ago or more, yes.  Nothing came of it, so I decided
to run with it.

Q1.  I don't trust it!  I don't trust you!
A1.  Great!  That's why you have source code.

Q2.  What's it licensed under?
A2.  This is so simple that I haven't even bothered to put an ISC
license at the top.  If it becomes important to you to have an official
free license for it, I'll post a revision with the ISC license at the top.

Q3.  Why C#?
A3.  Because it works across Mac OS X, Windows, and the free UNIX community.

Q4.  How does it work?
A4.  As simply as possible.  It figures out what OS it's running on and
looks for the appropriate GnuPG data directory (%APPDATA%\GnuPG on
Windows, $HOME/.gnupg for the others).  It then walks through that
directory looking for certain files, which it adds to a zipfile it
writes to your desktop.  (And yes, it handles the various Mac OS X,
Windows and UNIX desktop directories correctly.)

Q5.  Where can I find a signature for it?  I don't want to run a binary
without having a signature.
A5.  The binary is signed with the Authenticode key I use for my
professional work.  There is no detached signature for the binary.

Q6.  What about a signature for the source code?
A6.  Why?  It's like 100 lines.  Read it yourself and figure out if
there are any problems with it.

Q7.  It doesn't run on my [insert type of OS].
A7.  You need either Microsoft's .NET runtime (4.0 or later), or Mono
3.2 or later.  A lot of Linux distros still ship with Mono 2.10.

Q8.  It would be nice if...
A8.  I'm listening.  Talk to me.

Q9.  Are you going to put this on Github?
A9.  At only 100 lines of code, it's kind of embarrassingly small to put
on Github.  If there's interest, though, I'll put it up.

Q10. Is this an official GNU project?
A10. No.

Q11. Is this connected with GnuPG in any way?
A11. No.

Q12. I have Mono 3.10 on UNIX/Mac OS X.  How do I compile it?
A13. mcs -pkg:dotnet -r:System.IO.Compression -o:gpgma.exe gpgma.cs

More information about the Gnupg-users mailing list