Subject: [PATCH v2 7/9] gnu: Add go-github-com-go-webauthn-webauthn.

From: Sharlatan Hellseher <[email-masked]>
Date: Thu, 4 Jul 2024 12:10:57 +0100

From: Rodion Goritskov <[email-masked]>

* gnu/packages/golang-web.scm (go-github-com-go-webauthn-webauthn): New variable.

Signed-off-by: Sharlatan Hellseher <[email-masked]>
Change-Id: I990f088c5d3b8dd360f26e953e6d2c0d01f1c808
---
 gnu/packages/golang-web.scm | 72 +++++++++++++++++++++++++++++++++++++
 1 file changed, 72 insertions(+)

diff --git a/gnu/packages/golang-web.scm b/gnu/packages/golang-web.scm
index bd7d88be6d..588fa4b681 100644
--- a/gnu/packages/golang-web.scm
+++ b/gnu/packages/golang-web.scm
@@ -2848,6 +2848,78 @@ (define-public go-github-com-valyala-fasthttp
 replacement for native @code{net/http} module.")
     (license license:expat)))
 
+(define-public go-github-com-go-webauthn-webauthn
+  (package
+    (name "go-github-com-go-webauthn-webauthn")
+    (version "0.10.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/go-webauthn/webauthn")
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1jbx3cd8cr4aaqq9s1x4sd1rlcs3lmam5aavpl08s5rj18m7rivf"))))
+    (build-system go-build-system)
+    (arguments
+     (list
+      #:go go-1.22
+      #:import-path "github.com/go-webauthn/webauthn"
+      #:phases
+      #~(modify-phases %standard-phases
+          (add-after 'unpack 'remove-failing-tests
+            (lambda* (#:key import-path #:allow-other-keys)
+              (with-directory-excursion (string-append "src/" import-path)
+                (for-each delete-file
+                          (list
+                           ;; It tryes to access outbound network:
+                           ;;
+                           ;; Get "https://mds.fidoalliance.org": dial tcp:
+                           ;; lookup mds.fidoalliance.org on [::1]:53: read udp
+                           ;; [::1]:52300->[::1]:53: read: connection refused
+                           ;;
+                           ;; Post "https://mds3.fido.tools/getEndpoints": dial
+                           ;; tcp: lookup mds3.fido.tools on [::1]:53: read udp
+                           ;; [::1]:46703->[::1]:53: read: connection refused
+                           "metadata/metadata_test.go"
+                           ;; Get "https://mds.fidoalliance.org": dial tcp:
+                           ;; lookup mds.fidoalliance.org on [::1]:53: read udp
+                           ;; [::1]:37459->[::1]:53: read: connection refused
+                           "protocol/attestation_androidkey_test.go"
+                           "protocol/attestation_apple_test.go"
+                           "protocol/attestation_packed_test.go"
+                           "protocol/attestation_safetynet_test.go"
+                           "protocol/attestation_test.go"
+                           "protocol/attestation_tpm_test.go"
+                           "protocol/attestation_u2f_test.go")))))
+          ;; XXX: Run all tests, workaround for go-build-system's lack of Go
+          ;; modules support.
+          (delete 'build)
+          (replace 'check
+            (lambda* (#:key tests? import-path #:allow-other-keys)
+              (when tests?
+                (with-directory-excursion (string-append "src/" import-path)
+                  (invoke "go" "test" "-v" "./..."))))))))
+    (native-inputs
+     (list go-github-com-stretchr-testify))
+    (propagated-inputs
+     (list go-github-com-fxamacker-cbor-v2
+           go-github-com-go-webauthn-x
+           go-github-com-golang-jwt-jwt-v5
+           go-github-com-google-go-tpm
+           go-github-com-google-uuid
+           go-github-com-mitchellh-mapstructure))
+    (home-page "https://github.com/go-webauthn/webauthn")
+    (synopsis "Webauthn/FIDO2 library for Golang")
+    (description
+     "This library is meant to handle @url{https://www.w3.org/TR/webauthn,Web
+Authentication} for Go apps that wish to implement a passwordless solution for
+users.  This library conforms as much as possible to the guidelines and
+implementation procedures outlined by the document.  It's a successor of not
+maintained https://github.com/duo-labs/webauthn library.")
+    (license license:bsd-3)))
+
 (define-public go-github-com-go-webauthn-x
   (package
     (name "go-github-com-go-webauthn-x")
-- 
2.41.0