@midnight-ntwrk/credential-compact 0.1.0-rc3 → 0.2.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 (64) hide show
  1. package/CHANGELOG.md +43 -1
  2. package/README.md +47 -27
  3. package/dist/compact-build.json +6 -13
  4. package/dist/compact-value-codec.d.ts +14 -0
  5. package/dist/compact-value-codec.d.ts.map +1 -0
  6. package/dist/compact-value-codec.js +135 -0
  7. package/dist/compact-value-codec.js.map +1 -0
  8. package/dist/credentials/composable.compact +1 -3
  9. package/dist/credentials/holder-bindings.compact +11 -289
  10. package/dist/credentials/proofs.compact +85 -0
  11. package/dist/credentials/relations.compact +3 -2
  12. package/dist/credentials/signer-authorization.compact +246 -0
  13. package/dist/credentials/status-bindings.compact +0 -19
  14. package/dist/credentials/types.compact +23 -93
  15. package/dist/credentials/vc.compact +24 -3
  16. package/dist/credentials.compact +0 -1
  17. package/dist/index.d.ts +1 -1
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +1 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/managed/credentials/contract/index.d.ts +102 -196
  22. package/dist/managed/credentials/contract/index.js +746 -1342
  23. package/dist/managed/credentials/contract/index.js.map +2 -2
  24. package/package.json +12 -53
  25. package/dist/contract.d.ts +0 -2
  26. package/dist/contract.d.ts.map +0 -1
  27. package/dist/contract.js +0 -2
  28. package/dist/contract.js.map +0 -1
  29. package/dist/credentials/bindings.compact +0 -5
  30. package/dist/credentials/issue.compact +0 -91
  31. package/dist/credentials/present.compact +0 -84
  32. package/dist/credentials/protocol-support.compact +0 -7
  33. package/dist/credentials/protocols.compact +0 -125
  34. package/dist/credentials/vc-support.compact +0 -8
  35. package/dist/holder-binding/same-holder/composable.compact +0 -179
  36. package/dist/holder-binding/same-holder.compact +0 -180
  37. package/dist/holder-binding/same-holder.d.ts +0 -2
  38. package/dist/holder-binding/same-holder.d.ts.map +0 -1
  39. package/dist/holder-binding/same-holder.js +0 -2
  40. package/dist/holder-binding/same-holder.js.map +0 -1
  41. package/dist/jubjub.d.ts +0 -3
  42. package/dist/jubjub.d.ts.map +0 -1
  43. package/dist/jubjub.js +0 -6
  44. package/dist/jubjub.js.map +0 -1
  45. package/dist/managed/same-holder/contract/index.d.ts +0 -400
  46. package/dist/managed/same-holder/contract/index.js +0 -2688
  47. package/dist/managed/same-holder/contract/index.js.map +0 -8
  48. package/src/credentials/bindings.compact +0 -5
  49. package/src/credentials/composable.compact +0 -14
  50. package/src/credentials/holder-bindings.compact +0 -320
  51. package/src/credentials/issue.compact +0 -91
  52. package/src/credentials/present.compact +0 -84
  53. package/src/credentials/proofs.compact +0 -122
  54. package/src/credentials/protocol-support.compact +0 -7
  55. package/src/credentials/protocols.compact +0 -125
  56. package/src/credentials/relations.compact +0 -36
  57. package/src/credentials/status-bindings.compact +0 -60
  58. package/src/credentials/types.compact +0 -141
  59. package/src/credentials/vc-support.compact +0 -8
  60. package/src/credentials/vc.compact +0 -59
  61. package/src/credentials/vp.compact +0 -25
  62. package/src/credentials.compact +0 -20
  63. package/src/holder-binding/same-holder/composable.compact +0 -179
  64. package/src/holder-binding/same-holder.compact +0 -180
@@ -1,8 +0,0 @@
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
- }
@@ -1,5 +0,0 @@
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";
@@ -1,14 +0,0 @@
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";
@@ -1,320 +0,0 @@
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
- }
@@ -1,91 +0,0 @@
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
- }
@@ -1,84 +0,0 @@
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
- }
@@ -1,122 +0,0 @@
1
- // Context-tagged proof primitives.
2
- // This file owns signature verification plus the shared proof payload/challenge
3
- // derivation rules for generic issuance and presentation flows.
4
- export pure circuit verifySignature(
5
- pk: JubjubPoint,
6
- signature: Signature,
7
- challenge: Field
8
- ): Boolean {
9
- const leftSide: JubjubPoint = ecMulGenerator(signature.s);
10
- const cPk: JubjubPoint = ecMul(pk, challenge);
11
- const rightSide: JubjubPoint = ecAdd(signature.r, cPk);
12
- const xMatches: Boolean = jubjubPointX(leftSide) == jubjubPointX(rightSide);
13
- const yMatches: Boolean = jubjubPointY(leftSide) == jubjubPointY(rightSide);
14
- assert(xMatches && yMatches, "Signature verification failed");
15
- return xMatches && yMatches;
16
- }
17
-
18
- // NOTE: The proof object does not carry a purpose field. Instead, the verifier
19
- // chooses the context-specific challenge derivation helper, which gives us
20
- // explicit domain separation without asking callers to populate a mutable enum.
21
- // =====================
22
- // Context tags
23
- // =====================
24
- export pure circuit issuanceContextTag(): Bytes<32> {
25
- return pad(32, "midnight:vc:issuance");
26
- }
27
-
28
- export pure circuit presentationContextTag(): Bytes<32> {
29
- return pad(32, "midnight:vc:presentation");
30
- }
31
-
32
- // =====================
33
- // Internal payload and challenge derivation
34
- // =====================
35
- pure circuit proofPayloadRootForContext(
36
- bodyRoot: Bytes<32>,
37
- contextTag: Bytes<32>,
38
- proof: Proof
39
- ): Bytes<32> {
40
- return persistentHash<Vector<5, Bytes<32>>>([
41
- bodyRoot,
42
- contextTag,
43
- persistentHash<VerificationMethodRef>(proof.signerVerificationMethodRef),
44
- upgradeFromTransient(transientHash<Uint<64>>(proof.createdAt)),
45
- proof.challengeHash
46
- ]);
47
- }
48
-
49
- pure circuit proofChallengeForContext(
50
- bodyRoot: Bytes<32>,
51
- contextTag: Bytes<32>,
52
- proof: Proof
53
- ): Field {
54
- return degradeToTransient(persistentHash<Vector<3, Bytes<32>>>([
55
- proofPayloadRootForContext(bodyRoot, contextTag, proof),
56
- upgradeFromTransient(transientHash<JubjubPoint>(proof.publicKey)),
57
- upgradeFromTransient(transientHash<JubjubPoint>(proof.signature.r))
58
- ]));
59
- }
60
-
61
- pure circuit assertValidProofForContext(
62
- bodyRoot: Bytes<32>,
63
- contextTag: Bytes<32>,
64
- proof: Proof
65
- ): [] {
66
- assert(
67
- verifySignature(
68
- proof.publicKey,
69
- proof.signature,
70
- proofChallengeForContext(bodyRoot, contextTag, proof)
71
- ),
72
- "Proof verification failed"
73
- );
74
- }
75
-
76
- export pure circuit issuanceProofPayloadRoot(
77
- bodyRoot: Bytes<32>,
78
- proof: Proof
79
- ): Bytes<32> {
80
- return proofPayloadRootForContext(bodyRoot, issuanceContextTag(), proof);
81
- }
82
-
83
- export pure circuit presentationProofPayloadRoot(
84
- bodyRoot: Bytes<32>,
85
- proof: Proof
86
- ): Bytes<32> {
87
- return proofPayloadRootForContext(bodyRoot, presentationContextTag(), proof);
88
- }
89
-
90
- export pure circuit issuanceProofChallenge(
91
- bodyRoot: Bytes<32>,
92
- proof: Proof
93
- ): Field {
94
- return proofChallengeForContext(bodyRoot, issuanceContextTag(), proof);
95
- }
96
-
97
- export pure circuit presentationProofChallenge(
98
- bodyRoot: Bytes<32>,
99
- proof: Proof
100
- ): Field {
101
- return proofChallengeForContext(bodyRoot, presentationContextTag(), proof);
102
- }
103
-
104
- // =====================
105
- // Public context-specific proof entrypoints
106
- // =====================
107
- // NOTE: The proof container is generic, but the verification context is
108
- // explicit. Callers choose the context helper rather than mutating the proof
109
- // payload itself.
110
- export pure circuit assertValidIssuanceContextProof(
111
- bodyRoot: Bytes<32>,
112
- proof: Proof
113
- ): [] {
114
- assertValidProofForContext(bodyRoot, issuanceContextTag(), proof);
115
- }
116
-
117
- export pure circuit assertValidPresentationContextProof(
118
- bodyRoot: Bytes<32>,
119
- proof: Proof
120
- ): [] {
121
- assertValidProofForContext(bodyRoot, presentationContextTag(), proof);
122
- }
@@ -1,7 +0,0 @@
1
- // Shared protocol surface for credential families that model issuance and
2
- // presentation exchanges over the generic protocol modules.
3
-
4
- include "./types";
5
- include "./protocols";
6
- include "./issue";
7
- include "./present";