Skip to content

Commit 1a5eec9

Browse files
committed
Update draft spec and READMEs to document accumulator non-revocation additions
Bumps PROTOCOL_ID to CREDKIT-PROOFS-V4, adds Section 7 (accumulator non-revocation), new wire format sections for accumulator params/updates/proofs, and expanded security/privacy considerations. Adds references for VB20, VB-ATTACK, KB21, ALLOSAUR, and CH09. Updates package tables to include @credkit/accumulator, test counts (371 → 459), and README prose across proofs, cryptosuite, and accumulator packages. Adds a .claude/launch.json dev configuration for the vgw-dmv app.
1 parent a7c4f65 commit 1a5eec9

7 files changed

Lines changed: 1093 additions & 302 deletions

File tree

.claude/launch.json

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"version": "0.0.1",
3+
"configurations": [
4+
{
5+
"name": "vgw-dmv",
6+
"runtimeExecutable": "pnpm",
7+
"runtimeArgs": ["--dir", "/Users/tm/git/tmarkovski/verygoodwallet", "--filter", "@vgw/dmv", "dev"],
8+
"port": 5174
9+
}
10+
]
11+
}

README.md

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ runtime.
55

66
credkit combines BBS signatures, blind issuance, and composite zero-knowledge proofs so a holder
77
can selectively disclose credential fields, prove that credentials share a holder-controlled
8-
secret, and prove facts about signed values without revealing the values themselves. The complete
9-
flow is packaged as JSON-LD Verifiable Credentials and Verifiable Presentations.
8+
secret, prove facts about signed values without revealing the values themselves, and prove that a
9+
credential has not been revoked without disclosing a stable status identifier. The complete flow
10+
is packaged as JSON-LD Verifiable Credentials and Verifiable Presentations.
1011

1112
The construction is specified in the **[draft specification](https://tmarkovski.github.io/credkit/)**
1213
([source](docs/draft-credkit-composite-proofs.md)).
@@ -28,32 +29,38 @@ The construction is specified in the **[draft specification](https://tmarkovski.
2829
- **Predicates over hidden values.** Range and arbitrary-set membership proofs are bound directly
2930
to signed numeric messages: prove a hidden birth date satisfies an age threshold, or a hidden
3031
state belongs to an allowed set, without revealing the value.
32+
- **Privacy-preserving revocation.** A holder proves membership in the issuer's current unrevoked
33+
set without revealing the credential's revocation id. Issuance does not change the registry;
34+
public deletion-only updates let every non-revoked holder refresh a witness offline.
3135
- **JSON-LD credentials and presentations.** Issue and verify W3C-shaped credentials, and present
32-
one or more credentials under a single merged challenge.
36+
one or more credentials—including verifier-required non-revocation gates—under a single merged
37+
challenge.
3338

34-
All predicate and linkage proofs are bound to the BBS proofs inside one Fiat-Shamir transcript,
35-
so a verifier checks a single presentation rather than loosely coupled sub-proofs.
39+
All predicate, non-revocation, and linkage proofs are bound to the BBS proofs inside one
40+
Fiat-Shamir transcript, so a verifier checks a single presentation rather than loosely coupled
41+
sub-proofs.
3642

3743
## Packages
3844

3945
| Package | What it provides |
4046
|---|---|
4147
| `@credkit/bbs` | IETF BBS core, blind commitment and issuance, and DISCLOSE/HIDE proof modes. All 33 vendored fixtures pass byte-for-byte with the SHA-256 and SHAKE-256 ciphersuites. |
4248
| `@credkit/range` | CCS set-membership and range proofs over BLS12-381, exposed as split-phase protocols for composition under an external challenge. |
43-
| `@credkit/proofs` | Multi-statement BBS presentations, one merged Fiat-Shamir challenge, hidden-witness equality, range predicates, and set-membership predicates. |
44-
| `@credkit/cryptosuite` | JSON-LD credential issuance and verification, numeric claim encoding, selective disclosure, predicates, holder binding, and single- or multi-credential Verifiable Presentations. |
49+
| `@credkit/accumulator` | VB positive accumulator for additions-static, deletion-only revocation registries, public witness updates, and a split-phase zero-knowledge membership proof. |
50+
| `@credkit/proofs` | Multi-statement BBS presentations, one merged Fiat-Shamir challenge, hidden-witness equality, range and set-membership predicates, and accumulator non-revocation gates. |
51+
| `@credkit/cryptosuite` | JSON-LD credential issuance and verification, selective disclosure, predicates, holder binding, revocable credentials, and single- or multi-credential Verifiable Presentations. |
4552

4653
```text
4754
@credkit/cryptosuite JSON-LD credentials and presentations
4855
|
4956
@credkit/proofs composite transcript and witness binding
50-
/ \
51-
@credkit/bbs @credkit/range
52-
BBS + blind hidden-value predicates
53-
issuance
57+
/ | \
58+
@credkit/bbs @credkit/range @credkit/accumulator
59+
BBS + blind hidden-value private non-revocation
60+
issuance predicates
5461
```
5562

56-
The suite has **371 passing tests** across the four packages and both ciphersuites.
63+
The suite has **459 passing tests** across all five packages and both ciphersuites.
5764
Golden-vector and negative tests pin the custom transcripts and wire formats; the BBS package
5865
also uses the vendored upstream fixtures.
5966

@@ -66,9 +73,10 @@ The standards boundary is intentional:
6673
[`packages/bbs/package.json`](packages/bbs/package.json).
6774
- Numeric messages and the split-phase proof API are narrow implementation extensions used by
6875
the composite layer.
69-
- Composite presentations and predicates use credkit's own transcript and wire format. They are
70-
described in the [draft specification](docs/draft-credkit-composite-proofs.md), but currently
71-
have no independent implementation or external test vectors.
76+
- Composite presentations, predicates, and accumulator non-revocation proofs use credkit's own
77+
transcript and wire format. They are described in the
78+
[draft specification](docs/draft-credkit-composite-proofs.md), but currently have no independent
79+
implementation or external test vectors.
7280
- The JSON-LD layer borrows the document-processing shape of `bbs-2023`, but uses distinct
7381
cryptosuite identifiers and proof envelopes. A credkit proof is deliberately not a
7482
`bbs-2023` proof.
@@ -105,8 +113,9 @@ import specifiers to the `.ts` files (a ~15-line resolve plugin in esbuild or Vi
105113
packages/
106114
bbs/ BBS signatures and blind issuance
107115
range/ CCS range and set-membership proofs
108-
proofs/ composite presentations and predicate binding
109-
cryptosuite/ JSON-LD VC and VP integration
116+
accumulator/ revocation registry, witness updates, and membership proofs
117+
proofs/ composite presentations, predicate binding, and non-revocation
118+
cryptosuite/ JSON-LD VC, VP, and revocation integration
110119
docs/
111120
draft-credkit-composite-proofs.md draft specification source
112121
draft-credkit-composite-proofs.html rendered draft

0 commit comments

Comments
 (0)