UNPKG

@sphereon/ssi-sdk.wellknown-did-verifier

Version:

1 lines 8.68 kB
{"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","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"]}