Non è necessario PyCrypto
o PyMe
, anche se questi pacchetti potrebbero essere - si avranno tutti i tipi di problemi nella creazione di Windows. Invece, perché non evitare le buche dei conigli e fare quello che ho fatto? Utilizzare gnupg 1.4.9
. Non è necessario eseguire un'installazione completa sui computer degli utenti finali: sono sufficienti solo gpg.exe
e iconv.dll
dalla distribuzione e è sufficiente averli da qualche parte nel percorso o accedere dal codice Python utilizzando un percorso completo. Non sono necessarie modifiche al registro e tutto (file eseguibili e file di dati) può essere limitato a una singola cartella, se lo si desidera.
C'è un modulo GPG.py
che è stato originariamente scritto da Andrew Kuchling, migliorato da Richard Jones e ulteriormente migliorato da Steve Traugott. È disponibile here, ma non è adatto per Windows perché utilizza os.fork()
. Sebbene sia originariamente parte di PyCrypto
, , è completamente indipendente dalle altre parti di PyCrypto
e richiede solo gpg.exe/iconv.dll per funzionare.
Ho una versione (gnupg.py
) derivata da Traugott GPG.py
, che utilizza il modulo subprocess
. Funziona bene con Windows, almeno per i miei scopi - Io lo uso per effettuare le seguenti operazioni:
- Gestione delle chiavi - generazione, profilo, export ecc
- chiavi Importa da una fonte esterna (ad esempio, le chiavi pubbliche ricevute da una società partner)
- crittografare e decrittografare i dati
- firmare e verificare firme
Il modulo che ho non è l'ideale per mostrare in questo momento, perché comprende alcune altre cose che non dovrebbe essere ther e - il che significa che non posso rilasciarlo così com'è al momento.Ad un certo punto, forse nelle prossime due settimane, spero di essere in grado di riordinarlo, aggiungere qualche altro test unitario (non ho alcun test unitario per il segno/verificare, per esempio) e rilasciarlo (o sotto la licenza originale PyCrypto
o una simile licenza commerciale-amichevole). Se non puoi aspettare, usa il modulo di Traugott e modificalo da solo: non è stato troppo lavoro per farlo funzionare con il modulo subprocess
.
Questo approccio è stato molto meno doloroso rispetto agli altri (ad esempio SWIG
soluzioni basate, o soluzioni che richiedono edificio con MinGW
/MSYS
), che ho considerato e sperimentato. Ho utilizzato lo stesso approccio (gpg.exe
/iconv.dll
) con sistemi scritti in altre lingue, ad es. C#
, con risultati altrettanto indolore.
P.S. Funziona con Python 2.4 e Python 2.5 e versioni successive. Non testato con altre versioni, anche se non prevedo alcun problema.
fonte
2009-06-27 22:12:35
Grazie, sembra perfetto. Non avevo idea di poter estrarre l'exe dal gpg. Dove metterà il portachiavi? Questo metodo causerà problemi se l'utente ha già installato gpg? Qualche possibilità di vedere come il tuo codice genera le chiavi e le importazioni principali? – Greg
Assicurati inoltre di aggiornarci qui quando rilasci il tuo codice finale. – Greg
Quando chiami gpg, specifica il percorso in cui desideri che i portachiavi siano nascosti usando l'argomento --homedir. (Questo è già fatto per te usando il modulo di Traugott - c'è una classe GPG il cui costruttore prende un parametro gnupghome che puoi impostare su questa directory.) Il pubring.gpg, secring.gpg e trustdb.gpg vengono creati nella cartella specificata da - -homedir. Non credo che questo causerà un problema se l'utente ha già installato gpg - l'argomento --homedir dovrebbe sovrascrivere qualsiasi valore nel registro. –