From 15612360e04b01b8faa89945c7ecf7ffdd325645 Mon Sep 17 00:00:00 2001 From: Berend Sliedrecht Date: Thu, 1 Feb 2024 15:16:04 +0100 Subject: [PATCH 1/2] fix(anoncreds): pass along options for registry and status list Signed-off-by: Berend Sliedrecht --- packages/anoncreds/src/AnonCredsApi.ts | 51 +++++++++++++++++--------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/packages/anoncreds/src/AnonCredsApi.ts b/packages/anoncreds/src/AnonCredsApi.ts index 6f729de76f..a71c64f441 100644 --- a/packages/anoncreds/src/AnonCredsApi.ts +++ b/packages/anoncreds/src/AnonCredsApi.ts @@ -357,10 +357,9 @@ export class AnonCredsApi { } } - public async registerRevocationRegistryDefinition(options: { - revocationRegistryDefinition: AnonCredsRegisterRevocationRegistryDefinitionOptions - options: Extensible - }): Promise { + public async registerRevocationRegistryDefinition( + options: AnonCredsRegisterRevocationRegistryDefinition + ): Promise { const { issuerId, tag, credentialDefinitionId, maximumCredentialNumber } = options.revocationRegistryDefinition const tailsFileService = this.agentContext.dependencyManager.resolve(AnonCredsModuleConfig).tailsFileService @@ -409,8 +408,9 @@ export class AnonCredsApi { const result = await registry.registerRevocationRegistryDefinition(this.agentContext, { revocationRegistryDefinition, - options: {}, + options: options.options, }) + await this.storeRevocationRegistryDefinitionRecord(result, revocationRegistryDefinitionPrivate) return { @@ -465,10 +465,9 @@ export class AnonCredsApi { } } - public async registerRevocationStatusList(options: { - revocationStatusList: AnonCredsRegisterRevocationStatusListOptions - options: Extensible - }): Promise { + public async registerRevocationStatusList( + options: AnonCredsRegisterRevocationStatusList + ): Promise { const { issuerId, revocationRegistryDefinitionId } = options.revocationStatusList const failedReturnBase = { @@ -510,7 +509,7 @@ export class AnonCredsApi { const result = await registry.registerRevocationStatusList(this.agentContext, { revocationStatusList, - options: {}, + options: options.options, }) return result @@ -526,23 +525,24 @@ export class AnonCredsApi { } } - public async updateRevocationStatusList( - options: AnonCredsUpdateRevocationStatusListOptions + public async updateRevocationStatusList( + options: AnonCredsUpdateRevocationStatusList ): Promise { - const { issuedCredentialIndexes, revokedCredentialIndexes, revocationRegistryDefinitionId } = options + const { issuedCredentialIndexes, revokedCredentialIndexes, revocationRegistryDefinitionId } = + options.revocationStatusList const failedReturnBase = { revocationStatusListState: { state: 'failed' as const, - reason: `Error updating revocation status list for revocation registry definition id ${options.revocationRegistryDefinitionId}`, + reason: `Error updating revocation status list for revocation registry definition id ${options.revocationStatusList.revocationRegistryDefinitionId}`, }, registrationMetadata: {}, revocationStatusListMetadata: {}, } - const registry = this.findRegistryForIdentifier(options.revocationRegistryDefinitionId) + const registry = this.findRegistryForIdentifier(options.revocationStatusList.revocationRegistryDefinitionId) if (!registry) { - failedReturnBase.revocationStatusListState.reason = `Unable to update revocation status list. No registry found for id ${options.revocationRegistryDefinitionId}` + failedReturnBase.revocationStatusListState.reason = `Unable to update revocation status list. No registry found for id ${options.revocationStatusList.revocationRegistryDefinitionId}` return failedReturnBase } @@ -562,7 +562,7 @@ export class AnonCredsApi { ) if (!previousRevocationStatusList) { - failedReturnBase.revocationStatusListState.reason = `Unable to update revocation status list. No previous revocation status list found for ${options.revocationRegistryDefinitionId}` + failedReturnBase.revocationStatusListState.reason = `Unable to update revocation status list. No previous revocation status list found for ${options.revocationStatusList.revocationRegistryDefinitionId}` return failedReturnBase } @@ -582,7 +582,7 @@ export class AnonCredsApi { const result = await registry.registerRevocationStatusList(this.agentContext, { revocationStatusList, - options: {}, + options: options.options, }) return result @@ -771,6 +771,21 @@ interface AnonCredsRegisterSchema { options: T } +interface AnonCredsRegisterRevocationRegistryDefinition { + revocationRegistryDefinition: AnonCredsRegisterRevocationRegistryDefinitionOptions + options: T +} + +interface AnonCredsRegisterRevocationStatusList { + revocationStatusList: AnonCredsRegisterRevocationStatusListOptions + options: T +} + +interface AnonCredsUpdateRevocationStatusList { + revocationStatusList: AnonCredsUpdateRevocationStatusListOptions + options: T +} + function isFullCredentialDefinitionInput( credentialDefinition: AnonCredsRegisterCredentialDefinitionOptions ): credentialDefinition is AnonCredsCredentialDefinition { From 0933cd1ef5fb9213197196010ecacac211b49c42 Mon Sep 17 00:00:00 2001 From: Berend Sliedrecht Date: Thu, 1 Feb 2024 15:16:04 +0100 Subject: [PATCH 2/2] fix(anoncreds): pass along options for registry and status list Signed-off-by: Berend Sliedrecht --- .../tests/v2-credential-revocation.e2e.test.ts | 7 +++++-- packages/anoncreds/tests/v2-proofs.e2e.test.ts | 14 ++++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/packages/anoncreds/tests/v2-credential-revocation.e2e.test.ts b/packages/anoncreds/tests/v2-credential-revocation.e2e.test.ts index 3043b23a0d..7f2c00654c 100644 --- a/packages/anoncreds/tests/v2-credential-revocation.e2e.test.ts +++ b/packages/anoncreds/tests/v2-credential-revocation.e2e.test.ts @@ -219,8 +219,11 @@ describe('IC v2 credential revocation', () => { expect(credentialRevocationRegistryDefinitionId).toEqual(revocationRegistryDefinitionId) await faberAgent.modules.anoncreds.updateRevocationStatusList({ - revocationRegistryDefinitionId: credentialRevocationRegistryDefinitionId, - revokedCredentialIndexes: [Number(credentialRevocationIndex)], + revocationStatusList: { + revocationRegistryDefinitionId: credentialRevocationRegistryDefinitionId, + revokedCredentialIndexes: [Number(credentialRevocationIndex)], + }, + options: {}, }) await faberAgent.credentials.sendRevocationNotification({ diff --git a/packages/anoncreds/tests/v2-proofs.e2e.test.ts b/packages/anoncreds/tests/v2-proofs.e2e.test.ts index a5c161bb23..a4c07e40bf 100644 --- a/packages/anoncreds/tests/v2-proofs.e2e.test.ts +++ b/packages/anoncreds/tests/v2-proofs.e2e.test.ts @@ -857,8 +857,11 @@ describe('PP V2 AnonCreds Proofs', () => { // InMemoryAnonCredsRegistry would respect what we ask while actual VDRs will use their own await sleep(2000) await faberAgent.modules.anoncreds.updateRevocationStatusList({ - revocationRegistryDefinitionId: credentialRevocationRegistryDefinitionId, - revokedCredentialIndexes: [Number(credentialRevocationIndex)], + revocationStatusList: { + revocationRegistryDefinitionId: credentialRevocationRegistryDefinitionId, + revokedCredentialIndexes: [Number(credentialRevocationIndex)], + }, + options: {}, }) await aliceAgent.proofs.acceptRequest({ @@ -906,8 +909,11 @@ describe('PP V2 AnonCreds Proofs', () => { expect(credentialRevocationIndex).toBeDefined() const { revocationStatusListState } = await faberAgent.modules.anoncreds.updateRevocationStatusList({ - revocationRegistryDefinitionId: credentialRevocationRegistryDefinitionId, - revokedCredentialIndexes: [Number(credentialRevocationIndex)], + revocationStatusList: { + revocationRegistryDefinitionId: credentialRevocationRegistryDefinitionId, + revokedCredentialIndexes: [Number(credentialRevocationIndex)], + }, + options: {}, }) expect(revocationStatusListState.revocationStatusList).toBeDefined()