Skip to content

Commit 589fc40

Browse files
authored
fix(cheqd): cheqd revocationRegistryDefinition resource name (#2139)
Signed-off-by: DaevMithran <daevmithran1999@gmail.com>
1 parent a53fc54 commit 589fc40

File tree

5 files changed

+51
-24
lines changed

5 files changed

+51
-24
lines changed

.changeset/wet-pianos-walk.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"@credo-ts/cheqd": patch
3+
---
4+
5+
fix(cheqd): cheqd revocationRegistryDefinition resource name
6+
7+
Creating two revocation registries with same name would lead to updating the resource. Adding credential definition tag in the resource name fixes this issue

packages/cheqd/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
"test": "jest"
2727
},
2828
"dependencies": {
29-
"@cheqd/sdk": "2.5.1",
30-
"@cheqd/ts-proto": "~2.3.2",
29+
"@cheqd/sdk": "~2.6.0",
30+
"@cheqd/ts-proto": "~2.4.0",
3131
"@cosmjs/crypto": "~0.30.0",
3232
"@cosmjs/proto-signing": "~0.30.0",
3333
"@cosmjs/stargate": "~0.30.0",

packages/cheqd/src/anoncreds/services/CheqdAnonCredsRegistry.ts

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,11 @@ import type { AgentContext } from '@credo-ts/core'
1919
import { CredoError, Hasher, JsonTransformer, TypedArrayEncoder, utils } from '@credo-ts/core'
2020

2121
import { CheqdDidResolver, CheqdDidRegistrar } from '../../dids'
22-
import { cheqdSdkAnonCredsRegistryIdentifierRegex, parseCheqdDid } from '../utils/identifiers'
22+
import {
23+
cheqdAnonCredsResourceTypes,
24+
cheqdSdkAnonCredsRegistryIdentifierRegex,
25+
parseCheqdDid,
26+
} from '../utils/identifiers'
2327
import {
2428
CheqdCredentialDefinition,
2529
CheqdRevocationRegistryDefinition,
@@ -87,7 +91,7 @@ export class CheqdAnonCredsRegistry implements AnonCredsRegistry {
8791
const schemaResource = {
8892
id: utils.uuid(),
8993
name: `${schema.name}-Schema`,
90-
resourceType: 'anonCredsSchema',
94+
resourceType: cheqdAnonCredsResourceTypes.schema,
9195
data: {
9296
name: schema.name,
9397
version: schema.version,
@@ -145,7 +149,7 @@ export class CheqdAnonCredsRegistry implements AnonCredsRegistry {
145149
const credDefResource = {
146150
id: utils.uuid(),
147151
name: TypedArrayEncoder.toHex(credDefNameHashBuffer),
148-
resourceType: 'anonCredsCredDef',
152+
resourceType: cheqdAnonCredsResourceTypes.credentialDefinition,
149153
data: {
150154
type: credentialDefinition.type,
151155
tag: credentialDefinition.tag,
@@ -250,9 +254,9 @@ export class CheqdAnonCredsRegistry implements AnonCredsRegistry {
250254

251255
const searchDid = parsedDid.path
252256
? revocationRegistryDefinitionId
253-
: `${revocationRegistryDefinitionId}${
254-
revocationRegistryDefinitionId.includes('?') ? '&' : '?'
255-
}resourceType=anonCredsRevocRegDef`
257+
: `${revocationRegistryDefinitionId}${revocationRegistryDefinitionId.includes('?') ? '&' : '?'}resourceType=${
258+
cheqdAnonCredsResourceTypes.revocationRegistryDefinition
259+
}`
256260

257261
const response = await cheqdDidResolver.resolveResource(agentContext, searchDid)
258262
const revocationRegistryDefinition = JsonTransformer.fromJSON(
@@ -306,10 +310,13 @@ export class CheqdAnonCredsRegistry implements AnonCredsRegistry {
306310

307311
const cheqdDidRegistrar = agentContext.dependencyManager.resolve(CheqdDidRegistrar)
308312

313+
const revocDefName = `${credentialDefinitionName}-${revocationRegistryDefinition.tag}`
314+
const revocDefNameHashedBuffer = Hasher.hash(revocDefName, 'sha-256')
315+
309316
const revocationRegistryDefinitionResource = {
310317
id: utils.uuid(),
311-
name: credentialDefinitionName as string,
312-
resourceType: 'anonCredsRevocRegDef',
318+
name: TypedArrayEncoder.toHex(revocDefNameHashedBuffer),
319+
resourceType: cheqdAnonCredsResourceTypes.revocationRegistryDefinition,
313320
data: {
314321
credDefId: revocationRegistryDefinition.credDefId,
315322
revocDefType: revocationRegistryDefinition.revocDefType,
@@ -385,7 +392,7 @@ export class CheqdAnonCredsRegistry implements AnonCredsRegistry {
385392

386393
const response = await cheqdDidResolver.resolveResource(
387394
agentContext,
388-
`${parsedDid.did}?resourceType=anonCredsStatusList&resourceVersionTime=${timestamp}&resourceName=${revocationRegistryDefinitionName}`
395+
`${parsedDid.did}?resourceType=${cheqdAnonCredsResourceTypes.revocationStatusList}&resourceVersionTime=${timestamp}&resourceName=${revocationRegistryDefinitionName}`
389396
)
390397

391398
const revocationStatusList = JsonTransformer.fromJSON(response.resource, CheqdRevocationStatusList)
@@ -444,7 +451,7 @@ export class CheqdAnonCredsRegistry implements AnonCredsRegistry {
444451
const revocationStatusListResource = {
445452
id: utils.uuid(),
446453
name: revocationRegistryDefinitionName as string,
447-
resourceType: 'anonCredsStatusList',
454+
resourceType: cheqdAnonCredsResourceTypes.revocationStatusList,
448455
data: {
449456
currentAccumulator: revocationStatusList.currentAccumulator,
450457
revRegDefId: revocationStatusList.revRegDefId,

packages/cheqd/src/anoncreds/utils/identifiers.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,10 @@ export function parseCheqdDid(didUrl: string): ParsedCheqdDid | null {
6363
}
6464
return null
6565
}
66+
67+
export const cheqdAnonCredsResourceTypes = {
68+
schema: 'anonCredsSchema',
69+
credentialDefinition: 'anonCredsCredDef',
70+
revocationRegistryDefinition: 'anonCredsRevocRegDef',
71+
revocationStatusList: 'anonCredsStatusList',
72+
}

pnpm-lock.yaml

Lines changed: 18 additions & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)