gpgme & gpgme_data_write problem

Tyler Retzlaff list at omicron-persei-8.net
Mon Apr 25 06:53:31 CEST 2005


bah, have to gpgme_data_seek(plain, 0, SEEK_SET); before encrypting. 
Seems kind of obvious now, but maybe should have been documented.

Tyler Retzlaff wrote:
> I'm using the following piece of code which is heavily derived from that 
> found in the gpgme/test directory.  (With error checking removed for 
> clarity, though in the real code all error checking is being done)
> 
> The problem is when I use gpgme_data_write() to enter the text into the 
> plain text data buffer before encryption it doesn't end up being 
> encrypted as a part of cipher text.  The resulting encrypted message is 
> empty.
> 
> This doesn't happen if I initialize the plain data buffer with 
> gpg_data_new_from_mem().  Am I using gpgme_data_new() and 
> gpgme_data_write() incorrectly? Or is libgpgme at fault?  btw. using 
> gpgme 1.0.1/gnupg 1.2.6 being used.
> 
> Advice is appreciated, thanks!
> 
> int
> main(int argc, char **argv)
>         size_t wbytes;
>         gpgme_error_t e;
>         gpgme_ctx_t ctx;
>         gpgme_data_t plain;
>         gpgme_data_t cipher;
>         gpgme_key_t key[2] = { NULL, NULL };
>         gpgme_encrypt_result_t r;
>         gpgme_data_encoding_t enc;
> 
>         setlocale (LC_ALL, "");
>         gpgme_check_version (NULL);
>         gpgme_set_locale(NULL, LC_CTYPE, setlocale (LC_CTYPE, NULL));
>         gpgme_set_locale(NULL, LC_MESSAGES, setlocale (LC_MESSAGES,
>         NULL));
> 
>      gpgme_engine_check_version(GPGME_PROTOCOL_OpenPGP);
>         gpgme_new(&ctx);
>         gpgme_set_armor(ctx, 1);
> 
>     gpgme_data_new(&plain);
>     gpgme_data_new(&cipher);
>     gpgme_get_key(ctx, "93EE05A3D02C75B7B451AF1E6449D89A2D2C2204",
>         &key[0], 0);
> 
>         wbytes = sizeof("This is the first line.\n");
>         gpgme_data_write(plain, "This is the first line.\n", wbytes);
>         fprintf(stderr, "wrote %d bytes\n", wbytes);
>     gpgme_op_encrypt(ctx, key, 0, plain, cipher);
>         r = gpgme_op_encrypt_result(ctx);
> 
>         print_data(cipher);
>         gpgme_key_unref(key[0]);
>         gpgme_data_release(plain);
>         gpgme_data_release(cipher);
>         gpgme_release(ctx);
> 
>         return EXIT_SUCCESS;
> 
> _______________________________________________
> Gnupg-users mailing list
> Gnupg-users at gnupg.org
> http://lists.gnupg.org/mailman/listinfo/gnupg-users




More information about the Gnupg-users mailing list