On Mon 2019-05-13 01:01:57 +0100, Toni Mueller wrote:
> I did not do this. This variable is unset in my environment.

right, you were working with a pre-existing keyring.  I believe that
keyring already had a copy of the teabot public key.

> Your experiment only shows that the key did *not* end
> up in /tmp/cdtemp.AhkyjS/pubring.kbx. Otherwise, the "gpg -k" above
> should have listed it, instead of saying "No public key".

yes.  i understand your bug report to claim that the default keyring is
being used, when you ask it to not be used.

I was demonstrating that the default keyring was not actually used when
i tried to replicate the issue.

>> perhaps the teabot key was already in your default keyring before you
>> run the --recv-keys operation?  that would certainly explain the
>> behavior that you're seeing.
>
> No, it does not. If a key is already there, it would not say
> "imported: 1".

I don't think this is an accurate analysis.  when you say
--no-default-keyring --keyring /path/to/foo, and /path/to/foo is an
empty keyring, then gpg *should* say "imported: 1" when it adds a key to
/path/to/foo, regardless of whether there the same key is present in the
default keyring This still has no effect on the default keyring, as
you've asked it to not touch the default keyring.

> And since it said "imported: 1" for you, I challenge you to find the
> location of that key, because it is obviously not in your temporary
> keyring.

I beg to differ.  it is not in the default keyring, but it *is* in the
temporary keyring.

I'm still trying to understand and replicate your report.  perhaps the
difference is in whether or not we're using the standard homedir for
gpg?  so i tried with a throwaway account, without setting a different
homedir, and still couldn't replicate:

--------------------------
0 jj955@alice:~$ gpg --version
gpg (GnuPG) 2.2.15
libgcrypt 1.8.4
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: /home/jj955/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
0 jj955@alice:~$ rm -rf .gnupg ~/gitea.gpg
0 jj955@alice:~$ mkdir -m 0700 .gnupg
0 jj955@alice:~$ echo list-options show-keyring > .gnupg/gpg.conf
0 jj955@alice:~$ gpg -k tea...@gitea.io
gpg: keybox '/home/jj955/.gnupg/pubring.kbx' created
gpg: /home/jj955/.gnupg/trustdb.gpg: trustdb created
gpg: error reading key: No public key
2 jj955@alice:~$ touch ~/gitea.gpg
0 jj955@alice:~$ gpg --keyring ~/gitea.gpg -k tea...@gitea.io
gpg: error reading key: No public key
2 jj955@alice:~$ gpg --keyring ~/gitea.gpg --no-default-keyring --recv-keys 
CC64B1DB67ABBEECAB24B6455FC346329753F4B0
gpg: key 2D9AE806EC1592E2: 6 signatures not checked due to missing keys
gpg: key 2D9AE806EC1592E2: public key "Teabot <tea...@gitea.io>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1
0 jj955@alice:~$ gpg --keyring ~/gitea.gpg --no-default-keyring --recv-keys 
CC64B1DB67ABBEECAB24B6455FC346329753F4B0
gpg: key 2D9AE806EC1592E2: 6 signatures not checked due to missing keys
gpg: key 2D9AE806EC1592E2: "Teabot <tea...@gitea.io>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1
0 jj955@alice:~$ gpg --keyring ~/gitea.gpg -k tea...@gitea.io
Keyring: /home/jj955/gitea.gpg
------------------------------
pub   rsa4096 2018-06-24 [SC] [expires: 2020-06-23]
      7C9E68152594688862D62AF62D9AE806EC1592E2
uid           [ unknown] Teabot <tea...@gitea.io>
sub   rsa4096 2018-06-24 [E] [expires: 2020-06-23]
sub   rsa4096 2018-06-24 [S] [expires: 2019-06-24]

0 jj955@alice:~$ 
--------------------------

I tried again on a different machine with gpg 2.2.13, and still could
not replicate:

--------------------------
0 dkg@sid:~$ gpg --version
gpg (GnuPG) 2.2.13
libgcrypt 1.8.4
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: /home/dkg/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
0 dkg@sid:~$ rm -rf ~/.gnupg ~/gitea.gpg
0 dkg@sid:~$ mkdir -m 0700 ~/.gnupg
0 dkg@sid:~$ echo list-options show-keyring > ~/.gnupg/gpg.conf
0 dkg@sid:~$ gpg -k tea...@gitea.io
gpg: keybox '/home/dkg/.gnupg/pubring.kbx' created
gpg: /home/dkg/.gnupg/trustdb.gpg: trustdb created
gpg: error reading key: No public key
2 dkg@sid:~$ touch ~/gitea.gpg
0 dkg@sid:~$ gpg --keyring ~/gitea.gpg --no-default-keyring --recv-keys 
CC64B1DB67ABBEECAB24B6455FC346329753F4B0
gpg: key 2D9AE806EC1592E2: 6 signatures not checked due to missing keys
gpg: key 2D9AE806EC1592E2: public key "Teabot <tea...@gitea.io>" imported
gpg: no ultimately trusted keys found
gpg: Total number processed: 1
gpg:               imported: 1
0 dkg@sid:~$ gpg --keyring ~/gitea.gpg --no-default-keyring --recv-keys 
CC64B1DB67ABBEECAB24B6455FC346329753F4B0
gpg: key 2D9AE806EC1592E2: 6 signatures not checked due to missing keys
gpg: key 2D9AE806EC1592E2: "Teabot <tea...@gitea.io>" not changed
gpg: Total number processed: 1
gpg:              unchanged: 1
0 dkg@sid:~$ gpg --keyring ~/gitea.gpg -k tea...@gitea.io
Keyring: /home/dkg/gitea.gpg
----------------------------
pub   rsa4096 2018-06-24 [SC] [expires: 2020-06-23]
      7C9E68152594688862D62AF62D9AE806EC1592E2
uid           [ unknown] Teabot <tea...@gitea.io>
sub   rsa4096 2018-06-24 [E] [expires: 2020-06-23]
sub   rsa4096 2018-06-24 [S] [expires: 2019-06-24]

0 dkg@sid:~$ 
---------------------------

> For what it's worth, here's another run, setting GNUPGHOME:

> $ touch ~/mnt/tools/gitea-keys.gpg
> $ GNUPGHOME=`/bin/pwd`
> $ echo ${GNUPGHOME}
> /home/toni/mnt/tools
> $ gpg --list-options show-keyring -k tea...@gitea.io
> gpg: please do a --check-trustdb
> gpg: error reading key: No public key
> $ gpg  --keyring ~/mnt/tools/gitea-keys.gpg   --list-options show-keyring -k 
> tea...@gitea.io
> gpg: please do a --check-trustdb
> gpg: error reading key: No public key
> $ gpg  --keyring ~/mnt/tools/gitea-keys.gpg --no-default-keyring --recv-keys 
> CC64B1DB67ABBEECAB24B6455FC346329753F4B0
> gpg: key 0x2D9AE806EC1592E2: 6 signatures not checked due to missing keys
> gpg: key 0x2D9AE806EC1592E2: public key "Teabot <tea...@gitea.io>" imported
> gpg: Total number processed: 1
> gpg:               imported: 1
> $ gpg  --keyring ~/mnt/tools/gitea-keys.gpg --no-default-keyring --recv-keys 
> CC64B1DB67ABBEECAB24B6455FC346329753F4B0
> gpg: key 0x2D9AE806EC1592E2: 6 signatures not checked due to missing keys
> gpg: key 0x2D9AE806EC1592E2: "Teabot <tea...@gitea.io>" not changed
> gpg: Total number processed: 1
> gpg:              unchanged: 1
> $ gpg  --keyring ~/mnt/tools/gitea-keys.gpg   --list-options show-keyring -k 
> tea...@gitea.io
> gpg: please do a --check-trustdb
> Keyring: /home/toni/.gnupg/pubring.gpg
> --------------------------------------
> pub   rsa4096/0x2D9AE806EC1592E2 2018-06-24 [SC] [expires: 2020-06-23]
>       7C9E68152594688862D62AF62D9AE806EC1592E2
> uid                   [ unknown] Teabot <tea...@gitea.io>
> sub   rsa4096/0x1FBE01D7CBADB9A0 2018-06-24 [E] [expires: 2020-06-23]
> sub   rsa4096/0x5FC346329753F4B0 2018-06-24 [S] [expires: 2019-06-24]
>
> $ l `/bin/pwd`/gitea-keys.gpg
> -rw-r----- 1 toni toni 0 May 13 00:55 /home/toni/mnt/tools/gitea-keys.gpg
> $ 


The shell here has set, but not *exported* GNUPGHOME.  That means that
any of the gpg subprocesses don't see the environment variable, and
therefore don't obey it.  So this still uses your standard GnuPG
homedir.  i'm wondering whether there is some setting in your
~/.gnupg/gpg.conf that is causing this misbehavior.  For example, maybe
there is some "keyring /home/toni/.gnupg/pubring.gpg" line in there?

Can you share your gpg.conf?  Feel free to e-mail it to me privately (to
0xC4BC2DDB38CCE96485EBE9C2F20691179038E5C6) if you like.

However, the thing i don't understand about this run (and have not been
able to replicate) is that your final command shows that the key in
question is found in pubring.gpg after the import, but was not present
on the first run of "gpg --list-options show-keyring -k
tea...@gitea.io".  I don't understand how that's happening, unless there
is something else feeding that key into your keyring in the background
in some other operation.  And it doesn't happen for me when i try.

If i could replicate the problem, i would be happy to dig into it
further, but i'm still unable to do so.  So i still need more
information from you to help me figure this out.

One thing i do notice is that you're still using a "pubring.gpg" -- even
though modern GnuPG defaults to using pubring.kbx.  Thinking maybe GnuPG
was getting confused about the legacy pubring, I tried the same run
again after setting one up (with "touch ~/.gnupg/pubring.gpg").  That
run still failed to replicate the behavior you describe, though.

       --dkg

Attachment: signature.asc
Description: PGP signature

Reply via email to