This article is much more targeted at Unix-like users, like GNU/Linux, MacOS and BSD. You all have termial emulators like konsole, Yakuake, Guake or Terminal under Mac. Everything described in this article are to be done in a termial.

Gpg --version

It is better to use the current gpg release : 2, rather than the legacy as I told you in one of the articles in the first serie. It is what I do in this whole article, even though I don't write the release number.

As usual, using gpg in command line is extremely powerfull. Opposite, there are a number of things you cannot do in graphical interface.

Me being french, I setup my computer in this language. This is why a lot of gpg's answer are in french. But you can recognize what I do. No worries. The manual and the help are in english.

Basic commands summary

It remains a summary. The best way to know about all possibilities is still to call the manual, or use the --help* option (because the manual can still be complicated). Yet I feel there is need for little explanation, and it's the reason behind this tutorial.

You run the command this way:

gpg --option

As said before, this will tell you about the various possibilities:

gpg --help

Just a cheat sheet

If you followed my advices about gpg conf', gpg shall give you long id and fingerprints when asked keys listings:

stephane@luciole:~$ gpg --list-keys

pub   rsa4096/42E0A02EF1C935A4 2015-02-15 [SC] [expire : 2017-04-27]
    Empreinte de la clef = 30CF 1DA5 7E87 6BAA 730D  E561 42E0 A02E F1C9 35A4
uid                [  ultime ] Tutoriel GPG <tuto-gpg@22decembre.eu>
sub   rsa4096/D1697B1537D4D659 2016-04-27 [E] [expire : 2017-04-27]

The first element of the identifier indicates the length of the key (4096 bits here) and type (RSA in this case), then the identifier itself, after which the date of creation, and finally the expiration date in brackets.

Signing and other stuff are done editing the key, no matter if it's your ( you have the private key) or not:

gpg --edit 'id clé'

You can use the mail address to the key, but you can get the wrong key, even if it has been revoked.

Best way is still to use the key identifier. Here is the tutorial key for example:

gpg --edit '42E0A02EF1C935A4'

You are then granted an internal command line to gpg:

gpg>

Where you can again have detailled options:

gpg> help

Let's start

Le but de cet article, c'est de vous permettre de maîtriser la ligne de commande de gpg.

Caution

I advise you to save your private keys if you do not have a backup now (and the public keys of your usual correspondent) following the guidance provided in these previous articles.

I propose simply to manipulate the key and see the different possibilities offered by the gpg command line. And to do that, we'll create a key, just for that purpose.

Create a key

In your terminal, just type it (or copy-paste):

gpg --full-gen-key

This command will give you all the available choices rather than defaults.

[stephane@Jabberwocky ~]$ gpg --full-gen-key 
gpg (GnuPG) 2.1.11; Copyright (C) 2016 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Sélectionnez le type de clef désiré :
(1) RSA et RSA (par défaut)
(2) DSA et Elgamal
(3) DSA (signature seule)
(4) RSA (signature seule)
Quel est votre choix ? 1

Here it is fine to use the default choice, because we want to see usual choices.

les clefs RSA peuvent faire une taille comprise entre 1024 et 4096 bits.
Quelle taille de clef désirez-vous ? (2048) 1024

As it is a key to simply play and test the software, I won't ask for full power, but instead small size. 1024 bits.

La taille demandée est 1024 bits
Veuillez indiquer le temps pendant lequel cette clef devrait être valable.
        0 = la clef n'expire pas
    <n>  = la clef expire dans n jours
    <n>w = la clef expire dans n semaines
    <n>m = la clef expire dans n mois
    <n>y = la clef expire dans n ans
Pendant combien de temps la clef est-elle valable ? (0) 10

Ten days validity.

La clef expire le dim. 15 mai 2016 20:32:24 CEST
Est-ce correct ? (o/N) o

GnuPG doit construire une identité pour identifier la clef.

Nom réel : Stéphane Guedon
Adresse électronique : spamtrap@22decembre.eu

It asks me for a mail address. It is actually optionnal. Same as the comment. You can also set a passphrase or let it free.

Commentaire : 
Vous utilisez le jeu de caractères « utf-8 ».
Vous avez sélectionné cette identité :
    « Stéphane Guedon <spamtrap@22decembre.eu> »

Changer le (N)om, le (C)ommentaire, l'(A)dresse électronique
ou (O)ui/(Q)uitter ? o
De nombreux octets aléatoires doivent être générés. Vous devriez faire
autre chose (taper au clavier, déplacer la souris, utiliser les disques)
pendant la génération de nombres premiers ; cela donne au générateur de
nombres aléatoires une meilleure chance d'obtenir suffisamment d'entropie.
De nombreux octets aléatoires doivent être générés. Vous devriez faire
autre chose (taper au clavier, déplacer la souris, utiliser les disques)
pendant la génération de nombres premiers ; cela donne au générateur de
nombres aléatoires une meilleure chance d'obtenir suffisamment d'entropie.
gpg: clef AE028A5A marquée de confiance ultime.
gpg: revocation certificate stored as '/home/stephane/.gnupg/openpgp-revocs.d/DC4E466EFBC93FFB75AE12DAD0C3AD44AE028A5A.rev'
les clefs publique et secrète ont été créées et signées.

gpg: vérification de la base de confiance
gpg: marginals needed: 3  completes needed: 1  trust model: PGP
gpg: profondeur : 0  valables :   4  signées :   0
    confiance : 0 i., 0 n.d., 0 j., 0 m., 0 t., 4 u.
gpg: la prochaine vérification de la base de confiance aura lieu le 2016-05-15
pub   rsa1024/D0C3AD44AE028A5A 2016-05-05 [S] [expire : 2016-05-15]
Empreinte de la clef = DC4E 466E FBC9 3FFB 75AE  12DA D0C3 AD44 AE02 8A5A
uid        [  ultime ] Stéphane Guedon <spamtrap@22decembre.eu>
sub   rsa1024/0A7946205EB6EC32 2016-05-05 [] [expire : 2016-05-15]

[stephane@Jabberwocky ~]$

And voila, we now have a 1024 key to play with. You can check with -K, which display private keys on the machine:

[stephane@Jabberwocky ~]$ gpg -K
/home/stephane/.gnupg/pubring.kbx
---------------------------------

...
sec   rsa1024/D0C3AD44AE028A5A 2016-05-05 [SC] [expire : 2016-05-15]
    Empreinte de la clef = DC4E 466E FBC9 3FFB 75AE  12DA D0C3 AD44 AE02 8A5A
uid                [  ultime ] Stéphane Guedon <spamtrap@22decembre.eu>
ssb   rsa1024/0A7946205EB6EC32 2016-05-05 [E] [expire : 2016-05-15]

Edit

So, let's play a bit with the bits… Launch gpg with --edit-key and your new key's identifier.

gpg --edit-key D0C3AD44AE028A5A

Here is the gpg command line:

sec  rsa1024/D0C3AD44AE028A5A
    créé : 2016-05-05  expire : 2016-05-15  utilisation : SC  
    confiance : ultime        validité : ultime
ssb  rsa1024/5EB6EC32
    créé : 2016-05-05  expire : 2016-05-15  utilisation : E   
[  ultime ] (1). Stéphane Guedon <spamtrap@22decembre.eu>

gpg>

We are first going to modify validity date with expire:

gpg> expire
Modification de la date d'expiration de la clef principale.
Veuillez indiquer le temps pendant lequel cette clef devrait être valable.
        0 = la clef n'expire pas
    <n>  = la clef expire dans n jours
    <n>w = la clef expire dans n semaines
    <n>m = la clef expire dans n mois
    <n>y = la clef expire dans n ans
Pendant combien de temps la clef est-elle valable ? (0) 30
La clef expire le dim. 05 juin 2016 09:16:59 CEST
Est-ce correct ? (o/N) o

sec  rsa1024/D0C3AD44AE028A5A
    créé : 2016-05-05  expire : 2016-06-05  utilisation : SC  
    confiance : ultime        validité : ultime

The key is now valid 30 days instead of 10.

ssb  rsa1024/0A7946205EB6EC32
    créé : 2016-05-05  expire : 2016-05-15  utilisation : E   
[  ultime ] (1). Stéphane Guedon <spamtrap@22decembre.eu>

But the subkey is still the same date.

A second subkey

We are going to play a bit more while creating a second subkey.

gpg> addkey
Sélectionnez le type de clef désiré :
(3) DSA (signature seule)
(4) RSA (signature seule)
(5) Elgamal (chiffrement seul)
(6) RSA (chiffrement seul)
Quel est votre choix ? 6

It is possible to choose between the various key types…

les clefs RSA peuvent faire une taille comprise entre 1024 et 4096 bits.
Quelle taille de clef désirez-vous ? (2048) 1024

… and the key size…

La taille demandée est 1024 bits
Veuillez indiquer le temps pendant lequel cette clef devrait être valable.
        0 = la clef n'expire pas
    <n>  = la clef expire dans n jours
    <n>w = la clef expire dans n semaines
    <n>m = la clef expire dans n mois
    <n>y = la clef expire dans n ans
Pendant combien de temps la clef est-elle valable ? (0) 100
La clef expire le dim. 14 août 2016 09:23:06 CEST
Est-ce correct ? (o/N) o

… or validity.

Faut-il vraiment la créer ? (o/N) o
De nombreux octets aléatoires doivent être générés. Vous devriez faire
autre chose (taper au clavier, déplacer la souris, utiliser les disques)
pendant la génération de nombres premiers ; cela donne au générateur de
nombres aléatoires une meilleure chance d'obtenir suffisamment d'entropie.

sec  rsa1024/D0C3AD44AE028A5A
    créé : 2016-05-05  expire : 2016-06-05  utilisation : SC  
    confiance : ultime        validité : ultime
ssb  rsa1024/0A7946205EB6EC32
    créé : 2016-05-05  expire : 2016-05-15  utilisation : E   
ssb  rsa1024/14B62D2737F5BB60
    créé : 2016-05-06  expire : 2016-08-14  utilisation : E   
[  ultime ] (1). Stéphane Guedon <spamtrap@22decembre.eu>

gpg>

And we now have a key with two subkeys, which all have different validity periods.

Add identities

We can add identities on the key with adduid :

gpg> adduid
Nom réel : tartanpion
Adresse électronique : tartanpion@22decembre.eu
Commentaire : 
Vous avez sélectionné cette identité :
    « tartanpion <tartanpion@22decembre.eu> »

Changer le (N)om, le (C)ommentaire, l'(A)dresse électronique
ou (O)ui/(Q)uitter ? o

sec  rsa1024/D0C3AD44AE028A5A
    créé : 2016-05-05  expire : 2016-06-05  utilisation : SC  
    confiance : ultime        validité : ultime
ssb  rsa1024/0A7946205EB6EC32
    créé : 2016-05-05  expire : 2016-05-15  utilisation : E   
ssb  rsa1024/14B62D2737F5BB60
    créé : 2016-05-06  expire : 2016-08-14  utilisation : E   
[  ultime ] (1)  Stéphane Guedon <spamtrap@22decembre.eu>
[ inconnue] (2). tartanpion <tartanpion@22decembre.eu>

gpg> adduid
Nom réel : Stéphane Guedon Free
Adresse électronique : stephane.guedon@free.fr
Commentaire : 
Vous utilisez le jeu de caractères « utf-8 ».
Vous avez sélectionné cette identité :
    « Stéphane Guedon Free <stephane.guedon@free.fr> »

Changer le (N)om, le (C)ommentaire, l'(A)dresse électronique
ou (O)ui/(Q)uitter ? o

sec  rsa1024/D0C3AD44AE028A5A
    créé : 2016-05-05  expire : 2016-06-05  utilisation : SC  
    confiance : ultime        validité : ultime
ssb  rsa1024/0A7946205EB6EC32
    créé : 2016-05-05  expire : 2016-05-15  utilisation : E   
ssb  rsa1024/14B62D2737F5BB60
    créé : 2016-05-06  expire : 2016-08-14  utilisation : E   
[  ultime ] (1)  Stéphane Guedon <spamtrap@22decembre.eu>
[ inconnue] (2)  tartanpion <tartanpion@22decembre.eu>
[ inconnue] (3). Stéphane Guedon Free <stephane.guedon@free.fr>

gpg>

When you leave the command line with save, your new subkeys will be signed and granted ultimate trust, because you have the private key and are acting as the legitimate owner of it (which you are). Yet, it won't be signed with your default key.

Select identities or keys

You can selet an identity with uid immediatly followed by the id number:

gpg> uid 2

sec  rsa1024/D0C3AD44AE028A5A
...
ssb  rsa1024/14B62D2737F5BB60
    créé : 2016-05-06  expire : 2016-08-14  utilisation : E   
[  ultime ] (1). Stéphane Guedon Free <stephane.guedon@free.fr>
[  ultime ] (2)* Stéphane Guedon <spamtrap@22decembre.eu>
[  ultime ] (3)  tartanpion <tartanpion@22decembre.eu>

You can select several of them:

gpg> uid 3

sec  rsa1024/D0C3AD44AE028A5A
...
    créé : 2016-05-06  expire : 2016-08-14  utilisation : E   
[  ultime ] (1). Stéphane Guedon Free <stephane.guedon@free.fr>
[  ultime ] (2)* Stéphane Guedon <spamtrap@22decembre.eu>
[  ultime ] (3)* tartanpion <tartanpion@22decembre.eu>

Here, I selected the two last ones to suppress them:

gpg> deluid
Faut-il vraiment supprimer toutes les identités sélectionnées ? (o/N) o

sec  rsa1024/D0C3AD44AE028A5A
    créé : 2016-05-05  expire : 2016-06-05  utilisation : SC  
    confiance : ultime        validité : ultime
ssb  rsa1024/0A7946205EB6EC32
    créé : 2016-05-05  expire : 2016-05-15  utilisation : E   
ssb  rsa1024/14B62D2737F5BB60
    créé : 2016-05-06  expire : 2016-08-14  utilisation : E   
[  ultime ] (1). Stéphane Guedon Free <stephane.guedon@free.fr>

Now the key has just one identity.

You can select subkeys the same way with key followed by the key number. To release the selection, just use key alone.

Sign identities

You can sign one or several identities. For example I previously selected the two last keys. I am now going to sign them with my default key. It is also possible to sign locally for example:

gpg> sign

sec  rsa1024/D0C3AD44AE028A5A
    créé : 2016-05-05  expire : 2016-06-05  utilisation : SC  
    confiance : ultime        validité : ultime
Empreinte clef princip. : DC4E 466E FBC9 3FFB 75AE  12DA D0C3 AD44 AE02 8A5A

    stephane <stephane.guedon@22december.dk>
    honey <honey@22decembre.eu>

Cette clef va expirer le 2016-06-05.
Voulez-vous vraiment signer cette clef avec votre
clef « Stéphane Guedon <stephane@22decembre.eu> » (12BA48CF01C75BCD)

J'ai partiellement vérifié cette clef.

Voulez-vous vraiment signer ? (o/N) o

Gpg asks for the passphrase, then signs.

gpg> save

You can check the signatures when editing the key again with check:

gpg --edit-key D0C3AD44AE028A5A
gpg (GnuPG) 2.1.11; Copyright (C) 2016 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

La clef secrète est disponible.

gpg: vérification de la base de confiance
gpg: marginals needed: 3  completes needed: 1  trust model: PGP
gpg: profondeur : 0  valables :   4  signées :   0
    confiance : 0 i., 0 n.d., 0 j., 0 m., 0 t., 4 u.
gpg: la prochaine vérification de la base de confiance aura lieu le 2016-06-05
sec  rsa1024/D0C3AD44AE028A5A
    créé : 2016-05-05  expire : 2016-06-05  utilisation : SC  
    confiance : ultime        validité : ultime
ssb  rsa1024/0A7946205EB6EC32
    créé : 2016-05-05  expire : 2016-05-15  utilisation : E   
ssb  rsa1024/14B62D2737F5BB60
    créé : 2016-05-06  expire : 2016-08-14  utilisation : E   
[  ultime ] (1). honey <honey@22decembre.eu>
[  ultime ] (2)  spamtrap <spamtrap@22decembre.eu>
[  ultime ] (3)  Stéphane Guedon Free <stephane.guedon@free.fr>
[  ultime ] (4)  stephane <stephane.guedon@22december.dk>

gpg> check
uid  honey <honey@22decembre.eu>
sig!3        D0C3AD44AE028A5A 2016-05-06  [autosignature]
sig!2        12BA48CF01C75BCD 2016-05-06  Stéphane Guedon <stephane@22decembre.
uid  spamtrap <spamtrap@22decembre.eu>
sig!3        D0C3AD44AE028A5A 2016-05-06  [autosignature]
uid  Stéphane Guedon Free <stephane.guedon@free.fr>
sig!3        D0C3AD44AE028A5A 2016-05-06  [autosignature]
uid  stephane <stephane.guedon@22december.dk>
sig!3        D0C3AD44AE028A5A 2016-05-06  [autosignature]
sig!2        12BA48CF01C75BCD 2016-05-06  Stéphane Guedon <stephane@22decembre.

You can see only the two selected identities have been signed.

Trust

You can also modify the trust level granted to the owner with trust:

gpg> trust
sec  rsa1024/D0C3AD44AE028A5A
...

Décidez maintenant de la confiance que vous portez en cet utilisateur pour
vérifier les clefs des autres utilisateurs (en regardant les passeports, en
vérifiant les empreintes depuis diverses sources, etc.)

1 = je ne sais pas ou n'ai pas d'avis
2 = je ne fais PAS confiance
3 = je fais très légèrement confiance
4 = je fais entièrement confiance
5 = j'attribue une confiance ultime
m = retour au menu principal

Quelle est votre décision ? 2

NB : if you need to remind what is the difference between the signature and the trust level, this article is for you : Sign keys

You see, lots of things to do.

Use gpg right from the command line

You can do things without using gpg internal command line.

For example …

Sign

You can sign a key:

gpg --sign-key tuto-gpg@22decembre.eu

You can also sign with a key that is not your default key:

gpg -u tuto-gpg@22decembre.eu --sign-key D0C3AD44AE028A5A

sec  rsa1024/D0C3AD44AE028A5A
    créé : 2016-05-05  expire : 2016-06-05  utilisation : SC  
    confiance : jamais        validité : totale
ssb  rsa1024/0A7946205EB6EC32
    créé : 2016-05-05  expire : 2016-05-15  utilisation : E   
ssb  rsa1024/14B62D2737F5BB60
    créé : 2016-05-06  expire : 2016-08-14  utilisation : E   
[  totale ] (1). honey <honey@22decembre.eu>
[ inconnue] (2)  spamtrap <spamtrap@22decembre.eu>
[ inconnue] (3)  Stéphane Guedon Free <stephane.guedon@free.fr>
[  totale ] (4)  stephane <stephane.guedon@22december.dk>

Really sign all text user IDs? (y/N) y

sec  rsa1024/D0C3AD44AE028A5A
    créé : 2016-05-05  expire : 2016-06-05  utilisation : SC  
    confiance : jamais        validité : totale
Empreinte clef princip. : DC4E 466E FBC9 3FFB 75AE  12DA D0C3 AD44 AE02 8A5A

    honey <honey@22decembre.eu>
    spamtrap <spamtrap@22decembre.eu>
    Stéphane Guedon Free <stephane.guedon@free.fr>
    stephane <stephane.guedon@22december.dk>

Cette clef va expirer le 2016-06-05.
Voulez-vous vraiment signer cette clef avec votre
clef « Tutoriel GPG <tuto-gpg@22decembre.eu> » (42E0A02EF1C935A4)

J'ai partiellement vérifié cette clef.

Voulez-vous vraiment signer ? (o/N) o

Search keys on servers

If you have a keyserver in your conf', then you can search for keys:

[stephane@Jabberwocky ~]$ gpg --search-keys cnrs
gpg: data source: http://jupiter.zaledia.com:11371
(1)     Jerome LEBRUN (DSA) <Jerome.Lebrun@cnrs.fr>
        2048 bit DSA key 4FD41B87EFF0126D, créé : 2016-04-21
(2)     Jerome LEBRUN <Jerome.Lebrun@cnrs.fr>
        4096 bit RSA key 68364CE715CC0635, créé : 2016-04-21
(3)     BONNET <jonathan.bonnet@dr13.cnrs.fr>
        2048 bit RSA key B5433AFD51FA0BEA, créé : 2016-03-18
(4)     Lionel Eliezer GUEZ (CNRS) <guez@lmd.ens.fr>
        4096 bit RSA key 5578DCFE4BAA02D2, créé : 2016-03-17, expire : 2018-03-17
(5)     Hadrien Commenges (professional) <hcommenges@parisgeo.cnrs.fr>
        4096 bit RSA key C5AEA1CEB6536CF4, créé : 2016-03-17, expire : 2019-03-17
(6)     Miguel Ortiz Lombardía <miguel.ortiz-lombardia@univ-amu.fr>
        Miguel Ortiz Lombardía <miguel.ortiz-lombardia@igs.cnrs-mrs.fr>
        4096 bit RSA key 82F1602DE30F0CBF, créé : 2015-11-23
(7)     Remi Ferrand (riton) <remi@ferrand.email>
        Remi Ferrand (riton) <remi.ferrand@protonmail.ch>
        Remi Ferrand (IN2P3 Computing Centre, CNRS) <remi.ferrand@cc.in2p3.fr>
        4096 bit RSA key EE6FE94311EBB744, créé : 2015-09-23
(8)     Damien Cram (LINA UMR 6241 CNRS) <damien.cram@univ-nantes.fr>
        2048 bit RSA key 151CA94CAB6CD92A, créé : 2015-09-04
(9)     Stefania Residori <stefania.residori@inln.cnrs.fr>
        4096 bit RSA key E330DAAAFC45C40D, créé : 2015-05-03
Keys 1-9 of 154 for "cnrs".  Entrez le ou les nombres, (S)uivant, ou (Q)uitter >

Import the keys you want with their number. Here I get two keys, 3 and 5:

Keys 10-17 of 154 for "cnrs".  Entrez le ou les nombres, (S)uivant, ou (Q)uitter > 3 5
gpg: clef C5AEA1CEB6536CF4 : clef publique « Hadrien Commenges (professional) <hcommenges@parisgeo.cnrs.fr> » importée
gpg: clef B5433AFD51FA0BEA : clef publique « BONNET <jonathan.bonnet@dr13.cnrs.fr> » importée
gpg:       Quantité totale traitée : 2
gpg:                     importées : 2
(18)    Richard Randriatoamanana <randria@gmail.com>
        Richard Randriatoamanana (IRCCyN CNRS) <randria@irccyn.ec-nantes.fr>
        Richard Randriatoamanana (IRCCyN CNRS) <richard.randria@irccyn.ec-nant
        Richard Randriatoamanana (IRCCyN CNRS) <richard.randriatoamanana@irccy
        4096 bit RSA key 60C4432B91C8DC89, créé : 2014-11-19
(19)    Sylvain MAURIN (ProID) <sylvain.maurin@isc.cnrs.fr>
        4096 bit RSA key F2604CE690C6ECCC, créé : 2014-06-11
(20)    Jérémy Levallois <jeremy.levallois@liris.cnrs.fr>
        4096 bit RSA key C6AAB4ABBCA07151, créé : 2014-05-19
(21)    Fabrice Théoleyre (CNRS / University of Strasbourg) <theoleyre@unistr
        2048 bit RSA key 5F994EAEED4DB315, créé : 2014-05-12, expire : 2016-05-12
(22)    umberto bortolozzo<umberto.bortolozzo@inln.cnrs.fr>
        2048 bit RSA key D29C564A5E0D29A5, créé : 2014-04-19, expire : 2019-04-19
(23)    Nicolas Schabanel <nicolas.schabanel@cnrs.fr>
        2048 bit RSA key 44C094C012A1D8D5, créé : 2014-03-05, expire : 2018-03-05
Keys 18-23 of 154 for "cnrs".  Entrez le ou les nombres, (S)uivant, ou (Q)uitter > Q

Export keys

You can export keys from the command line with --export --armor (the output is unusable without armor):

gpg --armor --export tuto-gpg@22decembre.eu
-----BEGIN PGP PUBLIC KEY BLOCK-----

mQINBFTghEQBEADfzfjVdOkH/AcydvfmHOd/QNdA1du2KCheGXfJusG9Ilg3NHZ3
0u7hXnL4GOTqnLSZrnWIDX31/gN3QX/5T5IZ2w1XLkEJjIUqmFQ9PJyMNJGHpZpT
...
RlHeLZXZWfn1eq/OgH1JfiHY1ISjMoytlGxPd4PbdOEj1vwd7zztmiYrAVH7KkrJ
ZPxuvaY+w8qZBQyQFrPA
=Hcrb
-----END PGP PUBLIC KEY BLOCK-----

Export in a file :

gpg --output tuto.asc --armor --export tuto-gpg@22decembre.eu

Scripts

As soon as you have to do complicated or boring/repetitive things, then scripting comes at hand.

The most obvious is organizing a signing-party. The organiser gather the keys in a directory or a file, run the script which will then create a complete document to be sent to the attendees.

After the end of the signing-party, attendees will also use a script with the list of keys they wish to sign. The script will sign and send them by mail to their respective owners.

With 100 attendees per signing-party, it's worth doing it.

Scripting can also filter mail, or manage the keyring.

Checking the keys

You can check the key is well generated with correct settings with a tool under Debian (or other distros): hopenpgp

apt-get install hopenpgp-tools

Then, as casual user:

hkt export-pubkeys '<fingerprint>' | hokey lint

Yes, when I write , you have to replace by the fingerprint you wish to check. If everything is green, it's all good.