Subject: bug#31337: closed (Re: bug#31337: Unable to use gnuk usb smartcard token on GuixSD)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 04 Jul 2021 11:02:02 +0000

Your bug report

#31337: Unable to use gnuk usb smartcard token on GuixSD

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
31337: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=31337
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#31337: Unable to use gnuk usb smartcard token on GuixSD
From: Brice Waegeneire <[email-masked]>
To: Vagrant Cascadian <[email-masked]>
Cc: Chris Marusich <[email-masked]>, [email-masked]
Date: Sun, 04 Jul 2021 13:01:02 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Brice Waegeneire <[email-masked]> writes:

Closing this issue since it's should be solved.  Feel free to reopen it
if it's not the case.

Subject: Unable to use gnuk usb smartcard token on GuixSD
From: Vagrant Cascadian <[email-masked]>
To: [email-masked]
Date: Tue, 01 May 2018 15:29:04 -0700
List-Id: <debbugs-submit.debbugs.gnu.org>

I've been unable to use my gnuk usb smartcard token with gnupg on
GuixSD, and it appears this is because scdaemon is built without libusb
support:

      $ gpg --card-status
      gpg: selecting openpgp failed: No such device
      gpg: OpenPGP card not available: No such device

Attached is a patch that gets scdaemon working for me and a gnuk...

Unfortunately, enabling libusb causes one of the tets to hang
indefinitely:

      PASS: tests/openpgp/decrypt-session-key.scm
      Checking unwrapping the encryption.
          > encsig-2-keys-3 encsig-2-keys-4 <
      PASS: tests/openpgp/decrypt-unwrap-verify.scm
      Checking signing with the default hash algorithm

So far, I've only been able to get it to work by disabling the
tests... so it's obviously not a good idea to enable without further
troubleshooting.

Another option might be to use pcsc-lite and ccid, but I had even less
luck getting that to work.

live well,
  vagrant

diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm
index f397482ab..0e9e72784 100644
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@ -39,6 +39,7 @@
   #:use-module (gnu packages curl)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages emacs)
+  #:use-module (gnu packages libusb)
   #:use-module (gnu packages openldap)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
@@ -232,6 +233,7 @@ compatible to GNU Pth.")
        ("libgcrypt" ,libgcrypt)
        ("libgpg-error" ,libgpg-error)
        ("libksba" ,libksba)
+       ("libusb" ,libusb)
        ("npth" ,npth)
        ("openldap" ,openldap)
        ("pcsc-lite" ,pcsc-lite)
@@ -246,12 +248,17 @@ compatible to GNU Pth.")
                           "--enable-all-tests")
       #:phases
       (modify-phases %standard-phases
+	;; (delete 'check)
         (add-before 'configure 'patch-paths
           (lambda* (#:key inputs #:allow-other-keys)
             (substitute* "scd/scdaemon.c"
               (("\"(libpcsclite\\.so[^\"]*)\"" _ name)
                (string-append "\"" (assoc-ref inputs "pcsc-lite")
                               "/lib/" name "\"")))
+            (substitute* "configure"
+              (("/usr/include/libusb-1.0")
+               (string-append (assoc-ref inputs "libusb")
+                              "/include/libusb-1.0")))
             #t))
         (add-after 'build 'patch-scheme-tests
           (lambda _