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

33 lines (32 loc) • 1.91 kB
import { DidsApi } from "../../dids/DidsApi.mjs"; import "../../dids/index.mjs"; import { createInvalidResult, createProofVerificationIssue } from "../W3cDataIntegrityError.mjs"; //#region src/modules/w3c-di/proof-processing/proofPurposeValidation.ts const DID_PROOF_PURPOSES = [ "assertionMethod", "authentication", "keyAgreement", "capabilityInvocation", "capabilityDelegation" ]; function asDidPurpose(proofPurpose) { return DID_PROOF_PURPOSES.includes(proofPurpose) ? proofPurpose : void 0; } /** * Validates that the verificationMethod used in a proof is authorized for * the proofPurpose verification relationship in the controller document. */ async function validateProofPurposeVerificationRelationship(agentContext, proof) { if (typeof proof.verificationMethod !== "string") return createInvalidResult(createProofVerificationIssue("Proof verificationMethod is required for proof purpose validation", `Received '${typeof proof.verificationMethod}'`)); const verificationRelationship = asDidPurpose(proof.proofPurpose); if (!verificationRelationship) return createInvalidResult(createProofVerificationIssue("Unsupported proof purpose for verification relationship validation", `Proof purpose '${proof.proofPurpose}' is not one of ${DID_PROOF_PURPOSES.join(", ")}`)); const didApi = agentContext.dependencyManager.resolve(DidsApi); try { (await didApi.resolveDidDocument(proof.verificationMethod)).dereferenceKey(proof.verificationMethod, [verificationRelationship]); } catch (error) { return createInvalidResult(createProofVerificationIssue("Verification method is not authorized for proof purpose", error instanceof Error ? error.message : `Verification method '${proof.verificationMethod}' is not authorized for proof purpose '${proof.proofPurpose}'`)); } } //#endregion export { validateProofPurposeVerificationRelationship }; //# sourceMappingURL=proofPurposeValidation.mjs.map