{"version":3,"file":"Multikey.mjs","names":[],"sources":["../../../../../src/modules/dids/domain/verificationMethod/Multikey.ts"],"sourcesContent":["import { CredoError } from '../../../../error'\nimport { PublicJwk } from '../../../kms'\nimport type { VerificationMethod } from './VerificationMethod'\n\nexport const VERIFICATION_METHOD_TYPE_MULTIKEY = 'Multikey'\n\ntype GetMultikeyOptions = {\n  did: string\n  publicJwk: PublicJwk\n  verificationMethodId?: string\n}\n\n/**\n * Get a Multikey verification method.\n */\nexport function getMultikey({ did, publicJwk, verificationMethodId }: GetMultikeyOptions) {\n  if (!verificationMethodId) {\n    verificationMethodId = `${did}#${publicJwk.fingerprint}`\n  }\n\n  return {\n    id: verificationMethodId,\n    type: VERIFICATION_METHOD_TYPE_MULTIKEY,\n    controller: did,\n    publicKeyMultibase: publicJwk.fingerprint,\n  }\n}\n\n/**\n * Check whether a verification method is a Multikey verification method.\n */\nexport function isMultikey(\n  verificationMethod: VerificationMethod\n): verificationMethod is VerificationMethod & { type: 'Multikey' } {\n  return verificationMethod.type === VERIFICATION_METHOD_TYPE_MULTIKEY\n}\n\n/**\n * Get a public jwk from a Multikey verification method.\n */\nexport function getPublicJwkFromMultikey(verificationMethod: VerificationMethod & { type: 'Multikey' }) {\n  if (!verificationMethod.publicKeyMultibase) {\n    throw new CredoError(\n      `Missing publicKeyMultibase on verification method with type ${VERIFICATION_METHOD_TYPE_MULTIKEY}`\n    )\n  }\n\n  return PublicJwk.fromFingerprint(verificationMethod.publicKeyMultibase)\n}\n"],"mappings":";;;;;;;;AAIA,MAAa,oCAAoC;;;;AAWjD,SAAgB,YAAY,EAAE,KAAK,WAAW,wBAA4C;AACxF,KAAI,CAAC,qBACH,wBAAuB,GAAG,IAAI,GAAG,UAAU;AAG7C,QAAO;EACL,IAAI;EACJ,MAAM;EACN,YAAY;EACZ,oBAAoB,UAAU;EAC/B;;;;;AAMH,SAAgB,WACd,oBACiE;AACjE,QAAO,mBAAmB,SAAS;;;;;AAMrC,SAAgB,yBAAyB,oBAA+D;AACtG,KAAI,CAAC,mBAAmB,mBACtB,OAAM,IAAI,WACR,+DAA+D,oCAChE;AAGH,QAAO,UAAU,gBAAgB,mBAAmB,mBAAmB"}