Compilare GnuPG per Win64 con MinGW

(a cura di Carlo Luciano Bianco <clbianco@tiscalinet.it>)

Versione 1.0.1 REBOOT..

... ovvero, ogni cosa ha una fine, per poi avere un nuovo inizio! ;-)

Preambolo alla versione REBOOT

OK, nonostante i buoni propositi ci sono ricascato! ;-) Di seguito le istruzioni per compilare nativamente GnuPG 1.x per Win64 usando MSYS2 e MinGW-w64. La versione FINAL delle vecchie (e più dettagliate) istruzioni per compilare per Win32 con MinGW/MSYS la trovate qui.

Le istruzioni sono abbastanza scarse, un po' perché sono troppo pigro per farle più dettagliate ;-), un po' perché tanto i dettagli della procedura possono cambiare senza preavviso con una nuova versione di qualsiasi degli elementi coinvolti. Quindi queste istruzioni vanno intese come uno schema che potrà avere bisogno di adattamenti di volta in volta.

1) Installazione di MSYS2 e MinGW-w64:

1.1) Collegatevi al sito https://msys2.github.io/ e scaricate l'ultima versione del programma di installazione (msys2-x86_64-20160205.exe nel momento in cui scrivo).

1.2) Avviate la procedura di installazione (per ulteriori informazioni, controllate a questo link), facendo attenzione a impostare come directory di destinazione una cartella senza spazi nel nome (il default "C:\msys64" va benissimo).

1.3) Nel menù avvio dovreste avere ora tre icone: avviate quella chiamata "MSYS2 Shell".

1.4) Lanciate ora i seguenti comandi, e seguite le istruzioni a video (in particolare quando vi dice di chiudere brutalmente la finestra e poi riaprirla):
a) update-core (chiudendo poi la finestra quando ve lo dice e riaprendola subito dopo).
b) pacman -Syuu (chiudendo poi la finestra quando ve lo dice e riaprendola subito dopo).
c) pacman -Syuu (ripetere più volte, sempre chiudendo e riaprendo ogni volta la finestra quando ve lo dice, fino a che non c'è più nulla da aggiornare).
d) pacman -S base-devel
e) pacman -S mingw-w64-x86_64-toolchain
f) pacman -S mingw-w64-x86_64-curl

1.5) Chiudete tutto e riaprite usando ora invece l'icona "MinGW-w64 Win64 Shell". Se nel corso della procedura si sono aperta varie finestre del prompt dei comandi, chiudetele pure.

2) Scaricamento e adattamento dei sorgenti di GnuPG:

Prima di cominciare la compilazione, è necessario fare un minimo adattamento ai sorgenti di GnuPG se desiderate poter eseguire i check.

2.1) Se non lo avete già fatto, scaricate i sorgenti di GnuPG 1.4.20 (ovviamente da http://www.gnupg.org). Nella cartella in cui è stato installato msys, c'è una sottocartella "home" al cui interno si trova una ulteriore cartella il cui nome è il vostro nome utente sotto Windows. Al suo interno dovete scompattare i sorgenti di GnuPG, mantenendo la struttura delle directory presente nel file compresso. Se tutto va bene, vi ritroverete con una ulteriore sottocartella chiamata "gnupg-1.4.20" con tutti i sorgenti al suo interno.

2.2) Per poter eseguire i check, aprite ora il file "seat.test" nella sottocartella "checks" e portatevi alla linea 9.

--Immagine: File SEAT.TEST prima della modifica. Fine immagine.--

Modificate "$i y" in "z y" e aggiungete subito prima di essa due nuove linee con i seguenti comandi: "cp $i z" e "unix2dos z". Salvate e chiudete il file.

--Immagine: File SEAT.TEST dopo la modifica. Fine immagine.--

2.3) Se lo desiderate, e SOLAMENTE se siete BEN consapevoli di quello che state facendo, potete fare una piccola modifica ai sorgenti di GnuPG per abilitare la creazione di chiavi di dimensione superiore a 8192 bit. Tali chiavi possono infatti essere utilizzate senza problemi da GnuPG, ma la loro creazione è di default disabilitata. Secondo le linee guida del NIST, la sicurezza equivalente a quella di un algoritmo simmetrico con chiave di 128 bit (come AES-128) è data da una chiave RSA di lunghezza pari a 3072 bit, mentre la sicurezza equivalente a quella di un algoritmo simmetrico con chiave da 256 bit (come AES-256) è data da una chiave RSA di lunghezza pari a circa 15000 bit. A tale proposito si veda anche questa voce di Wikipedia. In altre parole, se si usano algoritmi simmetrici da 128 bit il limite di 4096 bit per le chiavi RSA è assolutamente sufficiente, mentre se si usano algoritmi simmetrici da 256 bit può essere consigliabile utilizzare chiavi RSA di dimensione superiore. La modifica è descritta in questo sito. Praticamente, aprite il file "configure", andate alla linea 5079 e cambiate "65536" in "131072". Salvate e chiudete il file. Poi, aprite il file "keygen.c", nella sottocartella "g10", andate alla linea 1044 e cambiate "4096" in "16384", andate alla linea 1045 e cambiate "4096" in "16384", andate alla riga 1254 e cambiate "8192" in "16384", andate alla riga 1581 e cambiate "4096" in "16384". Salvate e chiudete il file. Tenete presente che questa operazione è a vostro rischio e pericolo di incorrere in eventuali problemi e incompatibilità.

3) Compilazione di GnuPG:

3.1) Scrivete i seguenti comandi al prompt di MSYS, appena avviato con l'icona "MinGW-w64 Win64 Shell":
a) cd gnupg-1.4.20
b) CFLAGS='inserite qui i parametri che preferite, per i dettagli controllate il manuale di GCC' LDFLAGS='-s -static' ./configure --enable-large-secmem --enable-camellia --with-included-zlib --with-included-gettext --with-included-regex --build=x86_64-w64-mingw32 (questo ultimo "32" NON è un errore di battitura)
c) make
d) make check
Questo ultimo non è un passaggio obbligatorio, ma è utile per controllare che tutto abbia funzionato bene e la copia di GnuPG appena compilata sia perfettamente funzionante.

3.2) Se tutto è andato bene e non avete avuto errori, allora troverete gpg.exe e gpgv.exe nella sottocartella g10, gpgkeys_hkp.exe, gpgkeys_ldap.exe, gpgkeys_finger.exe e gpgkeys_curl.exe nella cartella keyserver e gpgsplit.exe nella sottocartella tools. A questo punto potete copiarli in una cartella apposita (ad esempio C:\Programmi\GnuPG). Copiate anche il file libiconv-2.dll che troverete in C:\msys64\mingw64\bin e cambiategli nome in "iconv.dll". Potete a questo punto seguire la normale procedura di installazione di GnuPG per Windows, perfettamente descritta nel sito di Stefano a cui vi rimando e nel file README-W32.txt.


--- Valid HTML 4.01! --- Valid CSS! --- Level Triple-A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0 ---

--- Bobby WorldWide Approved AAA --- Cynthia Tested! --- Bobby WorldWide Approved 508 ---

--- Backward Compatible --- See your web site through colorblind eyes with the colorblind web page filter. --- Lynx Inspected ---

--- Created with VIM! --- Viewable With Any Browser --- Graphics by GIMP ---

--- Creative Commons License ---

--- OpenPGP Digitally Signed HTML ---