@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
JavaScript
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