Por que o GnuPG 2 e o gpg-connect-agent falham com o "ERR 67108983 No daemon SmartCard"?

10

Usando o Debian Jessie e o GnuPG 2, sempre que tento usar o GnuPG 2 ( gpg2) ou gpg-connect-agentjunto com um cartão inteligente OpenPGP (no meu caso, um YubiKey), a operação falha com uma mensagem

$ gpg-connect-agent --hex "scd apdu 00 f1 00 00" /bye
ERR 67108983 No SmartCard daemon <GPG Agent>
$ gpg2 --card-status
ERR 67108983 No SmartCard daemon <GPG Agent>

Ao usar o GnuPG 1 herdado ( gpg), tudo funciona bem.

O que está acontecendo de errado aqui?

Jens Erat
fonte

Respostas:

15

scdaemon está desaparecido

O GnuPG 2 se conecta ao cartão através gpg-agent, o que novamente não inclui recursos de cartão inteligente, mas os acessa através de outro aplicativo. Isso pode ser configurado e possui um padrão dependente do sistema, de man gpg-agent:

--scdaemon-program filename
      Use program filename as the Smartcard daemon.  The default is
      installation dependent and can be shown with the gpgconf command.

Fazer isso revela que o GnuPG tenta executar /usr/lib/gnupg2/scdaemon:

$ gpgconf
gpg:GPG für OpenPGP:/usr/bin/gpg2
gpg-agent:GPG Agent:/usr/bin/gpg-agent
scdaemon:Smartcard Daemon:/usr/lib/gnupg2/scdaemon
[snip]

Mas isso não está disponível:

$ /usr/lib/gnupg2/scdaemon
bash: /usr/lib/gnupg2/scdaemon2: No such file or directory

Instalando scdaemon

Uma consulta rápida através apt-cacherevela que Debian puxou o scdaemon fora do gnupg2pacote, provavelmente porque introduz um monte de novas dependências GnuPG de outra forma não teria:

Package: scdaemon
Source: gnupg2
Version: 2.1.10-3
Installed-Size: 538
Maintainer: Debian GnuPG Maintainers <[email protected]>
Architecture: amd64
Replaces: gpgsm (<< 2.0.18-2)
Depends: gnupg-agent (= 2.1.10-3), libassuan0 (>= 2.2.0), libc6 (>= 2.15),
  libgcrypt20 (>= 1.6.1), libgpg-error0 (>= 1.14), libksba8 (>= 1.2.0),
  libnpth0 (>= 0.90), libusb-0.1-4 (>= 2:0.1.12)
Breaks: gpgsm (<< 2.0.18-2)
Description-en: GNU privacy guard - smart card support
 GnuPG is GNU's tool for secure communication and data storage.
 It can be used to encrypt data and to create digital signatures.
 It includes an advanced key management facility and is compliant
 with the proposed OpenPGP Internet standard as described in RFC4880.
 .
 This package contains the smart card program scdaemon, which is used
 by gnupg-agent to access OpenPGP smart cards.

Instalá-lo com sudo apt-get install scdaemonresolve o problema.

Jens Erat
fonte