diff --git a/apps/ssi-abstraction/src/agent/revocation/revocation.service.ts b/apps/ssi-abstraction/src/agent/revocation/revocation.service.ts index fc33f32248359a7fb8b8642e4cfd12171b007914..c8b4bc0fc630dd70667fa269411a7e172c5087db 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 7365ff69d8dd4a88e052511419c02588feb2b304..d34767ebe345aefac892d3f9d77a1ec974e60261 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;