DFSG NEW Queue

DFSG, Licensing & New Packages Team

Review: golang-github-lestrrat-go-jwx-v4 4.6.0-1

Package Information

Descriptiontools 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.

MaintainerDebian Go Packaging Team <team+pkg-go@tracker.debian.org>
Changed BySimon Josefsson <simon@josefsson.org>
Sponsorsimon@josefsson.org
Distributionunstable
Architectureany all
VCSgit: https://salsa.debian.org/go-team/packages/golang-github-lestrrat-go-jwx-v4.git (browse)
Closes#1153777
Trackerhttps://tracker.debian.org/pkg/golang-github-lestrrat-go-jwx-v4
Uploaded2 hours ago

New Package Report

.changes◂
Sourcegolang-github-lestrrat-go-jwx-v4
Version4.6.0-1
Changed-BySimon Josefsson <simon@josefsson.org>
Architecturesource all amd64
Distributionunstable
DateThu, 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◂
Componentmain
Package-Listgolang-github-lestrrat-go-jwx-v4-dev deb golang optional arch=all
jwx deb golang optional arch=any
Sectiongolang
Priorityoptional
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/copyright is 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 the dsig.MLDSAFamily family." jws/jwsbb/sign.go:69: case dsig.Custom, dsig.MLDSAFamily:; jws/jwsbb/verify.go:55 likewise. debian/control lists golang-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 records Need 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.SignWithOpts API 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.10 is 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 the jwx binary is built from github.com/lestrrat-go/jwx/v4/...; DH_GOLANG_EXCLUDES := internal/jwxcodegen keeps 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.manpages usr/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, packaged 4.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.

Final Comment

Back to Dashboard | View all reviews for this package