@midnight-ntwrk/credential-compact 0.1.0-rc2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/LICENSE +201 -0
  3. package/README.md +59 -0
  4. package/dist/compact-build.json +29 -0
  5. package/dist/contract.d.ts +2 -0
  6. package/dist/contract.d.ts.map +1 -0
  7. package/dist/contract.js +2 -0
  8. package/dist/contract.js.map +1 -0
  9. package/dist/credentials/bindings.compact +5 -0
  10. package/dist/credentials/composable.compact +14 -0
  11. package/dist/credentials/holder-bindings.compact +320 -0
  12. package/dist/credentials/issue.compact +91 -0
  13. package/dist/credentials/present.compact +84 -0
  14. package/dist/credentials/proofs.compact +122 -0
  15. package/dist/credentials/protocol-support.compact +7 -0
  16. package/dist/credentials/protocols.compact +125 -0
  17. package/dist/credentials/relations.compact +36 -0
  18. package/dist/credentials/status-bindings.compact +60 -0
  19. package/dist/credentials/types.compact +141 -0
  20. package/dist/credentials/vc-support.compact +8 -0
  21. package/dist/credentials/vc.compact +59 -0
  22. package/dist/credentials/vp.compact +25 -0
  23. package/dist/credentials.compact +20 -0
  24. package/dist/holder-binding/same-holder/composable.compact +179 -0
  25. package/dist/holder-binding/same-holder.compact +180 -0
  26. package/dist/holder-binding/same-holder.d.ts +2 -0
  27. package/dist/holder-binding/same-holder.d.ts.map +1 -0
  28. package/dist/holder-binding/same-holder.js +2 -0
  29. package/dist/holder-binding/same-holder.js.map +1 -0
  30. package/dist/index.d.ts +3 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +3 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/jubjub.d.ts +3 -0
  35. package/dist/jubjub.d.ts.map +1 -0
  36. package/dist/jubjub.js +6 -0
  37. package/dist/jubjub.js.map +1 -0
  38. package/dist/managed/credentials/contract/index.d.ts +330 -0
  39. package/dist/managed/credentials/contract/index.js +2213 -0
  40. package/dist/managed/credentials/contract/index.js.map +8 -0
  41. package/dist/managed/same-holder/contract/index.d.ts +400 -0
  42. package/dist/managed/same-holder/contract/index.js +2688 -0
  43. package/dist/managed/same-holder/contract/index.js.map +8 -0
  44. package/package.json +113 -0
  45. package/src/credentials/bindings.compact +5 -0
  46. package/src/credentials/composable.compact +14 -0
  47. package/src/credentials/holder-bindings.compact +320 -0
  48. package/src/credentials/issue.compact +91 -0
  49. package/src/credentials/present.compact +84 -0
  50. package/src/credentials/proofs.compact +122 -0
  51. package/src/credentials/protocol-support.compact +7 -0
  52. package/src/credentials/protocols.compact +125 -0
  53. package/src/credentials/relations.compact +36 -0
  54. package/src/credentials/status-bindings.compact +60 -0
  55. package/src/credentials/types.compact +141 -0
  56. package/src/credentials/vc-support.compact +8 -0
  57. package/src/credentials/vc.compact +59 -0
  58. package/src/credentials/vp.compact +25 -0
  59. package/src/credentials.compact +20 -0
  60. package/src/holder-binding/same-holder/composable.compact +179 -0
  61. package/src/holder-binding/same-holder.compact +180 -0
@@ -0,0 +1,8 @@
1
+ {
2
+ "version": 3,
3
+ "file": "index.js",
4
+ "sourceRoot": "../../../../",
5
+ "sources": ["src/holder-binding/same-holder.compact", "src/holder-binding/.././credentials/./types.compact", "src/holder-binding/.././credentials/./proofs.compact", "src/holder-binding/.././credentials/./holder-bindings.compact", "src/holder-binding/.././credentials/./protocols.compact", "src/holder-binding/.././credentials/./status-bindings.compact", "compiler/standard-library.compact"],
6
+ "names": [],
7
+ "mappings": "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"
8
+ }
package/package.json ADDED
@@ -0,0 +1,113 @@
1
+ {
2
+ "name": "@midnight-ntwrk/credential-compact",
3
+ "version": "0.1.0-rc2",
4
+ "description": "Private candidate library of family-neutral Compact VC and VP semantics",
5
+ "license": "Apache-2.0",
6
+ "private": false,
7
+ "type": "module",
8
+ "publishConfig": {
9
+ "access": "public",
10
+ "provenance": true,
11
+ "registry": "https://registry.npmjs.org/"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/midnightntwrk/midnight-verifiable-credentials.git",
16
+ "directory": "packages/core/compact"
17
+ },
18
+ "keywords": [
19
+ "midnight",
20
+ "verifiable-credentials",
21
+ "compact",
22
+ "vc",
23
+ "vp"
24
+ ],
25
+ "sideEffects": [],
26
+ "engines": {
27
+ "node": ">=24",
28
+ "pnpm": ">=10"
29
+ },
30
+ "main": "dist/index.js",
31
+ "module": "dist/index.js",
32
+ "types": "./dist/index.d.ts",
33
+ "exports": {
34
+ ".": {
35
+ "types": "./dist/index.d.ts",
36
+ "import": "./dist/index.js",
37
+ "default": "./dist/index.js"
38
+ },
39
+ "./contract": {
40
+ "types": "./dist/contract.d.ts",
41
+ "import": "./dist/contract.js",
42
+ "default": "./dist/contract.js"
43
+ },
44
+ "./jubjub": {
45
+ "types": "./dist/jubjub.d.ts",
46
+ "import": "./dist/jubjub.js",
47
+ "default": "./dist/jubjub.js"
48
+ },
49
+ "./holder-binding/same-holder": {
50
+ "types": "./dist/holder-binding/same-holder.d.ts",
51
+ "import": "./dist/holder-binding/same-holder.js",
52
+ "default": "./dist/holder-binding/same-holder.js"
53
+ },
54
+ "./credentials.compact": "./dist/credentials.compact",
55
+ "./holder-binding/same-holder.compact": "./dist/holder-binding/same-holder.compact",
56
+ "./holder-binding/same-holder/composable.compact": "./dist/holder-binding/same-holder/composable.compact"
57
+ },
58
+ "dependencies": {
59
+ "@midnight-ntwrk/compact-runtime": "0.15.0"
60
+ },
61
+ "files": [
62
+ "dist/**",
63
+ "src/**/*.compact",
64
+ "README.md",
65
+ "CHANGELOG.md",
66
+ "package.json"
67
+ ],
68
+ "midnight": {
69
+ "maturity": "core",
70
+ "packageClass": "dist",
71
+ "releaseStage": "supported",
72
+ "compactCompilerVersion": "0.30.0",
73
+ "compactRuntimeVersion": "0.15.0",
74
+ "compactSources": [
75
+ "src/credentials.compact",
76
+ "src/credentials/bindings.compact",
77
+ "src/credentials/composable.compact",
78
+ "src/credentials/holder-bindings.compact",
79
+ "src/credentials/issue.compact",
80
+ "src/credentials/present.compact",
81
+ "src/credentials/proofs.compact",
82
+ "src/credentials/protocol-support.compact",
83
+ "src/credentials/protocols.compact",
84
+ "src/credentials/relations.compact",
85
+ "src/credentials/status-bindings.compact",
86
+ "src/credentials/types.compact",
87
+ "src/credentials/vc-support.compact",
88
+ "src/credentials/vc.compact",
89
+ "src/credentials/vp.compact",
90
+ "src/holder-binding/same-holder.compact",
91
+ "src/holder-binding/same-holder/composable.compact"
92
+ ],
93
+ "compactEntrypoints": {
94
+ "standalone": [
95
+ "./credentials.compact",
96
+ "./holder-binding/same-holder.compact"
97
+ ],
98
+ "composition": [
99
+ "./holder-binding/same-holder/composable.compact"
100
+ ]
101
+ }
102
+ },
103
+ "scripts": {
104
+ "check-toolchain": "node scripts/check-toolchain.mjs",
105
+ "compact": "pnpm run check-toolchain && rm -rf src/managed && compact compile src/credentials.compact src/managed/credentials && compact compile src/holder-binding/same-holder.compact src/managed/same-holder && rm -rf src/managed/credentials/compiler src/managed/same-holder/compiler",
106
+ "build": "pnpm run compact && rm -rf dist && mkdir -p dist && tsc -b tsconfig.build.json --force && cp -Rf src/managed dist/ && cp src/credentials.compact dist/ && cp -Rf src/credentials dist/ && mkdir -p dist/holder-binding && cp src/holder-binding/same-holder.compact dist/holder-binding/ && cp -Rf src/holder-binding/same-holder dist/holder-binding/ && node scripts/write-build-manifest.mjs",
107
+ "typecheck": "pnpm run compact && tsc -p tsconfig.json --noEmit",
108
+ "lint": "eslint src --ignore-pattern 'src/managed/**'",
109
+ "test": "vitest run",
110
+ "test:ci": "pnpm run compact && vitest run",
111
+ "clean": "rm -rf dist src/managed coverage reports *.tsbuildinfo"
112
+ }
113
+ }
@@ -0,0 +1,5 @@
1
+ // Shared binding surface for capability packages that only need holder-binding
2
+ // types and witness-validation helpers.
3
+
4
+ include "./types";
5
+ include "./holder-bindings";
@@ -0,0 +1,14 @@
1
+ // Composition-safe shared root for Layer 3 contracts and credential-family
2
+ // entrypoints. This file includes the leaf modules directly because Compact
3
+ // does not deduplicate repeated includes across intermediate entry points.
4
+
5
+ include "./types";
6
+ include "./proofs";
7
+ include "./vc";
8
+ include "./vp";
9
+ include "./relations";
10
+ include "./holder-bindings";
11
+ include "./protocols";
12
+ include "./issue";
13
+ include "./present";
14
+ include "./status-bindings";
@@ -0,0 +1,320 @@
1
+ // Holder-binding and holder-witness primitives.
2
+ // This file groups the reusable binding checks for explicit DID, Jubjub,
3
+ // offchain DID, secret-holder, and blinded-secret-holder profiles.
4
+ // =====================
5
+ // Explicit and Jubjub-backed holder bindings
6
+ // =====================
7
+ export pure circuit assertValidExplicitHolderBinding(
8
+ binding: ExplicitHolderBinding
9
+ ): [] {
10
+ assert(
11
+ binding.holderVerificationMethodRef.didContractAddress.bytes != pad(32, ""),
12
+ "Explicit holder binding DID contract address must be set"
13
+ );
14
+ assert(
15
+ binding.holderVerificationMethodRef.methodId != pad(32, ""),
16
+ "Explicit holder binding method reference must be set"
17
+ );
18
+ }
19
+
20
+ export pure circuit assertMatchingExplicitHolderBindings(
21
+ credentialBinding: ExplicitHolderBinding,
22
+ presentationBinding: ExplicitHolderBinding
23
+ ): [] {
24
+ assert(
25
+ presentationBinding.holderVerificationMethodRef.didContractAddress
26
+ == credentialBinding.holderVerificationMethodRef.didContractAddress,
27
+ "Presentation holder contract does not match credential holder binding"
28
+ );
29
+ assert(
30
+ presentationBinding.holderVerificationMethodRef.methodId
31
+ == credentialBinding.holderVerificationMethodRef.methodId,
32
+ "Presentation holder method reference does not match credential holder binding"
33
+ );
34
+ }
35
+
36
+ export pure circuit assertProofMatchesExplicitHolderBinding(
37
+ binding: ExplicitHolderBinding,
38
+ presentationProof: Proof
39
+ ): [] {
40
+ assert(
41
+ binding.holderVerificationMethodRef.didContractAddress
42
+ == presentationProof.signerVerificationMethodRef.didContractAddress,
43
+ "Presentation proof signer must match holder binding"
44
+ );
45
+ assert(
46
+ binding.holderVerificationMethodRef.methodId
47
+ == presentationProof.signerVerificationMethodRef.methodId,
48
+ "Presentation proof signer method reference must match holder binding"
49
+ );
50
+ }
51
+
52
+ export pure circuit assertValidJubjubHolderBinding(
53
+ binding: JubjubHolderBinding
54
+ ): [] {
55
+ // This is only a sentinel check that the binding is populated.
56
+ // The helper remains useful for the legacy compatibility profile and as a
57
+ // building block inside richer DID-shaped bindings.
58
+ // Callers still need assertValidPresentationContextProof(...) or an
59
+ // equivalent proof verification path to establish proof-of-possession.
60
+ assert(
61
+ jubjubPointX(binding.holderPublicKey) != 0 as Field ||
62
+ jubjubPointY(binding.holderPublicKey) != 0 as Field,
63
+ "Jubjub holder binding public key must be set"
64
+ );
65
+ }
66
+
67
+ export pure circuit assertMatchingJubjubHolderBindings(
68
+ credentialBinding: JubjubHolderBinding,
69
+ presentationBinding: JubjubHolderBinding
70
+ ): [] {
71
+ assert(
72
+ jubjubPointX(presentationBinding.holderPublicKey)
73
+ == jubjubPointX(credentialBinding.holderPublicKey) &&
74
+ jubjubPointY(presentationBinding.holderPublicKey)
75
+ == jubjubPointY(credentialBinding.holderPublicKey),
76
+ "Presentation Jubjub holder key does not match the credential holder binding"
77
+ );
78
+ }
79
+
80
+ export pure circuit assertProofMatchesJubjubHolderBinding(
81
+ binding: JubjubHolderBinding,
82
+ presentationProof: Proof
83
+ ): [] {
84
+ assert(
85
+ jubjubPointX(binding.holderPublicKey)
86
+ == jubjubPointX(presentationProof.publicKey) &&
87
+ jubjubPointY(binding.holderPublicKey)
88
+ == jubjubPointY(presentationProof.publicKey),
89
+ "Presentation proof public key must match the Jubjub holder binding"
90
+ );
91
+ }
92
+
93
+ export pure circuit assertValidOffchainMidnightHolderBinding(
94
+ binding: OffchainMidnightHolderBinding
95
+ ): [] {
96
+ // This validates presence and consistency only for the preferred lightweight
97
+ // DID-shaped offchain profile.
98
+ // It does not prove that holderPublicKey is the verification method
99
+ // published under holderMethodId in the referenced offchain DID state.
100
+ assert(
101
+ binding.holderDidStateHash != pad(32, ""),
102
+ "Offchain Midnight holder state hash must be set"
103
+ );
104
+ assert(
105
+ binding.holderMethodId != pad(32, ""),
106
+ "Offchain Midnight holder method id must be set"
107
+ );
108
+ const jubjubBinding: JubjubHolderBinding = JubjubHolderBinding {
109
+ holderPublicKey: binding.holderPublicKey
110
+ };
111
+ assertValidJubjubHolderBinding(jubjubBinding);
112
+ }
113
+
114
+ export pure circuit assertMatchingOffchainMidnightHolderBindings(
115
+ credentialBinding: OffchainMidnightHolderBinding,
116
+ presentationBinding: OffchainMidnightHolderBinding
117
+ ): [] {
118
+ assert(
119
+ presentationBinding.holderDidStateHash
120
+ == credentialBinding.holderDidStateHash,
121
+ "Offchain Midnight holder state hash does not match the credential holder binding"
122
+ );
123
+ assert(
124
+ presentationBinding.holderMethodId
125
+ == credentialBinding.holderMethodId,
126
+ "Offchain Midnight holder method id does not match the credential holder binding"
127
+ );
128
+ const credentialJubjubBinding: JubjubHolderBinding = JubjubHolderBinding {
129
+ holderPublicKey: credentialBinding.holderPublicKey
130
+ };
131
+ const presentationJubjubBinding: JubjubHolderBinding = JubjubHolderBinding {
132
+ holderPublicKey: presentationBinding.holderPublicKey
133
+ };
134
+ assertMatchingJubjubHolderBindings(
135
+ credentialJubjubBinding,
136
+ presentationJubjubBinding
137
+ );
138
+ }
139
+
140
+ export pure circuit assertProofMatchesOffchainMidnightHolderBinding(
141
+ binding: OffchainMidnightHolderBinding,
142
+ presentationProof: Proof
143
+ ): [] {
144
+ const jubjubBinding: JubjubHolderBinding = JubjubHolderBinding {
145
+ holderPublicKey: binding.holderPublicKey
146
+ };
147
+ assertProofMatchesJubjubHolderBinding(jubjubBinding, presentationProof);
148
+ }
149
+
150
+ // =====================
151
+ // Secret-holder bindings and derived pseudonyms
152
+ // =====================
153
+ export pure circuit noSecretHolderChallengeResponse(): Bytes<32> {
154
+ return pad(32, "midnight:vc:no-holder-response");
155
+ }
156
+
157
+ export pure circuit secretHolderBindingCommitment(
158
+ holderSecret: Bytes<32>,
159
+ opening: Bytes<32>
160
+ ): Bytes<32> {
161
+ return persistentCommit<Bytes<32>>(holderSecret, opening);
162
+ }
163
+
164
+ export pure circuit secretHolderBindingChallengeResponse(
165
+ holderSecret: Bytes<32>,
166
+ verifierChallengeHash: Bytes<32>
167
+ ): Bytes<32> {
168
+ return persistentHash<Vector<3, Bytes<32>>>([
169
+ pad(32, "midnight:vc:holder-chall"),
170
+ holderSecret,
171
+ verifierChallengeHash
172
+ ]);
173
+ }
174
+
175
+ export pure circuit verifierScopedPseudonym(
176
+ holderSecret: Bytes<32>,
177
+ verifierDomainHash: Bytes<32>
178
+ ): Bytes<32> {
179
+ return persistentHash<Vector<3, Bytes<32>>>([
180
+ pad(32, "midnight:vc:holder-pseudonym"),
181
+ holderSecret,
182
+ verifierDomainHash
183
+ ]);
184
+ }
185
+
186
+ export pure circuit assertVerifierScopedPseudonym(
187
+ pseudonym: Bytes<32>,
188
+ holderSecret: Bytes<32>,
189
+ verifierDomainHash: Bytes<32>
190
+ ): [] {
191
+ assert(
192
+ pseudonym == verifierScopedPseudonym(holderSecret, verifierDomainHash),
193
+ "Verifier-scoped pseudonym does not match the holder secret and verifier domain"
194
+ );
195
+ }
196
+
197
+ export pure circuit blindedSecretHolderCommitment(
198
+ holderSecretCommitment: Bytes<32>,
199
+ issuerNonce: Bytes<32>,
200
+ blindingFactor: Bytes<32>
201
+ ): Bytes<32> {
202
+ // NOTE: This remains a hash-based compatibility commitment today. The
203
+ // breaking `persistentCommit` migration is tracked separately and should not
204
+ // be rolled in silently with source-style or purity cleanups.
205
+ return persistentHash<Vector<4, Bytes<32>>>([
206
+ pad(32, "midnight:vc:blind-holder"),
207
+ holderSecretCommitment,
208
+ issuerNonce,
209
+ blindingFactor
210
+ ]);
211
+ }
212
+
213
+ export pure circuit assertValidSecretHolderCredentialBinding(
214
+ binding: SecretHolderBinding
215
+ ): [] {
216
+ assert(
217
+ binding.requestChallengeResponse == noSecretHolderChallengeResponse(),
218
+ "Credential secret holder binding must not embed a request challenge response"
219
+ );
220
+ }
221
+
222
+ export pure circuit assertValidSecretHolderPresentationBinding(
223
+ binding: SecretHolderBinding
224
+ ): [] {
225
+ assert(
226
+ binding.requestChallengeResponse != noSecretHolderChallengeResponse(),
227
+ "Presentation secret holder binding must include a request challenge response"
228
+ );
229
+ }
230
+
231
+ export pure circuit assertMatchingSecretHolderBindings(
232
+ credentialBinding: SecretHolderBinding,
233
+ presentationBinding: SecretHolderBinding
234
+ ): [] {
235
+ assert(
236
+ credentialBinding.holderSecretCommitment == presentationBinding.holderSecretCommitment,
237
+ "Presentation holder secret commitment does not match the credential holder binding"
238
+ );
239
+ }
240
+
241
+ export pure circuit assertValidBlindedSecretHolderCredentialBinding(
242
+ binding: BlindedSecretHolderBinding
243
+ ): [] {
244
+ assert(
245
+ binding.requestChallengeResponse == noSecretHolderChallengeResponse(),
246
+ "Credential blinded holder binding must not embed a request challenge response"
247
+ );
248
+ }
249
+
250
+ export pure circuit assertValidBlindedSecretHolderPresentationBinding(
251
+ binding: BlindedSecretHolderBinding
252
+ ): [] {
253
+ assert(
254
+ binding.requestChallengeResponse != noSecretHolderChallengeResponse(),
255
+ "Presentation blinded holder binding must include a request challenge response"
256
+ );
257
+ }
258
+
259
+ export pure circuit assertMatchingBlindedSecretHolderBindings(
260
+ credentialBinding: BlindedSecretHolderBinding,
261
+ presentationBinding: BlindedSecretHolderBinding
262
+ ): [] {
263
+ assert(
264
+ credentialBinding.blindedHolderSecretCommitment
265
+ == presentationBinding.blindedHolderSecretCommitment,
266
+ "Presentation blinded holder commitment does not match the credential holder binding"
267
+ );
268
+ assert(
269
+ credentialBinding.issuerNonce == presentationBinding.issuerNonce,
270
+ "Presentation issuer nonce does not match the credential holder binding"
271
+ );
272
+ }
273
+
274
+ // =====================
275
+ // Witness validation and recomputation helpers
276
+ // =====================
277
+ // NOTE: these helpers validate caller-supplied witness material passed as
278
+ // ordinary parameters. They do not perform Compact `witness` reads themselves.
279
+ export pure circuit assertSecretHolderBindingWitness(
280
+ binding: SecretHolderBinding,
281
+ verifierChallengeHash: Bytes<32>,
282
+ holderSecret: Bytes<32>,
283
+ opening: Bytes<32>
284
+ ): [] {
285
+ assert(
286
+ secretHolderBindingCommitment(holderSecret, opening) == binding.holderSecretCommitment,
287
+ "Holder secret witness does not match the holder-binding commitment"
288
+ );
289
+ assert(
290
+ secretHolderBindingChallengeResponse(holderSecret, verifierChallengeHash)
291
+ == binding.requestChallengeResponse,
292
+ "Holder secret challenge response does not match the verifier challenge"
293
+ );
294
+ }
295
+
296
+ export pure circuit assertBlindedSecretHolderBindingWitness(
297
+ binding: BlindedSecretHolderBinding,
298
+ verifierChallengeHash: Bytes<32>,
299
+ holderSecret: Bytes<32>,
300
+ opening: Bytes<32>,
301
+ blindingFactor: Bytes<32>
302
+ ): [] {
303
+ const holderCommitment: Bytes<32> = secretHolderBindingCommitment(
304
+ holderSecret,
305
+ opening
306
+ );
307
+ assert(
308
+ blindedSecretHolderCommitment(
309
+ holderCommitment,
310
+ binding.issuerNonce,
311
+ blindingFactor
312
+ ) == binding.blindedHolderSecretCommitment,
313
+ "Blinded holder commitment does not match the hidden holder secret witness"
314
+ );
315
+ assert(
316
+ secretHolderBindingChallengeResponse(holderSecret, verifierChallengeHash)
317
+ == binding.requestChallengeResponse,
318
+ "Blinded holder challenge response does not match the verifier challenge"
319
+ );
320
+ }
@@ -0,0 +1,91 @@
1
+ // Generic issuance message choreography.
2
+ // Owns offer/request/result envelope alignment only; issuer- and holder-side
3
+ // claim semantics stay in the family layer.
4
+ module Issue<TOfferBody, TRequestBody, TResultBody> {
5
+ export struct OfferMessage {
6
+ envelope: ProtocolMessageEnvelope,
7
+ schema: SchemaRef,
8
+ issuerVerificationMethodRef: VerificationMethodRef,
9
+ holderBindingProfile: HolderBindingProfile,
10
+ features: CredentialProtocolFeatures,
11
+ body: TOfferBody,
12
+ }
13
+
14
+ export struct RequestMessage {
15
+ envelope: ProtocolMessageEnvelope,
16
+ schema: SchemaRef,
17
+ issuerVerificationMethodRef: VerificationMethodRef,
18
+ holderBindingProfile: HolderBindingProfile,
19
+ body: TRequestBody,
20
+ }
21
+
22
+ export struct ResultMessage {
23
+ envelope: ProtocolMessageEnvelope,
24
+ schema: SchemaRef,
25
+ issuerVerificationMethodRef: VerificationMethodRef,
26
+ holderBindingProfile: HolderBindingProfile,
27
+ body: TResultBody,
28
+ }
29
+
30
+ export pure circuit assertValidOfferMessage(
31
+ offer: OfferMessage
32
+ ): [] {
33
+ assertValidProtocolMessageEnvelope(offer.envelope);
34
+ assert(offer.envelope.initialMessage, "Issuance offer must be the initial message");
35
+ assertValidVerificationMethodRef(offer.issuerVerificationMethodRef);
36
+ }
37
+
38
+ export pure circuit assertValidRequestMessage(
39
+ request: RequestMessage
40
+ ): [] {
41
+ assertValidProtocolMessageEnvelope(request.envelope);
42
+ assert(!request.envelope.initialMessage, "Issuance request must be a response message");
43
+ assertValidVerificationMethodRef(request.issuerVerificationMethodRef);
44
+ }
45
+
46
+ export pure circuit assertOfferRequestAlignment(
47
+ offer: OfferMessage,
48
+ request: RequestMessage
49
+ ): [] {
50
+ assertValidOfferMessage(offer);
51
+ assertValidRequestMessage(request);
52
+ assertProtocolResponseEnvelope(offer.envelope, request.envelope);
53
+ assertMatchingSchemaRefs(offer.schema, request.schema);
54
+ assert(
55
+ offer.issuerVerificationMethodRef.didContractAddress == request.issuerVerificationMethodRef.didContractAddress
56
+ && offer.issuerVerificationMethodRef.methodId == request.issuerVerificationMethodRef.methodId,
57
+ "Issuance request issuer verification method does not match the offer"
58
+ );
59
+ assert(
60
+ offer.holderBindingProfile == request.holderBindingProfile,
61
+ "Issuance request holder binding profile does not match the offer"
62
+ );
63
+ }
64
+
65
+ export pure circuit assertValidResultMessage(
66
+ result: ResultMessage
67
+ ): [] {
68
+ assertValidProtocolMessageEnvelope(result.envelope);
69
+ assert(!result.envelope.initialMessage, "Issuance result must be a response message");
70
+ assertValidVerificationMethodRef(result.issuerVerificationMethodRef);
71
+ }
72
+
73
+ export pure circuit assertRequestResultAlignment(
74
+ request: RequestMessage,
75
+ result: ResultMessage
76
+ ): [] {
77
+ assertValidRequestMessage(request);
78
+ assertValidResultMessage(result);
79
+ assertProtocolResponseEnvelope(request.envelope, result.envelope);
80
+ assertMatchingSchemaRefs(request.schema, result.schema);
81
+ assert(
82
+ request.issuerVerificationMethodRef.didContractAddress == result.issuerVerificationMethodRef.didContractAddress
83
+ && request.issuerVerificationMethodRef.methodId == result.issuerVerificationMethodRef.methodId,
84
+ "Issuance result issuer verification method does not match the request"
85
+ );
86
+ assert(
87
+ request.holderBindingProfile == result.holderBindingProfile,
88
+ "Issuance result holder binding profile does not match the request"
89
+ );
90
+ }
91
+ }
@@ -0,0 +1,84 @@
1
+ // Generic presentation message choreography.
2
+ // Owns request/submission/result envelope alignment; the family layer decides
3
+ // what a verifier asked for and what a holder actually proved or disclosed.
4
+ module Present<TRequestBody, TSubmissionBody, TResultBody> {
5
+ export struct RequestMessage {
6
+ envelope: ProtocolMessageEnvelope,
7
+ schema: SchemaRef,
8
+ issuerVerificationMethodRef: VerificationMethodRef,
9
+ holderBindingProfile: HolderBindingProfile,
10
+ features: CredentialProtocolFeatures,
11
+ verifierChallengeHash: Bytes<32>,
12
+ body: TRequestBody,
13
+ }
14
+
15
+ export struct SubmissionMessage {
16
+ envelope: ProtocolMessageEnvelope,
17
+ schema: SchemaRef,
18
+ issuerVerificationMethodRef: VerificationMethodRef,
19
+ holderBindingProfile: HolderBindingProfile,
20
+ challengeHash: Bytes<32>,
21
+ body: TSubmissionBody,
22
+ }
23
+
24
+ export struct ResultMessage {
25
+ envelope: ProtocolMessageEnvelope,
26
+ approved: Boolean,
27
+ body: TResultBody,
28
+ }
29
+
30
+ export pure circuit assertValidRequestMessage(
31
+ request: RequestMessage
32
+ ): [] {
33
+ assertValidProtocolMessageEnvelope(request.envelope);
34
+ assert(request.envelope.initialMessage, "Presentation request must be the initial message");
35
+ assertValidVerificationMethodRef(request.issuerVerificationMethodRef);
36
+ }
37
+
38
+ export pure circuit assertValidSubmissionMessage(
39
+ submission: SubmissionMessage
40
+ ): [] {
41
+ assertValidProtocolMessageEnvelope(submission.envelope);
42
+ assert(!submission.envelope.initialMessage, "Presentation submission must be a response message");
43
+ assertValidVerificationMethodRef(submission.issuerVerificationMethodRef);
44
+ }
45
+
46
+ export pure circuit assertRequestSubmissionAlignment(
47
+ request: RequestMessage,
48
+ submission: SubmissionMessage
49
+ ): [] {
50
+ assertValidRequestMessage(request);
51
+ assertValidSubmissionMessage(submission);
52
+ assertProtocolResponseEnvelope(request.envelope, submission.envelope);
53
+ assertMatchingSchemaRefs(request.schema, submission.schema);
54
+ assert(
55
+ request.issuerVerificationMethodRef.didContractAddress == submission.issuerVerificationMethodRef.didContractAddress
56
+ && request.issuerVerificationMethodRef.methodId == submission.issuerVerificationMethodRef.methodId,
57
+ "Presentation submission issuer verification method does not match the request"
58
+ );
59
+ assert(
60
+ request.holderBindingProfile == submission.holderBindingProfile,
61
+ "Presentation submission holder binding profile does not match the request"
62
+ );
63
+ assert(
64
+ request.verifierChallengeHash == submission.challengeHash,
65
+ "Presentation submission challenge does not match the request challenge"
66
+ );
67
+ }
68
+
69
+ export pure circuit assertValidResultMessage(
70
+ result: ResultMessage
71
+ ): [] {
72
+ assertValidProtocolMessageEnvelope(result.envelope);
73
+ assert(!result.envelope.initialMessage, "Presentation result must be a response message");
74
+ }
75
+
76
+ export pure circuit assertSubmissionResultAlignment(
77
+ submission: SubmissionMessage,
78
+ result: ResultMessage
79
+ ): [] {
80
+ assertValidSubmissionMessage(submission);
81
+ assertValidResultMessage(result);
82
+ assertProtocolResponseEnvelope(submission.envelope, result.envelope);
83
+ }
84
+ }