Skip to content

Commit 771f913

Browse files
author
Rafael Bays Weiler
committed
hyperledger#108 Revocation Registry: typescript, tests, demo
1 parent 95acb37 commit 771f913

File tree

4 files changed

+32
-26
lines changed

4 files changed

+32
-26
lines changed

smart_contracts/contracts-ts/RevocationRegistry.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,14 @@ export class RevocationRegistry extends Contract {
6363
identity: string,
6464
revRegId: string,
6565
issuerId: string,
66+
prevAccumulator: string,
6667
revRegEntry: RevocationRegistryEntryStruct,
6768
) {
6869
const tx = await this.instance.createRevocationRegistryEntry(
6970
identity,
7071
keccak256(toUtf8Bytes(revRegId)),
7172
issuerId,
73+
prevAccumulator,
7274
revRegEntry,
7375
)
7476
return tx.wait()
@@ -78,6 +80,7 @@ export class RevocationRegistry extends Contract {
7880
identity: string,
7981
revRegDefId: string,
8082
issuerId: string,
83+
prevAccumulator: string,
8184
revRegEntry: RevocationRegistryEntryStruct,
8285
signature: Signature,
8386
) {
@@ -88,6 +91,7 @@ export class RevocationRegistry extends Contract {
8891
signature.s,
8992
keccak256(toUtf8Bytes(revRegDefId)),
9093
issuerId,
94+
prevAccumulator,
9195
revRegEntry,
9296
)
9397
return tx.wait()
@@ -139,9 +143,10 @@ export class RevocationRegistry extends Contract {
139143
privateKey: Uint8Array,
140144
revRegDefId: string,
141145
issuerId: string,
146+
prevAccumulator: string,
142147
revRegEntry: RevocationRegistryEntryStruct,
143148
) {
144-
const revRegEntrySolidityStruct = ['tuple(bytes,bytes,uint32[],uint32[],uint64)']
149+
const revRegEntrySolidityStruct = ['tuple(bytes,uint32[],uint32[])']
145150

146151
return this.signEndorsementData(
147152
privateKey,
@@ -150,6 +155,7 @@ export class RevocationRegistry extends Contract {
150155
toUtf8Bytes('createRevocationRegistryEntry'),
151156
getBytes(keccak256(toUtf8Bytes(revRegDefId)), 'hex'),
152157
toUtf8Bytes(issuerId),
158+
getBytes(prevAccumulator),
153159
getBytes(new AbiCoder().encode(revRegEntrySolidityStruct, [Object.values(revRegEntry)])),
154160
]),
155161
)

smart_contracts/demos/flow-with-did-ethr.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ async function demo() {
104104
faber.address,
105105
revocationRegistryId,
106106
faber.didEthr,
107+
"0x",
107108
revocationRegistryEntryStruct
108109
)
109110

smart_contracts/test/anoncreds/RevocationRegistry.spec.ts

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -250,15 +250,13 @@ describe('RevocationRegistry', function () {
250250

251251
const revocationRegistryEntryParams: CreateRevocationEntryParams = {
252252
currentAccumulator: '0x20',
253-
prevAccumulator: '0x',
254253
issued: [2, 3],
255254
revoked: [0, 1],
256-
timestamp: 1731067598,
257255
}
258256

259257
const revocationRegistryEntry = createRevocationRegistryEntryObject(revocationRegistryEntryParams)
260258

261-
await revocationRegistry.createRevocationRegistryEntry(issuerAddress, id, issuerId, revocationRegistryEntry)
259+
await revocationRegistry.createRevocationRegistryEntry(issuerAddress, id, issuerId, '0x', revocationRegistryEntry)
262260

263261
const result = await revocationRegistry.resolveRevocationRegistryDefinition(id)
264262

@@ -279,31 +277,33 @@ describe('RevocationRegistry', function () {
279277

280278
let revocationRegistryEntryParams: CreateRevocationEntryParams = {
281279
currentAccumulator: '0x20',
282-
prevAccumulator: '0x',
283280
issued: [2, 3],
284281
revoked: [0, 1],
285-
timestamp: 1731067598,
286282
}
287283

288284
let revocationRegistryEntry = createRevocationRegistryEntryObject(revocationRegistryEntryParams)
289285

290-
await revocationRegistry.createRevocationRegistryEntry(issuerAddress, id, issuerId, revocationRegistryEntry)
286+
await revocationRegistry.createRevocationRegistryEntry(issuerAddress, id, issuerId, '0x', revocationRegistryEntry)
291287

292288
revocationRegistryEntryParams = {
293289
currentAccumulator: '0x30',
294-
prevAccumulator: '0x30',
295290
issued: [2, 3],
296291
revoked: [0, 1],
297-
timestamp: 1731067598,
298292
}
299293

300294
revocationRegistryEntry = createRevocationRegistryEntryObject(revocationRegistryEntryParams)
301295

302296
await expect(
303-
revocationRegistry.createRevocationRegistryEntry(issuerAddress, id, ethrIssuerId, revocationRegistryEntry),
297+
revocationRegistry.createRevocationRegistryEntry(
298+
issuerAddress,
299+
id,
300+
ethrIssuerId,
301+
'0x30',
302+
revocationRegistryEntry,
303+
),
304304
)
305305
.to.be.revertedWithCustomError(revocationRegistry.baseInstance, ClErrors.AccumulatorMismatch)
306-
.withArgs(revocationRegistryEntryParams.prevAccumulator)
306+
.withArgs('0x30')
307307
})
308308

309309
it('Should fail if attempting to create Revocation Registry Entry for nonexistent Revocation Registry Definition', async function () {
@@ -313,7 +313,13 @@ describe('RevocationRegistry', function () {
313313
const revocationRegistryEntry = createRevocationRegistryEntryObject({})
314314

315315
await expect(
316-
revocationRegistry.createRevocationRegistryEntry(issuerAddress, id, ethrIssuerId, revocationRegistryEntry),
316+
revocationRegistry.createRevocationRegistryEntry(
317+
issuerAddress,
318+
id,
319+
ethrIssuerId,
320+
'0x20',
321+
revocationRegistryEntry,
322+
),
317323
)
318324
.to.be.revertedWithCustomError(revocationRegistry.baseInstance, ClErrors.RevocationRegistryDefinitionNotFound)
319325
.withArgs(keccak256(toUtf8Bytes(id)))
@@ -330,10 +336,8 @@ describe('RevocationRegistry', function () {
330336

331337
const revocationRegistryEntryParams: CreateRevocationEntryParams = {
332338
currentAccumulator: '0x20',
333-
prevAccumulator: '0x',
334339
issued: [2, 3],
335340
revoked: [0, 1],
336-
timestamp: 1731067598,
337341
}
338342

339343
revocationRegistry.connect(testAccounts.trustee2.account)
@@ -347,6 +351,7 @@ describe('RevocationRegistry', function () {
347351
notRevRegDefIssuerAddress,
348352
id,
349353
notRevRegDefIssuerId,
354+
'0x',
350355
revocationRegistryEntry,
351356
),
352357
)
@@ -366,10 +371,8 @@ describe('RevocationRegistry', function () {
366371

367372
const revocationRegistryEntryParams: CreateRevocationEntryParams = {
368373
currentAccumulator: '0x20',
369-
prevAccumulator: '0x',
370374
issued: [2, 3],
371375
revoked: [0, 1],
372-
timestamp: 1731067598,
373376
}
374377

375378
const revocationRegistryEntry = createRevocationRegistryEntryObject(revocationRegistryEntryParams)
@@ -379,13 +382,15 @@ describe('RevocationRegistry', function () {
379382
testActorPrivateKey,
380383
id,
381384
issuerIdSigned,
385+
'0x',
382386
revocationRegistryEntry,
383387
)
384388

385389
await revocationRegistry.createRevocationRegistryEntrySigned(
386390
testActorAddress,
387391
id,
388392
issuerIdSigned,
393+
'0x',
389394
revocationRegistryEntry,
390395
revRegEntrySignature,
391396
)
@@ -404,10 +409,8 @@ describe('RevocationRegistry', function () {
404409

405410
const revocationRegistryEntryParams: CreateRevocationEntryParams = {
406411
currentAccumulator: '0x20',
407-
prevAccumulator: '0x',
408412
issued: [2, 3],
409413
revoked: [0, 1],
410-
timestamp: 1731067598,
411414
}
412415

413416
const revocationRegistryEntry = createRevocationRegistryEntryObject(revocationRegistryEntryParams)
@@ -417,6 +420,7 @@ describe('RevocationRegistry', function () {
417420
testActorPrivateKey,
418421
id,
419422
issuerIdSigned,
423+
'0x',
420424
revocationRegistryEntry,
421425
)
422426

@@ -425,6 +429,7 @@ describe('RevocationRegistry', function () {
425429
testAccounts.trustee2.account.address,
426430
id,
427431
issuerIdSigned,
432+
'0x',
428433
revocationRegistryEntry,
429434
revRegEntrySignature,
430435
),
@@ -441,10 +446,8 @@ describe('RevocationRegistry', function () {
441446

442447
const revocationRegistryEntryParams: CreateRevocationEntryParams = {
443448
currentAccumulator: '0x20',
444-
prevAccumulator: '0x',
445449
issued: [2, 3],
446450
revoked: [0, 1],
447-
timestamp: 1731067598,
448451
}
449452

450453
const revocationRegistryEntry = createRevocationRegistryEntryObject(revocationRegistryEntryParams)
@@ -454,6 +457,7 @@ describe('RevocationRegistry', function () {
454457
testActorPrivateKey,
455458
'invalid signature id',
456459
issuerIdSigned,
460+
'0x',
457461
revocationRegistryEntry,
458462
)
459463

@@ -462,6 +466,7 @@ describe('RevocationRegistry', function () {
462466
testAccounts.trustee2.account.address,
463467
id,
464468
issuerIdSigned,
469+
'0x',
465470
revocationRegistryEntry,
466471
revRegEntrySignature,
467472
),

smart_contracts/utils/entity-factories.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -135,25 +135,19 @@ export function createRevocationRegistryDefinitionObject({
135135
}
136136

137137
export interface CreateRevocationEntryParams {
138-
prevAccumulator?: string
139138
currentAccumulator?: string
140139
issued?: number[]
141140
revoked?: number[]
142-
timestamp?: number
143141
}
144142

145143
export function createRevocationRegistryEntryObject({
146-
prevAccumulator = '0x',
147144
currentAccumulator = '0x10',
148145
issued = [0, 1],
149146
revoked = [],
150-
timestamp = 1730997002,
151147
}: CreateRevocationEntryParams): RevocationRegistryEntryStruct {
152148
return {
153149
currentAccumulator,
154-
prevAccumulator,
155150
issued,
156151
revoked,
157-
timestamp,
158152
}
159153
}

0 commit comments

Comments
 (0)