Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
245 commits
Select commit Hold shift + click to select a range
f8af1f1
feat(issuer): seed-backed commitment claims, derived sources
leifj Oct 13, 2026
d0d18bf
fix: the review findings on seed-backed commitment claims
leifj Oct 13, 2026
fe65b3a
fix: redact under every verb, and refuse a path conflict
leifj Oct 13, 2026
d2c4bd6
fix: redact a copied Deriver, and inject before allocating a status e…
leifj Oct 13, 2026
da690e5
fix: three more, all of them silent failures
leifj Oct 13, 2026
9d412f0
fix: three more, one of them mine from the last round
leifj Oct 13, 2026
9854dea
refactor: one resolver for commitment targets, shared by both callers
leifj Oct 13, 2026
df4dc7f
fix: a sound trailing-bytes check, and a guard for displaced doc comm…
leifj Oct 13, 2026
97127fc
fix: drop a 39MB binary that git add -A swept in
leifj Oct 13, 2026
07838d3
fix: the doc guard did not catch the case it was written for
leifj Oct 13, 2026
8f5b912
fix: refuse targets the signing layer overwrites, and malformed verif…
leifj Oct 13, 2026
780dd93
refactor: one copy of the doc guard, in internal/docguard
leifj Oct 14, 2026
32ea75a
fix: an SD-JWT commitment must be selectively disclosable
leifj Oct 14, 2026
40c16dc
fix: every SD-JWT spelling, and VCTM paths compared by segment
leifj Oct 14, 2026
5c4adf2
fix: reserve the disclosure machinery's own claims, derived from the …
leifj Oct 14, 2026
82fdc83
fix: refuse commitments on formats whose signing layer is unaccounted…
leifj Oct 14, 2026
d126c9c
feat(openid4vp): the circuit_zk request model
leifj Oct 14, 2026
2c2ac2e
fix: the review findings on the circuit_zk request model
leifj Oct 14, 2026
25f2cf5
docs: regenerate the configuration reference
leifj Oct 14, 2026
483e6f7
fix: the extension bags have to work from YAML
leifj Oct 14, 2026
bb4da16
fix: the YAML decode, and raw through the cache
leifj Oct 14, 2026
a4f5669
fix: the raw escape hatch died at the ingress
leifj Oct 14, 2026
a8a5064
fix: raw is a wire representation, not a bypass
leifj Oct 14, 2026
614c785
fix: the two extension points YAML could not reach
leifj Oct 14, 2026
c74d5ce
fix: an unreadable constraint is not an absent rule
leifj Oct 14, 2026
b274764
fix: validation read the shadow fields, not the bytes
leifj Oct 14, 2026
e2f9838
fix: shadow every readable member, not the two I happened to need
leifj Oct 14, 2026
205decc
fix: a decode that succeeded is not a decode that kept everything
leifj Oct 14, 2026
21c32f7
feat: a constructor for raw queries, and a rule that it is used
leifj Oct 14, 2026
7dadd8a
docs: Raw preserves the value, not the bytes
leifj Oct 14, 2026
f102f93
fix: the configured digits were gone before anything could check them
leifj Oct 14, 2026
7fd2e4c
fix: duplicate members, and numbers YAML cannot write back
leifj Oct 14, 2026
509053d
fix: two YAML scalars with no JSON number to become
leifj Oct 14, 2026
ac139f9
fix: the escape hatch had become a laundry
leifj Oct 14, 2026
6dc9b04
fix: the YAML writer emitted a different query
leifj Oct 14, 2026
16960e2
fix: the extension bags were still rounding decimals
leifj Oct 14, 2026
627eb1a
fix: templates could not express the negative shapes
leifj Oct 14, 2026
f7e3faa
test: the conformance comparison could not see a changed number
leifj Oct 14, 2026
60a65d2
test: pin the full-date, and guard the day yaml.v2 stops helping
leifj Oct 14, 2026
17f22ee
fix: BSON rounded the numbers JSON had just preserved
leifj Oct 14, 2026
c2fd6a9
fix: a typed container hid a number YAML would round
leifj Oct 14, 2026
a1042f0
fix: make the exact query additive, and close the unkeyed literal
leifj Oct 14, 2026
67c7643
fix: a duplicate member could make the constraint depend on the reader
leifj Oct 14, 2026
73215b9
fix: a removed query came back, and YAML dropped a duplicate
leifj Oct 14, 2026
8468393
feat: configure and publish a circuit_zk request
leifj Oct 14, 2026
b122bb4
fix: req never reached the wallet, and the profile was too lax
leifj Oct 14, 2026
8b7aee6
fix: a proof input the browser would silently change
leifj Oct 14, 2026
59d962d
fix: the number check asked about IEEE 754, not about the browser
leifj Oct 14, 2026
48d727b
fix: a circuit_zk preset the request declares no support for
leifj Oct 14, 2026
d824bc1
docs: the circuit_zk preset needs two things, not one
leifj Oct 14, 2026
b5deb49
docs: the claims fields do nothing for circuit_zk
leifj Oct 14, 2026
e3b39fb
fix: two members the nym_auth rulebook does not allow
leifj Oct 14, 2026
9a71747
docs: one check does run without a validate profile
leifj Oct 14, 2026
fe7dc52
fix: verifier_id_type was any string at all
leifj Oct 14, 2026
7728b85
fix: a reduced preset was published under the configured label
leifj Oct 14, 2026
72246cf
feat: the seed derivation secret can come from the secrets file
leifj Oct 14, 2026
e29cac8
fix: recovery could not read the secrets file I had just recommended
leifj Oct 14, 2026
bf5d773
fix: _sd is refused at every depth, not only at the root
leifj Oct 14, 2026
b6116af
docs: the worked example was flattened into a table cell
leifj Oct 15, 2026
fa9e269
cache: store a request whose numbers BSON cannot hold
leifj Oct 15, 2026
35ef3cb
circuit_zk: verifier_id_type is no longer part of the request
leifj Oct 15, 2026
c7a6860
circuit_zk: the browser must not rebuild a req it is only checking
leifj Oct 15, 2026
35e9090
circuit_zk: refresh the vendored vectors to the rulebook request shape
leifj Oct 15, 2026
aaf49c0
Merge feat/circuit-zk-request: the vendored vectors in the rulebook r…
leifj Oct 15, 2026
4533ddb
dcql: an ordinary query must stay mutable, and the BSON fix belongs here
leifj Oct 15, 2026
12d12b8
circuit_zk: an empty filter is not an absent one, and a malformed req…
leifj Oct 15, 2026
373f19a
Merge feat/circuit-zk-request: mutable ordinary queries, the BSON fal…
leifj Oct 15, 2026
1987c4f
dcql: the raw path is not a way past the constraint checks
leifj Oct 15, 2026
db3455d
Merge feat/circuit-zk-request: the raw path is not a way past the con…
leifj Oct 15, 2026
cad1bce
make: test-js installs the dependency it now needs
leifj Oct 15, 2026
77ab41b
dcql: guard the YAML routes too, and judge a number by its value
leifj Oct 15, 2026
a38c953
circuit_zk: an unreadable extension bag is an error, not an empty one
leifj Oct 15, 2026
73f8d9b
dcql: an exponent may sit at the end of the int range
leifj Oct 15, 2026
2f99e0f
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
aa975a2
dcql: a literal that omits its type was invisible to the guard
leifj Oct 15, 2026
4a7842f
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
dfd0466
dcql: a differently cased member is an unknown one, not the modelled one
leifj Oct 15, 2026
8c9712a
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
06bb606
dcql: copying a query must not repair it
leifj Oct 15, 2026
8faaf5f
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
d981bfa
dcql: finish the copy, and emit the tree that was checked
leifj Oct 15, 2026
93a2b28
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
a47b0b6
dcql: a nil element must not condemn the whole container
leifj Oct 15, 2026
22ca9e4
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
8e0b7e4
dcql: an absent raw leaf and an empty one are not the same leaf
leifj Oct 15, 2026
a25f8d9
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
edb3c14
dcql: a pointer to a raw leaf is still a raw leaf
leifj Oct 15, 2026
ffd0508
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
41e9fb4
dcql: arrays and structs hold raw leaves too
leifj Oct 15, 2026
ffdb90a
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
94617fe
dcql: a null filter is neither absent nor empty
leifj Oct 15, 2026
9578829
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
556d880
dcql: put the yaml import in its own group
leifj Oct 15, 2026
89e98be
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
0ccb2c5
dcql: a scalar must not cost the raw leaf beside it
leifj Oct 15, 2026
485f8b6
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
45c5ed6
dcql: a repeated member cannot survive a decode
leifj Oct 15, 2026
6e4f14a
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
b0c5349
dcql: the fallback keeps bytes instead of re-parsing them
leifj Oct 15, 2026
ebdf307
dcql: drop the blank line left by the previous commit
leifj Oct 15, 2026
5cf6a50
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
c26ec9c
dcql: copying must terminate on a value that serialises fine
leifj Oct 15, 2026
bd06760
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
29889a1
dcql: a repeated YAML key keeps only the last, so refuse it
leifj Oct 15, 2026
fe40bad
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
fd19a12
dcql: identity stops a cycle; depth only bounded the stack
leifj Oct 15, 2026
826420d
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
ce12fb8
dcql: the fast paths need the guards the slow path has
leifj Oct 15, 2026
7ee0003
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
06b5e57
dcql: finish the list of interfaces json serialises through
leifj Oct 15, 2026
f4c950a
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
cfffea4
dcql: a key is as much of the request as a value is
leifj Oct 15, 2026
b0068a0
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
4719bd0
dcql: the copy around Params had the defects Params was fixed for
leifj Oct 15, 2026
0076cd5
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 15, 2026
235c501
feat(issuer)!: the derivation secret is not a config field
leifj Oct 15, 2026
64fbe36
fix(model): _sd_alg is reserved at every depth, and so is what sits b…
leifj Oct 15, 2026
147a9ae
fix(seed): a length the prefix cannot hold stops separating the fields
leifj Oct 19, 2026
07ebb99
fix(seed_recover): a malformed -expect is an input error, not a mismatch
leifj Oct 19, 2026
04f8fb6
feat(seed)!: derive from an ordered list of subject identifiers
leifj Oct 19, 2026
d2ea965
fix(issuer): floor seed_bytes at 16, the default
leifj Oct 19, 2026
7c4bfd2
feat(issuer): derive a seed from an ordered list of subject identifiers
leifj Oct 19, 2026
2deb08f
Merge SUNET main (#810 squashed) into feat/circuit-zk-request
leifj Oct 19, 2026
df004ad
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 19, 2026
137e4f3
fix(issuer): refuse a commitment scope signed through the wrong handler
leifj Oct 19, 2026
758b14d
fix(cache): a query the escape hatch built must reload from the cache
leifj Oct 19, 2026
76d8a7a
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 19, 2026
da4f3c5
fix(verifier): the request-object cache must trust its own bytes too
leifj Oct 19, 2026
62c93fa
Merge remote-tracking branch 'origin/feat/circuit-zk-request' into fe…
leifj Oct 19, 2026
8fa8983
fix(nymauth): hash the BARE verifier_id, and refuse the prefixed one
leifj Oct 19, 2026
cf900a9
feat(apigw): derive the seed and inject ssc before the issuer is called
leifj Oct 19, 2026
8a2ef71
fix: four review findings on the apigw move
leifj Oct 19, 2026
ac034c4
feat(nymauth): the verifier's challenge and age bounds, checked again…
leifj Oct 19, 2026
1d8d42f
feat(nymauth): the verifier's request, and stack on #793 for pkg/nymauth
leifj Oct 19, 2026
14b875b
feat(nymauth): make the request predicate-agnostic
leifj Oct 19, 2026
5f1c3eb
feat(nymauth): the request carries the transcript seed, and derives e2
leifj Oct 20, 2026
00a7b25
feat(nymauth): check nym_auth proofs through zk-cred-longfellow's C ABI
leifj Oct 20, 2026
80762dd
fix(nymauth): a semantic verifier_id is not a prefixed client_id
leifj Oct 20, 2026
dfed14e
Merge branch 'feat/seed-commitments' into feat/nymauth-verifier
leifj Oct 20, 2026
0d4d0d0
fix(nymauth): count the age window inclusively, and accept a semantic…
leifj Oct 20, 2026
f8675c4
Merge branch 'feat/nymauth-verifier' into feat/nymauth-verifier-native
leifj Oct 20, 2026
5da3715
fix(build): the header guard must actually stop the recipe
leifj Oct 20, 2026
9d16773
fix(nymauth): a shifted age bound must stay inside the date format
leifj Oct 20, 2026
e07c953
Merge branch 'feat/nymauth-verifier' into feat/nymauth-verifier-native
leifj Oct 20, 2026
7cb49ab
fix(nymauth): three more review findings - a panic, an alias, a bound…
leifj Oct 20, 2026
44858d8
Merge branch 'feat/nymauth-verifier' into feat/nymauth-verifier-native
leifj Oct 20, 2026
176a155
fix(nymauth): the transcript bound belongs to the library, not the re…
leifj Oct 20, 2026
f5d658d
feat(nymauth): a predicate function checks its own values
leifj Oct 20, 2026
2dea7af
Merge branch 'feat/nymauth-verifier' into feat/nymauth-verifier-native
leifj Oct 20, 2026
f49cee1
feat(verifier): the nym_auth circuit allowlist, and what may be loaded
leifj Oct 20, 2026
9934aa4
fix(verifier): check the artifacts at startup, and leave a disabled b…
leifj Oct 20, 2026
0f20190
feat(openid4vp): validate a circuit_zk response against the request
leifj Oct 20, 2026
5cee527
docs: re-pin the response vectors to the merged matcher commit
leifj Oct 20, 2026
95d8b67
fix(verifier): a zero Ligero parameter is not a default
leifj Oct 20, 2026
3da26c2
Merge branch 'feat/nymauth-verifier-config' into feat/circuit-zk-resp…
leifj Oct 20, 2026
f3edfd4
fix(openid4vp): a repeated key is judged by where it is, not by its s…
leifj Oct 20, 2026
1027a9b
feat(verifier): dispatch a circuit_zk presentation to the nym_auth ve…
leifj Oct 20, 2026
c820a6b
fix(nymauth): an ill-formed transcript must be refused, not hashed
leifj Oct 20, 2026
662dd1e
Merge branch 'feat/nymauth-verifier' into feat/nymauth-verifier-native
leifj Oct 20, 2026
f320a4e
Merge branch 'feat/nymauth-verifier' into feat/nymauth-verifier-config
leifj Oct 20, 2026
032e705
Merge branch 'feat/nymauth-verifier' into feat/circuit-zk-response
leifj Oct 20, 2026
99c251e
Merge branch 'feat/nymauth-verifier' into feat/nymauth-verifier-dispatch
leifj Oct 20, 2026
6db9dd1
test(nymauth): re-vendor the challenge vectors, now 13 rejects
leifj Oct 20, 2026
9c2b571
Merge branch 'feat/nymauth-verifier' into feat/nymauth-verifier-dispatch
leifj Oct 20, 2026
eb11a9b
feat(verifier): the issuer key comes from the trust layer, bounded an…
leifj Oct 20, 2026
9baf39d
fix(verifier): the dispatch must hand the validator what it expects
leifj Oct 20, 2026
1f435eb
build: move the Longfellow pin with the challenge vectors
leifj Oct 20, 2026
bd231b9
Merge branch 'feat/nymauth-verifier-native' into feat/nymauth-verifie…
leifj Oct 20, 2026
a30c06a
Merge branch 'feat/nymauth-verifier-native' into feat/circuit-zk-resp…
leifj Oct 20, 2026
fe319fc
Merge branch 'feat/nymauth-verifier-native' into feat/nymauth-verifie…
leifj Oct 20, 2026
4e862df
feat(openid4vp): a circuit_zk presentation carries the issuer's chain
leifj Oct 20, 2026
ba5645a
Merge branch 'feat/circuit-zk-response' into feat/nymauth-verifier-di…
leifj Oct 20, 2026
2f9ca39
feat(verifier): Q comes from the presentation's chain, vouched for by…
leifj Oct 20, 2026
8401090
fix(openid4vp): JSON null is a type error, never an absent or empty v…
leifj Oct 20, 2026
0ffb989
Merge branch 'feat/circuit-zk-response' into feat/nymauth-verifier-di…
leifj Oct 20, 2026
02eb600
Merge branch 'feat/circuit-zk-response' into feat/nymauth-verifier-di…
leifj Oct 20, 2026
38bffda
test(openid4vp): re-vendor the response vectors from the merged match…
leifj Oct 20, 2026
dbb54dc
fix(verifier): a circuit_zk proof nothing checked must not verify
leifj Oct 20, 2026
99840fd
feat(nymauth): bind a redirect-delivered presentation to its own hand…
leifj Oct 20, 2026
ddac8f2
fix(verifier): a UI session must record the response mode it published
leifj Oct 20, 2026
4981512
fix(verifier): nym_auth cannot run without a PDP, and refuses to try
leifj Oct 20, 2026
10f21ba
Merge branch 'feat/nymauth-verifier-dispatch' into feat/nymauth-redir…
leifj Oct 20, 2026
cf6d4c8
fix(model): the artifact digest example was a fabricated value
leifj Oct 20, 2026
b0d12dc
Merge branch 'feat/nymauth-verifier-config' into feat/circuit-zk-resp…
leifj Oct 20, 2026
7d202ef
Merge branch 'feat/nymauth-verifier-config' into feat/nymauth-verifie…
leifj Oct 20, 2026
f641242
Merge branch 'feat/nymauth-verifier-dispatch' into feat/nymauth-redir…
leifj Oct 20, 2026
b34027a
build: pin the challenge vectors and Vega to the merged v0.0.7
leifj Oct 20, 2026
1bcc36c
build: pin Longfellow to v0.1.2, and check the two vector copies agree
leifj Oct 20, 2026
35ec0d2
fix(model): sources validation ran with nym_auth switched off
leifj Oct 20, 2026
ec9db0d
Merge branch 'feat/nymauth-verifier-config' into feat/nymauth-verifie…
leifj Oct 20, 2026
763b8b8
refactor(verifier): decide T in one place, and say where it came from
leifj Oct 20, 2026
8a11afb
Merge branch 'feat/nymauth-verifier-dispatch' into feat/nymauth-redir…
leifj Oct 20, 2026
7c0ebf2
feat(openid4vp)!: port the zkp_req request and response to rulebook v0.4
leifj Oct 20, 2026
2987e16
Merge branch 'feat/circuit-zk-response' into feat/nymauth-verifier-di…
leifj Oct 20, 2026
8fc30e0
feat(verifier)!: port the dispatch to v0.4 - issuer_key_set, prover p…
leifj Oct 20, 2026
6d7e097
Merge branch 'feat/circuit-zk-response' into feat/nymauth-verifier-co…
leifj Oct 20, 2026
c102162
feat(config)!: refuse the pre-v0.4 zkp_req configuration names
leifj Oct 20, 2026
9e143a6
Merge branch 'feat/nymauth-verifier-config' into feat/nymauth-verifie…
leifj Oct 20, 2026
48e389b
Merge branch 'feat/nymauth-verifier-dispatch' into feat/nymauth-redir…
leifj Oct 20, 2026
4bf284f
build: pin Longfellow to the #14 merge, and compare the two vector co…
leifj Oct 20, 2026
a8cb7d3
fix(verifier): operator-facing messages say zkp_req, not circuit_zk
leifj Oct 20, 2026
86759ef
Merge branch 'feat/nymauth-verifier-dispatch' into feat/nymauth-redir…
leifj Oct 20, 2026
b1dc6c8
fix(verifier): the last circuit_zk-named messages become zkp_req
leifj Oct 20, 2026
fadc461
docs(model): two more circuit_zk mentions in generated config documen…
leifj Oct 20, 2026
12959db
docs(model): the last circuit_zk mention in the configuration reference
leifj Oct 20, 2026
049ab7d
docs: the format is zkp_req in the configuration reference too
leifj Oct 20, 2026
d2cbacc
fix(nymauth)!: a verifier_id must be one of the two forms v0.4 defines
leifj Oct 20, 2026
ce38471
Merge branch 'feat/nymauth-verifier-dispatch' into feat/nymauth-redir…
leifj Oct 20, 2026
d4c83c8
test: a redirect-transcript fixture still used a bare verifier_id
leifj Oct 20, 2026
e3ac6e9
fix(verifier): a zkp_req request must carry meta.source_format
leifj Oct 20, 2026
77a373f
Merge branch 'feat/circuit-zk-response' into feat/nymauth-verifier-di…
leifj Oct 20, 2026
b9112f8
docs(model): the verifier_id a configuration reference teaches
leifj Oct 20, 2026
81d1622
Merge branch 'feat/nymauth-verifier-dispatch' into feat/nymauth-redir…
leifj Oct 20, 2026
6a4372b
docs(openid4vp): the preset example an operator would copy
leifj Oct 20, 2026
8e78741
fix(openid4vp): run the unsatisfiable vectors the profile is for
leifj Oct 20, 2026
2421af4
Merge branch 'feat/circuit-zk-response' into feat/nymauth-verifier-di…
leifj Oct 20, 2026
4a71866
Merge branch 'feat/nymauth-verifier-dispatch' into feat/nymauth-redir…
leifj Oct 20, 2026
1e7bc2b
fix(verifier): the cgo path still used the pre-v0.4 field name
leifj Oct 20, 2026
5ce9a84
Merge branch 'feat/nymauth-verifier-dispatch' into feat/nymauth-redir…
leifj Oct 20, 2026
55a8c9d
fix(verifier): the operator UI never left its spinner
leifj Oct 21, 2026
770885f
Merge branch 'feat/circuit-zk-response' into feat/nymauth-verifier-di…
leifj Oct 21, 2026
deb0c19
Merge branch 'feat/nymauth-verifier-dispatch' into feat/nymauth-redir…
leifj Oct 21, 2026
80d6ee9
Merge upstream/main: #793 landed, and it carries the pre-v0.4 nymauth
leifj Oct 21, 2026
19efd24
Merge branch 'feat/nymauth-verifier-config' into feat/circuit-zk-resp…
leifj Oct 21, 2026
386a05d
Merge branch 'feat/circuit-zk-response' into feat/nymauth-verifier-di…
leifj Oct 21, 2026
c00a4d4
Merge branch 'feat/nymauth-verifier-dispatch' into feat/nymauth-redir…
leifj Oct 21, 2026
90f227f
fix(verifier): a refused zkp_req presentation is not a server error
leifj Oct 21, 2026
0364b17
Merge branch 'feat/nymauth-verifier-dispatch' into feat/nymauth-redir…
leifj Oct 21, 2026
1973f02
feat(nymauth)!: key the circuit allowlist by system and configuration
leifj Oct 24, 2026
3c8992a
Merge branch 'feat/nymauth-verifier-config' into feat/circuit-zk-resp…
leifj Oct 24, 2026
d73f205
Merge branch 'feat/circuit-zk-response' into feat/nymauth-verifier-di…
leifj Oct 24, 2026
7d7db07
Merge branch 'feat/nymauth-verifier-dispatch' into feat/nymauth-redir…
leifj Oct 24, 2026
558a03b
feat(nymauth): the four circuit parameters are Longfellow's, per system
leifj Oct 24, 2026
138b4dc
Merge branch 'feat/nymauth-verifier-config' into feat/circuit-zk-resp…
leifj Oct 24, 2026
c20811d
feat(nymauth): a Vega nym_auth verifier backend
leifj Oct 24, 2026
ec7b833
Merge branch 'feat/nymauth-verifier-config' into feat/circuit-zk-resp…
leifj Oct 24, 2026
ec8718b
Merge branch 'feat/circuit-zk-response' into feat/nymauth-verifier-di…
leifj Oct 24, 2026
362dccd
feat(verifier): load the circuit with the library its system names
leifj Oct 24, 2026
bc84152
Merge branch 'feat/nymauth-verifier-dispatch' into feat/nymauth-redir…
leifj Oct 24, 2026
673b914
build: the verifier links Vega too, now that it verifies with it
leifj Oct 24, 2026
3d7120d
Merge branch 'feat/nymauth-verifier-dispatch' into feat/nymauth-redir…
leifj Oct 24, 2026
0f3f64e
fix(verifier): the preset picker posts the request the server sends
leifj Oct 24, 2026
eb37f92
Merge branch 'feat/nymauth-verifier-config' into feat/circuit-zk-resp…
leifj Oct 24, 2026
7da54a0
Merge branch 'feat/circuit-zk-response' into feat/nymauth-verifier-di…
leifj Oct 24, 2026
103cc95
Merge branch 'feat/nymauth-verifier-dispatch' into feat/nymauth-redir…
leifj Oct 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
19 changes: 17 additions & 2 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,16 @@ jobs:
# targets, and both are cached on the resolved revision, so both
# need resolving the same way. One step rather than two so the
# ls-remote handling below exists once.
# The Makefile's own default, not a second copy of it. These
# refs are pinned there (ZK_CRED_LONGFELLOW_REF is a commit of
# the crate's nym_auth branch), and a cache key resolved from a
# hardcoded "main" would track a ref the build does not use:
# bumping the pin would leave the key unchanged and restore a
# stage built from the OLD pin. Same resolver as
# .github/workflows/docker-build-push.yml.
read_ref() {
sed -n "s/^$1[[:space:]]*?=[[:space:]]*//p" Makefile | head -n1
}
resolve() {
local name="$1" repo="$2" ref="$3" sha refs
if printf '%s' "$ref" | grep -Eiq '^[0-9a-f]{40}$'; then
Expand All @@ -134,8 +144,13 @@ jobs:
fi
echo "$sha"
}
echo "sha=$(resolve zk-cred-longfellow https://github.com/sirosfoundation/zk-cred-longfellow.git "${ZK_CRED_LONGFELLOW_REF:-main}")" >> "$GITHUB_OUTPUT"
echo "vega_sha=$(resolve zk-cred-vega https://github.com/sirosfoundation/zk-cred-vega.git "${ZK_CRED_VEGA_REF:-main}")" >> "$GITHUB_OUTPUT"
LONGFELLOW_REF=$(read_ref ZK_CRED_LONGFELLOW_REF)
VEGA_REF=$(read_ref ZK_CRED_VEGA_REF)
for pair in "ZK_CRED_LONGFELLOW_REF=$LONGFELLOW_REF" "ZK_CRED_VEGA_REF=$VEGA_REF"; do
case "$pair" in *=) echo "::error::could not read ${pair%=} default from Makefile"; exit 1 ;; esac
done
echo "sha=$(resolve zk-cred-longfellow https://github.com/sirosfoundation/zk-cred-longfellow.git "$LONGFELLOW_REF")" >> "$GITHUB_OUTPUT"
echo "vega_sha=$(resolve zk-cred-vega https://github.com/sirosfoundation/zk-cred-vega.git "$VEGA_REF")" >> "$GITHUB_OUTPUT"

- name: Cache the built C ABI library
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
Expand Down
160 changes: 140 additions & 20 deletions Makefile

Large diffs are not rendered by default.

19 changes: 16 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,19 @@ gated by the `zk_verifier` config block.
wire protocol and `docs/ZK_VEGA_DIGESTID_WIRE_EXTENSION.md` for a real
wire-format addition Vega's verification needed (flagged there, not yet
raised with multipaz upstream).
- **nym_auth** - the pseudonym circuits, a *second* C ABI of the same
zk-cred-longfellow build (`include/zk_cred_longfellow_nymauth.h`,
bound in `pkg/nymauth/verifier/zknative`). `make zk-native-lib` stages
both headers and requires both: a stage carrying only the mdoc header
is refused rather than silently building without pseudonym support.
The request a proof is checked against - and the rule that none of it
may come from the holder's response - lives in
`pkg/nymauth/verifier`, which builds without cgo; only the proof check
itself is behind the tag.

`ZK_CRED_LONGFELLOW_REF` is pinned to a commit of that crate's
`feat/nymauth-prove` branch, because the nym_auth C ABI is not on its
`main` yet. Move the pin to a `main` SHA once that branch lands.

Setup:

Expand Down Expand Up @@ -400,9 +413,9 @@ LD_LIBRARY_PATH=$(pwd)/third_party/zk-cred-longfellow/lib:$(pwd)/third_party/zk-
PATH=$(pwd)/bin:$PATH \
./bin/vc_verifier-zknative

# ...or run pkg/mdoc's zknative-tagged tests directly (covers both
# systems; make test-zknative sets the loader path for both libraries
# itself):
# ...or run the zknative-tagged tests directly (pkg/mdoc for both ZK
# systems, pkg/nymauth for the pseudonym circuits; make test-zknative
# sets the loader path for both libraries itself):
make test-zknative
```

Expand Down
2 changes: 1 addition & 1 deletion developer_tools/scripts/seed_recover/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ func run() error {
subjects subjectList
derivContext = flag.String("context", "", "the derivation context, if the credential configuration sets one")
pseudonymConfig = flag.String("pseudonym-config", "", "nym_auth pseudonym configuration to compute, e.g. known-offender-matching-ssc")
verifierID = flag.String("verifier-id", "", "the verifier_id EXACTLY as the Verifier publishes it: bare (verifier.example) for an x509_san_dns Verifier, or semantic_id:<identifier> for a semantic one - never the prefixed client_id")
verifierID = flag.String("verifier-id", "", "the BARE verifier_id, e.g. verifier.example - not the prefixed client_id")
verifierContext = flag.String("verifier-context", "", "verifier_context, required for account-recovery-ssc")
userValue = flag.String("user-value", "", "the user-supplied linking value, for user-managed-pseudonym-xsite-ssc")
expect = flag.String("expect", "", "a pseudonym in hex to compare against; exit 0 on a match, 2 on a mismatch")
Expand Down
10 changes: 7 additions & 3 deletions dockerfiles/worker
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,13 @@ RUN make proto-${SERVICE_NAME}
# Every worker links libzk_cred_bbs.so via pkg/openid4vci → pkg/bbs.
RUN make bbs-native-lib ${ZK_CRED_BBS_REF:+ZK_CRED_BBS_REF="$ZK_CRED_BBS_REF"}

# Only the verifier links libzk_cred_longfellow.so (native ZK/PPID via the
# zknative build tag) and only the verifier's separate zkvegaverifyworker
# links libzk_cred_vega.so.
# Only the verifier links the ZK libraries (zknative build tag). It links
# BOTH: libzk_cred_longfellow.so, and libzk_cred_vega.so for the in-process
# Vega nym_auth verifier - the latter through
# pkg/nymauth/verifier/zknative_vega's own cgo directives against
# third_party/zk-cred-vega, which is why the build step below sets explicit
# flags for Longfellow only. The separate zkvegaverifyworker links Vega too,
# for the subprocess-isolated mdoc path.
RUN if [ "$SERVICE_NAME" = "verifier" ]; then \
make zk-native-lib ${ZK_CRED_LONGFELLOW_REF:+ZK_CRED_LONGFELLOW_REF="$ZK_CRED_LONGFELLOW_REF"} && \
make zk-native-lib-vega ${ZK_CRED_VEGA_REF:+ZK_CRED_VEGA_REF="$ZK_CRED_VEGA_REF"} ; \
Expand Down
Loading
Loading