This repository was archived by the owner on Jan 17, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy path3_verificationProcessCombined.ts
More file actions
79 lines (73 loc) · 2.33 KB
/
Copy path3_verificationProcessCombined.ts
File metadata and controls
79 lines (73 loc) · 2.33 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
/* eslint-disable no-console */
import Claimer from '../../../src/claim/Claimer'
import Attester from '../../../src/attestation/Attester'
import Credential from '../../../src/claim/Credential'
import Verifier from '../../../src/verification/Verifier'
import CombinedRequestBuilder from '../../../src/verification/CombinedRequestBuilder'
import Accumulator from '../../../src/attestation/Accumulator'
// runs a complete verification process on a credential
export async function verificationProcessCombined({
claimer,
attesters,
credentials,
requestedAttributesArr,
reqUpdatesAfter,
accumulators,
}: {
claimer: Claimer
attesters: Attester[]
credentials: Credential[]
requestedAttributesArr: string[][]
reqUpdatesAfter: Array<Date | undefined>
accumulators: Array<Accumulator | undefined>
}): Promise<{
verified: boolean
verifiedClaims: Array<Record<string, unknown>>
}> {
if (
attesters.length !== credentials.length ||
attesters.length !== requestedAttributesArr.length ||
attesters.length !== reqUpdatesAfter.length
) {
throw new Error(
'Input array lengths do not match up in "verificationProcessCombined"'
)
}
console.group()
const attesterPubKeys = attesters.map((attester) => attester.publicKey)
// verifier requests presentation for each credential and combines request by calling `finalise`
// call requestPresentation for every array index
const { message, session } = await requestedAttributesArr
.reduce(
(cBuilder, requestedAttributes, idx) =>
cBuilder.requestPresentation({
requestedAttributes,
reqUpdatedAfter: reqUpdatesAfter[idx],
}),
new CombinedRequestBuilder()
)
.finalise()
// claimer builds combined presentation
const proof = await claimer.buildCombinedPresentation({
credentials,
combinedPresentationReq: message,
attesterPubKeys,
})
// verifier checks each claim and returns true if all claims could be verified
const {
verified,
claims: verifiedClaims,
} = await Verifier.verifyCombinedPresentation({
proof,
attesterPubKeys,
verifierSession: session,
latestAccumulators: accumulators,
})
console.log(`Claim could ${verified ? 'be verified' : 'not be verified'}`)
console.groupEnd()
return {
verified,
verifiedClaims,
}
}
export default verificationProcessCombined