Cancel operation does not return error code

Ingo Klöcker kloecker at kde.org
Fri Mar 11 11:17:33 CET 2022


[It would be great, if you wouldn't top-post even if this isn't easy with 
Outlook or Office 365 or whatever email client you are using.]

On Freitag, 11. März 2022 10:29:41 CET Schultschik, Sven via Gnupg-users 
wrote:
> The method gpgme_op_encrypt provides the interactive possibility itself.
> 
> If you don't set a passphrase with gpgme_set_passphrase_cb before calling
> gpgme_op_encrypt, it asks itself for a passphrase.
> 
> See screenshot.

Okay. You are using pinentry-curses.

> There are more issues with this interactive view.
> 
> 1. Cancel does not send an error

I cannot reproduce this. For me it works correctly.
```
$ export GNUPGHOME=$(mktemp --directory)
$ cat >${GNUPGHOME}/gpg-agent.conf <<EOF
pinentry-program /usr/bin/pinentry-curses
EOF
$ ./t-encrypt-sym
[Tab][Tab][Enter]
../../../../src/gpgme/tests/gpg/t-encrypt-sym.c:67: GPGME: Operation cancelled
```

> 2. If you wait for the timeout of the passphrase form, it returns Error 0
> Success as well

Let's try.
```
$ cat >>${GNUPGHOME}/gpg-agent.conf <<EOF
pinentry-timeout 5 
EOF
$ gpgconf --kill all
$ ./t-encrypt-sym
[wait 5 seconds ...]
../../../../src/gpgme/tests/gpg/t-encrypt-sym.c:67: GPGME: Operation cancelled
```

> 3. Ctrl+C does not cancel the gpgme passphrase entry. See
> screenshot 2

Pressing Ctrl+C while t-encrypt-sym is running and pinentry-curses is asking 
for the password quits pinentry-curses and t-encrypt-sym without further 
output. That's common behavior for command line programs.

My conclusion is that gpgme_op_encrypt() is working as expected as my 
experiments with the official test t-encrypt-sym proves. I suspect that there 
is something wrong with your program. Please have a look at the official test 
t-encrypt-sym (in tests/gpg of gpgme's source code) and check what you are 
doing differently.

I'm using gpgme 1.17.1.

Regards,
Ingo
 
> -----Ursprüngliche Nachricht-----
> Von: Gnupg-users <gnupg-users-bounces at gnupg.org> Im Auftrag von Ingo Klöcker
> Gesendet: Donnerstag, 10. März 2022 22:16
> An: gnupg-users at gnupg.org
> Betreff: Re: Cancel operation does not return error code
> 
> On Donnerstag, 10. März 2022 14:30:29 CET Schultschik, Sven via Gnupg-users
> 
> wrote:
> > if your using gpgme with interactive password entry on the command
> > line and the user cancels the operation, shouldn't there be an error
> > returned?
> > 
> > Following code
> > 
> > err = gpgme_op_encrypt(ctx, NULL, GPGME_ENCRYPT_SYMMETRIC, in, out);
> > 
> > fprintf(stdout, "DEBUG ERROR Code = \%d \%s \%s\n" ,
> > gpgme_err_code(err),
> > gpgme_strsource(err) , gpgme_strerror(err));
> > 
> > If user cancel on the passwort screen, the following error code is
> > returned
> > 
> > ERROR Code = 0 Unspecified source Success
> 
> When I run t-encrypt-sym (in gpgme/tests/gpg) and cancel the passphrase
> dialog provided by pinentry-qt, then t-encrypt-sym prints
> ../../../../src/gpgme/tests/gpg/t-encrypt-sym.c:67: GPGME: Operation
> cancelled
> 
> When I force usage of pinentry-tty and cancel the passphrase entry with
> Ctrl+D, then I get the same result:
> =====
> $ ./t-encrypt-sym
> Enter passphrase
> 
> Passphrase:
> ../../../../src/gpgme/tests/gpg/t-encrypt-sym.c:67: GPGME: Operation
> cancelled =====
> 
> So, in general, gpgme_op_encrypt seems to return the correct error code.
> What I'm wondering is how do you cancel "interactive password entry on the
> command line" resp. how do you do "interactive password entry on the
> command line"?
> 
> Regards,
> Ingo

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: This is a digitally signed message part.
URL: <https://lists.gnupg.org/pipermail/gnupg-users/attachments/20220311/5f43c348/attachment.sig>


More information about the Gnupg-users mailing list