Skip to content

Commit b04eb3f

Browse files
committed
fix: getKey method was not working well with did#vm or #vm key ids
1 parent d80a945 commit b04eb3f

File tree

1 file changed

+5
-2
lines changed

1 file changed

+5
-2
lines changed

packages/did-utils/src/did-functions.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -323,13 +323,16 @@ export async function getKey(
323323
if (!identifier) {
324324
return Promise.reject(new Error(`No identifier provided to getKey method!`))
325325
}
326-
let identifierKey = keyId ? identifier.keys.find((key: IKey) => key.kid === keyId || key?.meta?.jwkThumbprint === keyId) : undefined
326+
// normalize to kid, in case keyId was passed in as did#vm or #vm
327+
const kidVals = keyId?.split(`#`)
328+
const kid = kidVals ? (kidVals?.length === 2 ? kidVals[1] : kidVals[0]) : undefined
329+
let identifierKey = keyId ? identifier.keys.find((key: IKey) => key.kid === kid || key?.meta?.jwkThumbprint === kid) : undefined
327330
if (!identifierKey) {
328331
const keys = await mapIdentifierKeysToDocWithJwkSupport(identifier, verificationMethodSection, context)
329332
if (!keys || keys.length === 0) {
330333
throw new Error(`No keys found for verificationMethodSection: ${verificationMethodSection} and did ${identifier.did}`)
331334
}
332-
identifierKey = keyId ? keys.find((key: _ExtendedIKey) => key.meta.verificationMethod.id === keyId) : keys[0]
335+
identifierKey = keyId ? keys.find((key: _ExtendedIKey) => key.meta.verificationMethod?.id === keyId || (kid && key.meta.verificationMethod?.id?.includes(kid))) : keys[0]
333336
}
334337
if (!identifierKey) {
335338
throw new Error(

0 commit comments

Comments
 (0)