Ho scritto uno script per aiutare i nostri sviluppatori a memorizzare una copia delle loro chiavi private senza una passphrase all'interno del nostro albero Marionetta (non impegnata in Git) così le nostre caselle di Vagrant possono usare Hiera con eyaml + gpg ( link ) per accedere ai dati segreti durante il test.
Lo script funziona alla grande, ma mi piacerebbe anche automatizzare il processo di verifica che la chiave segreta sia stata rimossa in modo corretto da una passphrase nella copia.
Finora, l'unico modo che ho trovato è manuale - esegui gpg --homedir ... --edit-key keyid
e poi nel prompt interattivo esegui password
e cerca un messaggio This key is not protected.
.
Mi piacerebbe farlo automaticamente nello script - in pratica voglio sapere come fa lo strumento gpg a sapere che dovrebbe stampare questo messaggio. Dalla risposta in link e leggendo il codice sorgente di GnuPG in g10 / export.c I Concludiamo che "nessuna passphrase" è in realtà considerata come "passphrase è una stringa vuota" e il codice tenta effettivamente di decodificare una stringa casuale con la passphrase e verificare che il risultato contenga pattern random ripetuti.
È corretto?
Se è così - c'è un modo per evitare di dover implementare di nuovo l'intero processo, ma invece utilizzare lo strumento a riga di comando gpg o alcune API Python / Ruby per farlo? Ho guardato alcuni front-end Python e Ruby su gpgme ma non ho visto qualcosa di simile lì.
Vedo in g10 / build-packet.c che dovrei aspettarmi un output diverso se il pacchetto è protetto o meno, ma provare a confrontare i dump delle chiavi segrete protette e non protette non ha funzionato t produrre qualsiasi cosa tranne piccole differenze di hash. Potrei interpretare male il codice lì.