import { DidDocumentResolver } from './didDocumentResolver.js'; import { JsonWebKey } from './didDocument.dto.js'; import { CredentialValidationOptions } from '../shared/dto/validationOptions.dto.js'; export class DidPublicKeyResolver { constructor(private didDocumentResolver: DidDocumentResolver) {} async getPublicKeyJwk( kid: string, opts?: CredentialValidationOptions, ): Promise { const did = this.getDidFromKid(kid); const didDocument = await this.didDocumentResolver.resolveDid(did, opts); if (!kid.includes('#')) { return didDocument.verificationMethod[0].publicKeyJwk; } return didDocument.verificationMethod.find((verificationMethod) => { return verificationMethod.id === kid; }).publicKeyJwk; } private getDidFromKid(kid: string): string { const hashIndex = kid.indexOf('#'); if (hashIndex !== -1) return kid.substring(0, hashIndex); return kid; } }