1

Salut à tous!

J'ai fini de coder des classes C++ pour simplifier l'utilisation de GPGMe (une API qui permet de chiffrer, déchiffrer, singer et vérifier des données via GnuPG).
Dites moi ce que vous en pensez.
tromb Fichier joint : GPGWrapper.tar.bz2

Je vous mets aussi , "--loop" ) );         return 0; }-un des exemples fournis avec GPGMe : /* t-encrypt.c  - regression test  *     Copyright (C) 2000 Werner Koch (dd9jn)  *      Copyright (C) 2001 g10 Code GmbH  *  * This file is part of GPGME.  *  * GPGME is free software; you can redistribute it and/or modify  * it under the terms of the GNU General Public License as published by  * the Free Software Foundation; either version 2 of the License, or  * (at your option) any later version.  *  * GPGME is distributed in the hope that it will be useful,  * but WITHOUT ANY WARRANTY; without even the implied warranty of  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  * GNU General Public License for more details.  *  * You should have received a copy of the GNU General Public License  * along with this program; if not, write to the Free Software  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA  */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <assert.h> #include <gpgme.h> #define fail_if_err(a) do { if(a) {                                       \                                fprintf (stderr, "%s:%d: GpgmeError %s\n", \                                 __FILE__, __LINE__, gpgme_strerror(a));   \                                 exit (1); }                               \                              } while(0) static void print_op_info (GpgmeCtx c) {     char *s = gpgme_get_op_info (c, 0);     if (!s)         puts ("<!-- no operation info available -->");     else {         puts (s);         free (s);     } } static void print_data ( GpgmeData dh ) {     char buf[100];     size_t nread;     GpgmeError err;     err = gpgme_data_rewind ( dh );     fail_if_err (err);     while ( !(err = gpgme_data_read ( dh, buf, 100, &nread )) ) {         fwrite ( buf, nread, 1, stdout );     }     if (err != GPGME_EOF)          fail_if_err (err); } int  main (int argc, char **argv ) {     GpgmeCtx ctx;     GpgmeError err;     GpgmeData in, out;     GpgmeRecipients rset;     err = gpgme_check_engine ();     fail_if_err (err);     puts ( gpgme_get_engine_info() );   do {     err = gpgme_new (&ctx);     fail_if_err (err);     gpgme_set_armor (ctx, 1);     err = gpgme_data_new_from_mem ( &in, "Hallo Leute\n", 12, 0 );     fail_if_err (err);     err = gpgme_data_new ( &out );     fail_if_err (err);     err = gpgme_recipients_new (&rset);     fail_if_err (err);     err = gpgme_recipients_add_name_with_validity (rset, "Bob",                                                    GPGME_VALIDITY_FULL);     fail_if_err (err);     err = gpgme_recipients_add_name_with_validity (rset, "Alpha",                                                    GPGME_VALIDITY_FULL);     fail_if_err (err);     err = gpgme_op_encrypt (ctx, rset, in, out );     print_op_info (ctx);     fail_if_err (err);     fflush (NULL);     fputs ("Begin Result:\n", stdout );     print_data (out);     fputs ("End Result.\n", stdout );         gpgme_recipients_release (rset);     gpgme_data_release (in);     gpgme_data_release (out);     gpgme_release (ctx);   } while ( argc > 1 && !strcmp( argv[1]         return EXIT_SUCCESS; } -et ma version avec les classes : //  --------------------------------------------------------------------------------------- // //                                                                                          // //                    Copyright (c) 2005-2007 Spomky.Dev                                    // //                                                                                          // // ---------------------------------------------------------------------------------------- // //  This program is free software; you can redistribute it and/or modify                    // //  it under the terms of the GNU General Public License as published by                    // //  the Free Software Foundation; either version 2 of the License, or                       // //  (at your option) any later version.                                                     // //                                                                                          // //  You may not change or alter any portion of this comment or credits                      // //  of supporting developers from this source code or any supporting                        // //  source code which is considered copyrighted (c) material of the                         // //  original comment or credit authors.                                                     // //                                                                                          // //  This program is distributed in the hope that it will be useful,                         // //  but WITHOUT ANY WARRANTY; without even the implied warranty of                          // //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the                           // //  GNU General Public License for more details.                                            // //                                                                                          // //  You should have received a copy of the GNU General Public License                       // //  along with this program; if not, write to the Free Software                             // //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA                // // ---------------------------------------------------------------------------------------- // // Author: Florent MORSELLI (florent.m@spomky.com) // URL:  http://www.spomky.com // Project: #ifdef HAVE_CONFIG_H      #include <config.h> #endif #include <cstdlib> #include <cstdio> #include <iostream> #include <fstream> #include <spomky/gpgwrapperoperation> //Ça c'est juste pour obtenir les données finales static void print_data ( GpgmeData dh ) {      char buf[100];      size_t nread;      GpgmeError err;            err = gpgme_data_rewind ( dh );      while ( !(err = gpgme_data_read ( dh, buf, 100, &nread )) )           fwrite ( buf, nread, 1, stdout ); } int main(int argc, char *argv[]) {      //On va créer nos objets      gpgwrapperdata *DataSource = new gpgwrapperdata( "Hallo Leute\n" , 12 , 0 );      gpgwrapperdata *DataDestination = new gpgwrapperdata;      gpgwrapperrecipient *Recipient = new gpgwrapperrecipient;      gpgwrappercontext *Context = new gpgwrappercontext;      gpgwrapperoperation *Operation = new gpgwrapperoperation;            //On veut obtenir une armure ASCII (les sorties GPG qu'on voit souvent)      Context->setArmor(true);            //Deux destinataires      Recipient->addName( "Bob" , GPGME_VALIDITY_FULL );      Recipient->addName( "Alpha" , GPGME_VALIDITY_FULL );            //On procède au cryptage des données      Operation->encryptData( Context , Recipient , DataSource , DataDestination );            //On récupère nos données, on peut ensuite les enregistrer dans un fichier      print_data(DataDestination->getData());            delete DataSource;      delete DataDestination;      delete Recipient;      delete Context;      delete Operation;    
histoire de voir l'utilisation.

Il me reste encore quelques fonctions à créer mais l'essentiel est là. S'il y a des erreur n'hésitez pas à me le dire.

++