UNPKG

@credo-ts/core

Version:

<p align="center"> <br /> <img alt="Credo Logo" src="https://github.com/openwallet-foundation/credo-ts/blob/c7886cb8377ceb8ee4efe8d264211e561a75072d/images/credo-logo.png" height="250px" /> </p> <h1 align="center"><b>Credo - Core</b></h1

1 lines • 6.04 kB
{"version":3,"file":"JwkDidRegistrar.mjs","names":[],"sources":["../../../../../src/modules/dids/methods/jwk/JwkDidRegistrar.ts"],"sourcesContent":["import type { AgentContext } from '../../../../agent'\nimport type { XOR } from '../../../../types'\nimport {\n KeyManagementApi,\n type KmsCreateKeyOptions,\n type KmsCreateKeyTypeAsymmetric,\n type KmsJwkPublicAsymmetric,\n PublicJwk,\n} from '../../../kms'\n\nimport { DidDocumentRole } from '../../domain/DidDocumentRole'\nimport type { DidRegistrar } from '../../domain/DidRegistrar'\nimport { DidRecord, DidRepository } from '../../repository'\nimport type { DidCreateOptions, DidCreateResult, DidDeactivateResult, DidUpdateResult } from '../../types'\nimport { DidJwk } from './DidJwk'\n\nexport class JwkDidRegistrar implements DidRegistrar {\n public readonly supportedMethods = ['jwk']\n\n public async create(agentContext: AgentContext, options: JwkDidCreateOptions): Promise<DidCreateResult> {\n const didRepository = agentContext.dependencyManager.resolve(DidRepository)\n\n try {\n let publicJwk: KmsJwkPublicAsymmetric\n let keyId: string\n const kms = agentContext.dependencyManager.resolve(KeyManagementApi)\n\n if (options.options.createKey) {\n const createKeyResult = await kms.createKey(options.options.createKey)\n publicJwk = createKeyResult.publicJwk\n keyId = createKeyResult.keyId\n } else if (options.options.keyId) {\n const _publicJwk = await kms.getPublicKey({ keyId: options.options.keyId })\n keyId = options.options.keyId\n if (!_publicJwk) {\n return {\n didDocumentMetadata: {},\n didRegistrationMetadata: {},\n didState: {\n state: 'failed',\n reason: `notFound: key with key id '${options.options.keyId}' not found`,\n },\n }\n }\n\n if (_publicJwk.kty === 'oct') {\n return {\n didDocumentMetadata: {},\n didRegistrationMetadata: {},\n didState: {\n state: 'failed',\n reason: `notFound: key with key id '${options.options.keyId}' uses unsupported kty 'oct' for did:jwk`,\n },\n }\n }\n\n publicJwk = _publicJwk\n } else {\n return {\n didDocumentMetadata: {},\n didRegistrationMetadata: {},\n didState: {\n state: 'failed',\n reason: 'Missing keyId or createKey',\n },\n }\n }\n\n const didJwk = DidJwk.fromPublicJwk(PublicJwk.fromPublicJwk(publicJwk))\n\n // Save the did so we know we created it and can issue with it\n const didRecord = new DidRecord({\n did: didJwk.did,\n role: DidDocumentRole.Created,\n keys: [\n {\n didDocumentRelativeKeyId: '#0',\n kmsKeyId: keyId,\n },\n ],\n })\n await didRepository.save(agentContext, didRecord)\n\n return {\n didDocumentMetadata: {},\n didRegistrationMetadata: {},\n didState: {\n state: 'finished',\n did: didJwk.did,\n didDocument: didJwk.didDocument,\n },\n }\n } catch (error) {\n return {\n didDocumentMetadata: {},\n didRegistrationMetadata: {},\n didState: {\n state: 'failed',\n reason: `unknownError: ${error.message}`,\n },\n }\n }\n }\n\n public async update(): Promise<DidUpdateResult> {\n return {\n didDocumentMetadata: {},\n didRegistrationMetadata: {},\n didState: {\n state: 'failed',\n reason: 'notSupported: cannot update did:jwk did',\n },\n }\n }\n\n public async deactivate(): Promise<DidDeactivateResult> {\n return {\n didDocumentMetadata: {},\n didRegistrationMetadata: {},\n didState: {\n state: 'failed',\n reason: 'notSupported: cannot deactivate did:jwk did',\n },\n }\n }\n}\n\nexport interface JwkDidCreateOptions extends DidCreateOptions {\n method: 'jwk'\n // For now we don't support creating a did:jwk with a did or did document\n did?: never\n didDocument?: never\n secret?: never\n\n /**\n * You can create a did:jwk based on an existing `keyId`, or provide `createKey` options\n * to create a new key.\n */\n options: XOR<{ createKey: KmsCreateKeyOptions<KmsCreateKeyTypeAsymmetric> }, { keyId: string }>\n}\n\n// Update and Deactivate not supported for did:jwk\nexport type JwkDidUpdateOptions = never\nexport type JwkDidDeactivateOptions = never\n"],"mappings":";;;;;;;;;AAgBA,IAAa,kBAAb,MAAqD;;EACnD,KAAgB,mBAAmB,CAAC,KAAK;;CAEzC,MAAa,OAAO,cAA4B,SAAwD;EACtG,MAAM,gBAAgB,aAAa,kBAAkB,QAAQ,aAAa;EAE1E,IAAI;GACF,IAAI;GACJ,IAAI;GACJ,MAAM,MAAM,aAAa,kBAAkB,QAAQ,gBAAgB;GAEnE,IAAI,QAAQ,QAAQ,WAAW;IAC7B,MAAM,kBAAkB,MAAM,IAAI,UAAU,QAAQ,QAAQ,SAAS;IACrE,YAAY,gBAAgB;IAC5B,QAAQ,gBAAgB;GAC1B,OAAO,IAAI,QAAQ,QAAQ,OAAO;IAChC,MAAM,aAAa,MAAM,IAAI,aAAa,EAAE,OAAO,QAAQ,QAAQ,MAAM,CAAC;IAC1E,QAAQ,QAAQ,QAAQ;IACxB,IAAI,CAAC,YACH,OAAO;KACL,qBAAqB,CAAC;KACtB,yBAAyB,CAAC;KAC1B,UAAU;MACR,OAAO;MACP,QAAQ,8BAA8B,QAAQ,QAAQ,MAAM;KAC9D;IACF;IAGF,IAAI,WAAW,QAAQ,OACrB,OAAO;KACL,qBAAqB,CAAC;KACtB,yBAAyB,CAAC;KAC1B,UAAU;MACR,OAAO;MACP,QAAQ,8BAA8B,QAAQ,QAAQ,MAAM;KAC9D;IACF;IAGF,YAAY;GACd,OACE,OAAO;IACL,qBAAqB,CAAC;IACtB,yBAAyB,CAAC;IAC1B,UAAU;KACR,OAAO;KACP,QAAQ;IACV;GACF;GAGF,MAAM,SAAS,OAAO,cAAc,UAAU,cAAc,SAAS,CAAC;GAGtE,MAAM,YAAY,IAAI,UAAU;IAC9B,KAAK,OAAO;IACZ,MAAA;IACA,MAAM,CACJ;KACE,0BAA0B;KAC1B,UAAU;IACZ,CACF;GACF,CAAC;GACD,MAAM,cAAc,KAAK,cAAc,SAAS;GAEhD,OAAO;IACL,qBAAqB,CAAC;IACtB,yBAAyB,CAAC;IAC1B,UAAU;KACR,OAAO;KACP,KAAK,OAAO;KACZ,aAAa,OAAO;IACtB;GACF;EACF,SAAS,OAAO;GACd,OAAO;IACL,qBAAqB,CAAC;IACtB,yBAAyB,CAAC;IAC1B,UAAU;KACR,OAAO;KACP,QAAQ,iBAAiB,MAAM;IACjC;GACF;EACF;CACF;CAEA,MAAa,SAAmC;EAC9C,OAAO;GACL,qBAAqB,CAAC;GACtB,yBAAyB,CAAC;GAC1B,UAAU;IACR,OAAO;IACP,QAAQ;GACV;EACF;CACF;CAEA,MAAa,aAA2C;EACtD,OAAO;GACL,qBAAqB,CAAC;GACtB,yBAAyB,CAAC;GAC1B,UAAU;IACR,OAAO;IACP,QAAQ;GACV;EACF;CACF;AACF"}