From bd646889882d87f79bb9bc911e97cfdb0f91ded6 Mon Sep 17 00:00:00 2001 From: Berend Sliedrecht <berend@animo.id> Date: Thu, 14 Mar 2024 10:36:57 +0100 Subject: [PATCH] fix(ssi-abstraction): add endorsement for the revocation status list Signed-off-by: Berend Sliedrecht <berend@animo.id> --- .../agent/revocation/revocation.service.ts | 45 ++++++++++++++----- .../test/revocation.e2e-spec.ts | 4 +- 2 files changed, 36 insertions(+), 13 deletions(-) diff --git a/apps/ssi-abstraction/src/agent/revocation/revocation.service.ts b/apps/ssi-abstraction/src/agent/revocation/revocation.service.ts index fc33f32..c8b4bc0 100644 --- a/apps/ssi-abstraction/src/agent/revocation/revocation.service.ts +++ b/apps/ssi-abstraction/src/agent/revocation/revocation.service.ts @@ -143,23 +143,46 @@ export class RevocationService { }: EventAnonCredsRevocationRegisterRevocationStatusListInput): Promise< EventAnonCredsRevocationRegisterRevocationStatusList['data'] > { + const endorserDid = await this.agentService.getEndorserDid(issuerDid); return this.withTenantService.invoke(tenantId, async (t) => { - const result = await t.modules.anoncreds.registerRevocationStatusList({ - options: {}, - revocationStatusList: { - revocationRegistryDefinitionId, - issuerId: issuerDid, - }, - }); + const { revocationStatusListState } = + await t.modules.anoncreds.registerRevocationStatusList({ + options: { + endorserMode: 'external', + endorserDid, + }, + revocationStatusList: { + revocationRegistryDefinitionId, + issuerId: issuerDid, + }, + }); - if (result.revocationStatusListState.state !== 'finished') { + if ( + revocationStatusListState.state !== 'action' || + revocationStatusListState.action !== 'endorseIndyTransaction' + ) { throw new Error( - `Error registering the revocation status list. Error: ${JSON.stringify( - result, - )}`, + `Error registering revocation registry definition: ${ + revocationStatusListState.state === 'failed' + ? revocationStatusListState.reason + : 'Not Finished' + }`, ); } + const signedRevocationRegistryDefinitionRequest = + await this.agentService.endorseTransaction( + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-expect-error + revocationStatusListState.revocationStatusListRequest, + endorserDid, + ); + + await t.modules.indyVdr.submitTransaction( + signedRevocationRegistryDefinitionRequest, + issuerDid, + ); + return {}; }); } diff --git a/apps/ssi-abstraction/test/revocation.e2e-spec.ts b/apps/ssi-abstraction/test/revocation.e2e-spec.ts index 7365ff6..d34767e 100644 --- a/apps/ssi-abstraction/test/revocation.e2e-spec.ts +++ b/apps/ssi-abstraction/test/revocation.e2e-spec.ts @@ -29,7 +29,6 @@ import { import { randomBytes } from 'crypto'; import { firstValueFrom } from 'rxjs'; -import { natsConfig } from '../dist/config/nats.config.js'; import { AgentModule } from '../src/agent/agent.module.js'; import { AnonCredsCredentialsModule } from '../src/agent/anoncredsCredentials/anoncredsCredentials.module.js'; import { ConnectionsModule } from '../src/agent/connections/connections.module.js'; @@ -43,8 +42,9 @@ import { SchemasService } from '../src/agent/schemas/schemas.service.js'; import { TenantsModule } from '../src/agent/tenants/tenants.module.js'; import { TenantsService } from '../src/agent/tenants/tenants.service.js'; import { mockConfigModule } from '../src/config/__tests__/mockConfig.js'; +import { natsConfig } from '../src/config/nats.config.js'; -describe.skip('Revocation', () => { +describe('Revocation', () => { const TOKEN = 'REVOCATION_CLIENT_SERVICE'; let app: INestApplication; let client: ClientProxy; -- GitLab