Quien alguna vez haya trabajado con archivos de texto cifrados sabrá lo tedioso que es escribirlos en texto plano, cifrarlos y luego eliminar el archivo original (usando shred para estar más seguros). Por si esto fuera poco, para modificar su contenido se tiene que descifrar, editar el archivo descifrado, volverlo a cifrar y de nuevo asegurarnos de no dejar rastro del archivo en texto plano.
Por suerte en Vim contamos con el plugin vim-gnupg que nos ahorra todo ese molesto trabajo. Con este plugin podemos editar archivos cifrados de forma transparente, esto significa que al abrirlos se descifran en un buffer del editor y al guardarlos el contenido vuelve a ser cifrado antes de ser escrito al archivo.
Si usas el magnifico gestor de plugins pathogen puedes instalarlo como cualquier otro plugin:
cd .vim/bundle
git clone 'https://github.com/jamessan/vim-gnupg'
De lo contrario se puede instalar manualmente:
mkdir -p .vim/plugin
wget -P .vim/plugin 'https://raw.githubusercontent.com/jamessan/vim-gnupg/master/plugin/gnupg.vim'
También se encuentra disponible en los repositorios de algunas distribuciones, en Gentoo y Funtoo se puede instalar con emerge y en Arch y derivadas se puede obtener desde AUR.
Una vez instalado podemos abrir un archivo cifrado con la extensión .gpg, .pgp o .asc y observar al plugin hacer su magia. Si el archivo existe nos pedirá la passphrase para descifrar el contenido (si no la has ingresado con un gpg-agent); de lo contrario nos abrirá dos buffers, en el primero debemos ingresar los identificadores de las llaves con las que se cifrará el archivo -sólo las personas con las llaves privadas correspondientes podrán leer el contenido- que puede ser el nombre de la llave (ejemplo: Pepito), el email (ejemplo pepito@pepitomail.org) o la llave pública (ejemplo 12345678), uno por línea, y al finalizar guardar y cerrar ese buffer. Ahora podemos editarlo como cualquier otro archivo y dejar que el plugin se encargue del cifrado.
Por último podemos ver las llaves con las que se está cifrando el mensaje con :GPGViewRecipients
y modificarlas con :GPGEditRecipients
.
Buena cosa :D
El mejor artículo en el Binario desde que los administradores comenzaron a utilizar emacs