Review: golang-github-lestrrat-go-jwx-v4 4.6.0-1
Package Information
| Description | tools for various JOSE JWE/JWK/JWS/JWT operations (library) Go module implementing various JWx (JWA/JWE/JWK/JWS/JWT, otherwise known as JOSE) technologies. This package contains the Go library. |
|---|---|
| Maintainer | Debian Go Packaging Team <team+pkg-go@tracker.debian.org> |
| Changed By | Simon Josefsson <simon@josefsson.org> |
| Sponsor | simon@josefsson.org |
| Distribution | unstable |
| Architecture | any all |
| VCS | git: https://salsa.debian.org/go-team/packages/golang-github-lestrrat-go-jwx-v4.git (browse) |
| Closes | #1153777 |
| Tracker | https://tracker.debian.org/pkg/golang-github-lestrrat-go-jwx-v4 |
| Uploaded | 2 hours ago |
New Package Report
.changes
| Source | golang-github-lestrrat-go-jwx-v4 |
|---|---|
| Version | 4.6.0-1 |
| Changed-By | Simon Josefsson <simon@josefsson.org> |
| Architecture | source all amd64 |
| Distribution | unstable |
| Date | Thu, 12 Nov 2026 08:21:12 +0100 |
Changelog
golang-github-lestrrat-go-jwx-v4 (4.6.0-1) unstable; urgency=medium . * Upload v4 as new package (Closes: #1153777)
.dsc
| Component | main |
|---|---|
| Package-List | golang-github-lestrrat-go-jwx-v4-dev deb golang optional arch=all jwx deb golang optional arch=any |
| Section | golang |
| Priority | optional |
debian/copyright
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Source: https://github.com/lestrrat-go/jwx
Upstream-Name: jwx
Files: *
Copyright: 2015 lestrrat
License: Expat
Comment: Daisuke Maki
Files: debian/*
Copyright: 2024-2025 Mathias Gibbens
2026 Simon Josefsson <simon@josefsson.org>
License: Expat
Comment: Debian packaging is licensed under the same terms as upstream
License: Expat
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
DFSG Assistant LLM REVIEW 0 blocker, 1 important, 0 minor
This is an LLM based review using a Debian Inference based workflow. It was not written by a member of the DFSG team and has not been checked by one. It is not a decision on the package: it may be wrong, and it may have missed things.
Reviewed 1 hour ago.
Report
DFSG NEW review for golang-github-lestrrat-go-jwx-v4 version 4.6.0-1
Summary
- Licensing is DFSG-compliant and
debian/copyrightis accurate: Yes - Packaging is of good quality: No
- Issues: 0 blocker, 1 important, 0 minor
- debian/watch: version 5
- debian/copyright: machine-readable
- Scan before the review: nothing found
Licensing
Everything in the tree is Expat (MIT) licensed, and debian/copyright is DEP-5 and describes it accurately. The only licence or copyright notice anywhere in the tree is the top-level LICENSE ('The MIT License (MIT)', 'Copyright (c) 2015 lestrrat'); debian/copyright has a catch-all Files: * stanza naming lestrrat for 2015 under Expat, a Files: debian/* stanza for Mathias Gibbens and Simon Josefsson, and the full Expat text (not in /usr/share/common-licenses, so it must be reproduced, and it is). No other licences, holders, non-free terms or licence-less files were found, no Files-Excluded is needed for the unmodified orig tarball, and the generated *_gen.go files ship with their generator and inputs.
Packaging
The packaging is otherwise clean and conventional - debhelper compat 14 with dh-sequence-golang, correct multi-arch dev package, salsa-ci, gbp.conf, DEP-5 copyright, no patches, man page generated with help2man and skipped under the nodoc profile, autopkgtest through autopkgtest-pkg-go - but the dsig dependency carries no version constraint even though jwx v4's code uses dsig API that upstream says first appeared in v1.4.0, while the archive has only 1.0.0. That has to be fixed before upload; golang-github-lestrrat-go-option-v3-dev also has to exist in the archive.
Issues
important packaging 1. Build-Depends and -dev Depends on dsig lack the (>= 1.4.0) that the shipped code requires ◂
- Files:
debian/control (Build-Depends and the golang-github-lestrrat-go-jwx-v4-dev Depends); go.mod; agents/docs/dependencies.md:59; jws/jwsbb/sign.go:69; jws/jwsbb/verify.go:55 - Basis: checked, in the package or with a reference tool
- Evidence: go.mod:
github.com/lestrrat-go/dsig v1.4.0. agents/docs/dependencies.md:59: "v1.4.0 or later is required, since it owns the ML-DSA algorithms and thedsig.MLDSAFamilyfamily." jws/jwsbb/sign.go:69:case dsig.Custom, dsig.MLDSAFamily:; jws/jwsbb/verify.go:55 likewise. debian/control listsgolang-github-lestrrat-go-dsig-dev,bare, in both Build-Depends and Depends. apt-cache: golang-github-lestrrat-go-dsig-dev is 1.0.0-2 in unstable. debian/changelog's 3.4.0-1 entry recordsNeed dsig>=1.4.0. - Problem: dh-golang builds in GOPATH mode (GO111MODULE=off), so go.mod's version requirements are not enforced at build time: an unversioned dependency is satisfied by whatever version the archive has, here 1.0.0-2, which predates the
dsig.MLDSAFamily/dsig.GetAlgorithmInfo/dsig.SignWithOptsAPI the package calls in jws/jwsbb and jws/streaming_detached.go. The same unversioned Depends lets a consumer compile the shipped sources against 1.0.0. The v3 packaging already required 1.4.0; v4 needs it at least as much. - Fix: Use
golang-github-lestrrat-go-dsig-dev (>= 1.4.0)in Build-Depends and in the -dev package's Depends, and make sure dsig 1.4.0 actually reaches the archive.
Verified ◂
- debian/copyright is DEP-5 with the exact 1.0 Format URL; its three stanzas (Files: , Files: debian/, stand-alone License: Expat) agree with the tree, and the Expat text is complete.
- A tree-wide grep for Copyright, (C), ©, SPDX-License-Identifier, Licensed under, Permission is hereby granted, GNU General Public, GNU Lesser, Apache License, Mozilla Public, public domain and All rights reserved returns only LICENSE and debian/copyright; a second grep for MIT/BSD/Apache/GPL/MPL/ISC/Creative Commons/CC0 hits only LICENSE's own title. The prescan's author check over 486 files also found every holder already named.
- The prescan listed no built files, minified code, PDFs or unusual licence wording for this package, and a glob for png/jpg/gif/pdf/zip/tar/gz/so/a/wasm/bin/o/exe/jar/class/font files found none: the tree is Go sources, Markdown, YAML, shell/perl scripts and one test key.
- The _gen.go files (formatkind_string_gen.go, jwa/_gen.go, jwe/_gen.go, jwk/_gen.go, jws/_gen.go, jwt/_gen.go, jwt/openid/*_gen.go) are generated Go sources whose generator is present at internal/jwxcodegen/cmd/jwxcodegen (driven by scripts/jwxcodegen.sh) and whose inputs are present at jwa|jwe|jwk|jws|jwt/objects.yml and */options.yaml; formatkind_string_gen.go is produced by the golang.org/x/tools/cmd/stringer tool declared in go.mod.
- docs/*.md and README.md carry their Go examples inline between
<!-- INCLUDE(examples/...) -->/<!-- END INCLUDE -->markers; the examples live in the separate jwx-go/examples repository and are linked, not needed, so the shipped documentation is complete rather than built from absent files. - jwk/testdata/rs256.jwk is a single test key (data, covered by Files: *), not code or a built artefact.
- No patches: debian/patches does not exist, so there is no series or DEP-3 question; the .pc/ directory (quilt bookkeeping) was not examined.
- Go 1.27 is what unstable has (golang-go 2:1.27~1), and /usr/lib/go-1.27/src/encoding/json/v2 and /usr/lib/go-1.27/src/crypto/mldsa exist with the mldsa.Parameters/MLDSA44() API jws/mldsa.go and jwk use, so the GOEXPERIMENT=jsonv2 that upstream's AGENTS.md requires only on Go 1.26 need not be set in debian/rules and go.mod's
go 1.26.10is satisfied. - dh-golang builds in GOPATH mode with GO111MODULE=off (golang.pm
_set_go111module), so the nested module cmd/jwx/go.mod is irrelevant and thejwxbinary is built from github.com/lestrrat-go/jwx/v4/...;DH_GOLANG_EXCLUDES := internal/jwxcodegenkeeps the generator, which imports unpackaged goccy/go-yaml and lestrrat-go/codegen, out of both build and install. - dedebhelper compat 14: dh_gencontrol adds relationship substvars itself, so no ${misc:Depends}/${shlibs:Depends} in the binary stanzas is correct, and Policy (A10.3, 4.7.3) says Priority should not be given when it is optional. Standards-Version 4.7.4 is current against Policy 4.7.4.1.
- The man page is generated into debian/tmp/usr/share/man/man1/jwx.1 by
execute_before_dh_installman-arch(only when the nodoc profile is off, and help2man is <!nodoc> in Build-Depends) and picked up by jwx.manpagesusr/share/man/man1/*.1; under nodoc dh_installman silently ignores the unmatched glob (/usr/bin/dh_installman sets glob_expand_error_handler_silently_ignore when the nodoc profile or build option is active), so no build fails either way. - Testsuite: autopkgtest-pkg-go is served by autodep8's go template, which runs dh_golang_autopkgtest with
Depends: @, @builddeps@, so cmd/jwx's golang.org/x/{crypto,term} and urfave/cli dependencies are installed for the test build even though they are not in the -dev Depends. - uscan found the packaged version as the newest upstream release (upstream
4.6.0, packaged4.6.0).
Not confirmed ◂
- golang-github-lestrrat-go-option-v3-dev (go.mod requires github.com/lestrrat-go/option/v3 v3.0.0-alpha1) is not in the review system's package lists and was not found among the NEW uploads as of 2026-11-12T19:04Z; only golang-github-lestrrat-go-option-dev 2.0.0-3 exists. If the v3 package has not been accepted, both Build-Depends and the -dev Depends are unsatisfiable and nothing builds.
- The lists have golang-github-lestrrat-go-dsig-dev 1.0.0-2 only; whether dsig 1.4.0 has been uploaded since could not be checked, which is why the missing version constraint is reported as a dependency defect rather than as a certain build failure.
- help2man is not installed on the reviewing system, so the generated jwx.1 could not be inspected; the archive has help2man 1.49.3, which honours SOURCE_DATE_EPOCH.
Proposed changes ◂
None.
Uploader's response to the LLM review
The uploader was emailed about the review 1 hour ago.
Review Information
accepted — allocated to mechtilde 0 hours ago, started 0 hours ago, completed 0 hours ago.