Skip to content

Commit 513124f

Browse files
author
William Brooks
committed
Extract CVCMerkleProof from the VC creation
This update separates the CvcMerkleProof from VC creation allowing for alternative proof mechanisms to be used. PR: #226 Signed-off-by: William Brooks <[email protected]> Reviewed-by: Julian Spring <[email protected]> Reviewed-by: Tighe Barris <[email protected]>
1 parent 95dda44 commit 513124f

26 files changed

+11193
-9819
lines changed

__integrations__/credentials/VerifiableCredential.test.js

+52-11
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,21 @@
11
const uuidv4 = require('uuid/v4');
22
const { Claim } = require('claim/Claim');
3-
const VC = require('creds/VerifiableCredential');
43
const { schemaLoader, CVCSchemaLoader } = require('index');
4+
const didTestUtil = require("../../__test__/lib/util/did");
5+
6+
const solResolver = require('lib/did');
7+
const {VerifiableCredential} = require('vc/VerifiableCredential')
8+
const CvcMerkleProof = require('proof/CvcMerkleProof').default;
9+
const {Ed25519SignerVerifier} = require("proof/CvcMerkleProof/Ed25519SignerVerifier");
510

611
const credentialSubject = 'did:sol:J2vss1hB3kgEfQMSSdvvjwRm3JdyFWp7S7dbX5mudS4V';
712

13+
14+
const cvcMerkleProof = new CvcMerkleProof(new Ed25519SignerVerifier(
15+
solResolver,
16+
`${didTestUtil.DID_CONTROLLER}#default`,
17+
didTestUtil.keyPair(didTestUtil.DID_CONTROLLER)));
18+
819
jest.setTimeout(200000);
920

1021
describe('Integration Tests for Verifiable Credentials', () => {
@@ -21,8 +32,18 @@ describe('Integration Tests for Verifiable Credentials', () => {
2132
{ givenNames: 'Joao', otherNames: 'Barbosa', familyNames: 'Santos' });
2233

2334
const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { day: 20, month: 3, year: 1978 });
24-
const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]);
25-
return cred.requestAnchor().then((updated) => {
35+
36+
const unsignedCred = await VerifiableCredential.create({
37+
issuer: didTestUtil.DID_CONTROLLER,
38+
identifier: 'credential-cvc:Identity-v3',
39+
subject: credentialSubject,
40+
claims: [name, dob],
41+
expiry: null,
42+
});
43+
44+
const cred = await cvcMerkleProof.sign(unsignedCred);
45+
46+
return CvcMerkleProof.requestAnchor(cred).then((updated) => {
2647
expect(updated.proof.anchor.type).toBe('temporary');
2748
expect(updated.proof.anchor.value).not.toBeDefined();
2849
expect(updated.proof.anchor).toBeDefined();
@@ -36,10 +57,20 @@ describe('Integration Tests for Verifiable Credentials', () => {
3657
{ givenNames: 'Joao', otherNames: 'Barbosa', familyNames: 'Santos' });
3758

3859
const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { day: 20, month: 3, year: 1978 });
39-
const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]);
40-
return cred.requestAnchor().then((updated) => {
60+
61+
const unsignedCred = await VerifiableCredential.create({
62+
issuer: didTestUtil.DID_CONTROLLER,
63+
identifier: 'credential-cvc:Identity-v3',
64+
subject: credentialSubject,
65+
claims: [name, dob],
66+
expiry: null,
67+
});
68+
69+
const cred = await cvcMerkleProof.sign(unsignedCred);
70+
71+
return CvcMerkleProof.requestAnchor(cred).then((updated) => {
4172
expect(updated.proof.anchor).toBeDefined();
42-
return updated.updateAnchor().then((newUpdated) => {
73+
return CvcMerkleProof.updateAnchor(updated).then((newUpdated) => {
4374
expect(newUpdated.proof.anchor.type).toBe('permanent');
4475
expect(newUpdated.proof.anchor).toBeDefined();
4576
expect(newUpdated.proof.anchor.value).toBeDefined();
@@ -52,12 +83,22 @@ describe('Integration Tests for Verifiable Credentials', () => {
5283
{ givenNames: 'Joao', otherNames: 'Barbosa', familyNames: 'Santos' });
5384

5485
const dob = await Claim.create('claim-cvc:Identity.dateOfBirth-v1', { day: 20, month: 3, year: 1978 });
55-
const cred = await VC.create('credential-cvc:Identity-v3', uuidv4(), null, credentialSubject, [name, dob]);
56-
await cred.requestAnchor();
57-
await cred.updateAnchor();
58-
const validation = await cred.verifyAttestation();
86+
87+
const unsignedCred = await VerifiableCredential.create({
88+
issuer: didTestUtil.DID_CONTROLLER,
89+
identifier: 'credential-cvc:Identity-v3',
90+
subject: credentialSubject,
91+
claims: [name, dob],
92+
expiry: null,
93+
});
94+
95+
const cred = await cvcMerkleProof.sign(unsignedCred);
96+
97+
await CvcMerkleProof.requestAnchor(cred);
98+
await CvcMerkleProof.updateAnchor(cred);
99+
const validation = await CvcMerkleProof.verifyAttestation(cred);
59100
if (validation) {
60-
const isRevoked = await cred.revokeAttestation();
101+
const isRevoked = await CvcMerkleProof.revokeAttestation(cred);
61102
expect(isRevoked).toBeTruthy();
62103
}
63104
done();

0 commit comments

Comments
 (0)