On Thu, 17 May 2018 20:48, trinh.ra...@gmail.com said: > err = gpgme_op_decrypt_start(ctx, fileEncrypted, fileDecrypted); > ctx = gpgme_wait(ctx, &stat, 1); > > std::cout << "Decrypt Status: " << gpgme_strerror(err) << std::endl;
Here you show the result of the start operation which is usuallay success. What you need to check here instead is STAT as returned by gpgme_wait. Is there a reason why you use the asynchronous operaions and not the synchronous? Your code would not work with multiple threads because gpgme_wait may only be called by one thread. > The version of GPG I am using is 2.0.22 (or 1.4.16) I have both installed gpgme has a function to figure this out: /* Get the information about the configured engines. A pointer to the * first engine in the statically allocated linked list is returned. * The returned data is valid until the next gpgme_ctx_set_engine_info. */ gpgme_engine_info_t gpgme_ctx_get_engine_info (gpgme_ctx_t ctx); or you run your program with GPGME_DEBUG=1:gpgme.log: ./test which prints the full name of the used tools. Call them then with option --version. Salam-Shalom, Werner -- # Please read: Daniel Ellsberg - The Doomsday Machine # Die Gedanken sind frei. Ausnahmen regelt ein Bundesgesetz.
pgpjkJ6oO0dzR.pgp
Description: PGP signature
_______________________________________________ Gnupg-users mailing list Gnupg-users@gnupg.org http://lists.gnupg.org/mailman/listinfo/gnupg-users