{"version":3,"sources":["../plugin.schema.json","../src/index.ts","../src/agent/WellKnownDidVerifier.ts"],"sourcesContent":["{\n  \"IWellKnownDidVerifier\": {\n    \"components\": {\n      \"schemas\": {\n        \"IVerifyDomainLinkageArgs\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"didUrl\": {\n              \"type\": \"string\"\n            },\n            \"signatureVerification\": {\n              \"type\": \"string\"\n            },\n            \"onlyVerifyServiceDids\": {\n              \"type\": \"boolean\"\n            },\n            \"additionalProperties\": false\n          },\n          \"required\": [\"didUrl\", \"signatureVerification\"],\n          \"description\": \"Arguments needed for {@link IWellKnownDidVerifier.verifyDomainLinkage } \"\n        }\n      },\n      \"methods\": {\n        \"verifyDomainLinkage\": {\n          \"description\": \"Verifies the relationship between the controller of an origin and a DID\",\n          \"arguments\": {\n            \"$ref\": \"#/components/schemas/IVerifyDomainLinkageArgs\"\n          },\n          \"returnType\": \"object\"\n        }\n      }\n    }\n  }\n}\n","/**\n * @public\n */\nconst schema = require('../plugin.schema.json')\nexport { schema }\nexport { WellKnownDidVerifier } from './agent/WellKnownDidVerifier'\nexport * from './types/IWellKnownDidVerifier'\n","import { IAgentPlugin, DIDResolutionResult } from '@veramo/core'\nimport { WellKnownDidVerifier as Verifier, IDomainLinkageValidation, IResourceValidation, VerifyCallback } from '@sphereon/wellknown-dids-client'\nimport { schema } from '../index'\nimport {\n  IWellKnownDidVerifier,\n  IWellKnownDidVerifierOptionsArgs,\n  IRegisterSignatureVerificationArgs,\n  IRemoveSignatureVerificationArgs,\n  IRequiredContext,\n  IVerifyDidConfigurationResourceArgs,\n  IVerifyDomainLinkageArgs,\n} from '../types/IWellKnownDidVerifier'\n\n/**\n * {@inheritDoc IWellKnownDidVerifier}\n */\nexport class WellKnownDidVerifier implements IAgentPlugin {\n  readonly schema = schema.IWellKnownDidVerifier\n  readonly methods: IWellKnownDidVerifier = {\n    registerSignatureVerification: this.registerSignatureVerification.bind(this),\n    removeSignatureVerification: this.removeSignatureVerification.bind(this),\n    verifyDomainLinkage: this.verifyDomainLinkage.bind(this),\n    verifyDidConfigurationResource: this.verifyDidConfigurationResource.bind(this),\n  }\n\n  private readonly signatureVerifications: Record<string, VerifyCallback>\n  private readonly onlyVerifyServiceDids: boolean\n\n  constructor(args?: IWellKnownDidVerifierOptionsArgs) {\n    this.signatureVerifications = (args && args.signatureVerifications) || {}\n    this.onlyVerifyServiceDids = (args && args.onlyVerifyServiceDids) || false\n  }\n\n  /** {@inheritDoc IWellKnownDidVerifier.registerSignatureVerification} */\n  private async registerSignatureVerification(args: IRegisterSignatureVerificationArgs, context: IRequiredContext): Promise<void> {\n    if (this.signatureVerifications[args.callbackName] !== undefined) {\n      return Promise.reject(new Error(`Signature validation with key: ${args.callbackName} already present`))\n    }\n\n    this.signatureVerifications[args.callbackName] = args.signatureVerification\n  }\n\n  /** {@inheritDoc IWellKnownDidVerifier.removeSignatureVerification} */\n  private async removeSignatureVerification(args: IRemoveSignatureVerificationArgs, context: IRequiredContext): Promise<boolean> {\n    return delete this.signatureVerifications[args.callbackName]\n  }\n\n  /** {@inheritDoc IWellKnownDidVerifier.verifyDomainLinkage} */\n  private async verifyDomainLinkage(args: IVerifyDomainLinkageArgs, context: IRequiredContext): Promise<IDomainLinkageValidation> {\n    const signatureVerification: VerifyCallback =\n      typeof args.signatureVerification === 'string'\n        ? await this.getSignatureVerification(args.signatureVerification)\n        : (args.signatureVerification as VerifyCallback)\n\n    return context.agent.resolveDid({ didUrl: args.did }).then((didResolutionResult: DIDResolutionResult) => {\n      if (!didResolutionResult.didDocument) {\n        return Promise.reject(Error(`Unable to resolve did: ${args.did}`))\n      }\n\n      return new Verifier().verifyDomainLinkage({\n        didDocument: didResolutionResult.didDocument,\n        verifySignatureCallback: signatureVerification,\n        onlyVerifyServiceDid: args.onlyVerifyServiceDids || this.onlyVerifyServiceDids,\n      })\n    })\n  }\n\n  /** {@inheritDoc IWellKnownDidVerifier.verifyDidConfigurationResource} */\n  private async verifyDidConfigurationResource(args: IVerifyDidConfigurationResourceArgs, context: IRequiredContext): Promise<IResourceValidation> {\n    if (args.configuration && args.origin) {\n      return Promise.reject(Error('Cannot supply both a DID configuration resource and an origin.'))\n    }\n\n    if (!args.configuration && !args.origin) {\n      return Promise.reject(Error('No DID configuration resource or origin supplied.'))\n    }\n\n    const signatureVerification: VerifyCallback =\n      typeof args.signatureVerification === 'string'\n        ? await this.getSignatureVerification(args.signatureVerification)\n        : (args.signatureVerification as VerifyCallback)\n\n    return new Verifier().verifyResource({\n      verifySignatureCallback: signatureVerification,\n      configuration: args.configuration,\n      origin: args.origin,\n      did: args.did,\n    })\n  }\n\n  private async getSignatureVerification(key: string): Promise<VerifyCallback> {\n    if (this.signatureVerifications[key] === undefined) {\n      return Promise.reject(new Error(`Signature validation not found for key: ${key}`))\n    }\n\n    return this.signatureVerifications[key]\n  }\n}\n"],"mappings":"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","names":["module","WellKnownDidVerifier","schema","IWellKnownDidVerifier","methods","registerSignatureVerification","bind","removeSignatureVerification","verifyDomainLinkage","verifyDidConfigurationResource","signatureVerifications","onlyVerifyServiceDids","constructor","args","context","callbackName","undefined","Promise","reject","Error","signatureVerification","getSignatureVerification","agent","resolveDid","didUrl","did","then","didResolutionResult","didDocument","Verifier","verifySignatureCallback","onlyVerifyServiceDid","configuration","origin","verifyResource","key","schema","require"]}