nuovo rilascio del progetto , sviluppando un fork degli strumenti di GnuPG (GNU Privacy Guard) con implementazione di strumenti per la crittografia dei dati, gestione delle firme elettroniche, gestione delle chiavi e accesso agli archivi di chiavi pubbliche.
Le principali differenze di NeoPG includono una pulizia significativa del codice dalle implementazioni di algoritmi obsoleti, il passaggio dal linguaggio C a C++11, la ristrutturazione del codice sorgente per semplificare la manutenzione e la fornitura di un'API estensibile per lo sviluppo di plug-in. Tutto il nuovo codice è rilasciato sotto una licenza permissiva BSD invece di GPLv3.
Tra le modifiche si segnala anche il passaggio a un sistema di build cmake, la sostituzione di Libgcrypt con la libreria , la sostituzione dei parser integrati e del codice per la gestione del database con libcurl e SQLite. In NeoPG è stata interrotta l'esecuzione di processi di sfondo gpg-agent, dirmngr (Directory Manager) e scdaemon (Smart Card Daemon) a lungo termine, sostituiti da gestori ausiliari monouso che terminano immediatamente dopo l'esecuzione del compito.
La funzionalità principale di NeoPG è implementata sotto forma di libreria libneopg, che può essere utilizzata in applicazioni esterne. Sopra libneopg è stato realizzato un'interfaccia a riga di comando, nella quale sono state integrate le utilità sparse di GnuPG (gpg, gpgsm, gpgconf, gpgv, gpgtar, ecc.) in un singolo file eseguibile neopg con la formattazione dei sottocomandi in stile Git e supporto per l'output a colori. All'interno del comando "neopg gpg2" è stato implementato uno strato di compatibilità con GnuPG 2.
Nel nuovo rilascio è stata migliorata la compatibilità con l'utilità gpg2: se gpg2 è un link fisso a neopg, viene automaticamente applicato uno strato per garantire la compatibilità dei comandi con GnuPG 2. È stato aggiunto un nuovo comando "packet dump". È stato garantito il supporto per Ubuntu 18.04. È stata migliorata l'esecuzione degli script di build Cmake. La libreria fmtlib è stata utilizzata al posto di boost::format. È stato aggiunto un parser OpenPGP per gli archivi di chiavi.
Fonte: opennet.ru
