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

58 lines (57 loc) • 3.57 kB
import { CredoError } from "../../../error/CredoError.mjs"; import "../../../error/index.mjs"; import "../../vc/models/ClaimFormat.mjs"; import { W3cJwtVerifiablePresentation } from "../../vc/jwt-vc/W3cJwtVerifiablePresentation.mjs"; import { W3cV2DataIntegrityVerifiablePresentation } from "../../vc/data-integrity/W3cV2DataIntegrityVerifiablePresentation.mjs"; import { W3cV2JwtVerifiablePresentation } from "../../vc/jwt-vc/W3cV2JwtVerifiablePresentation.mjs"; import { W3cV2SdJwtVerifiablePresentation } from "../../vc/sd-jwt-vc/W3cV2SdJwtVerifiablePresentation.mjs"; import "../../vc/data-integrity/index.mjs"; import "../../vc/sd-jwt-vc/index.mjs"; import { W3cJsonLdVerifiablePresentation } from "../../vc/linked-data-proofs/models/W3cJsonLdVerifiablePresentation.mjs"; import "../../vc/index.mjs"; import { MdocDeviceResponse } from "../../mdoc/MdocDeviceResponse.mjs"; import "../../mdoc/index.mjs"; import { JSONPath } from "@astronautlabs/jsonpath"; //#region src/modules/dif-presentation-exchange/utils/presentationSelection.ts function extractPresentationsWithDescriptorsFromSubmission(presentations, submission, definition) { return submission.descriptor_map.map((descriptor) => { const [presentation] = JSONPath.query(presentations, descriptor.path); const inputDescriptor = definition.input_descriptors.find(({ id }) => id === descriptor.id); if (!presentation) throw new CredoError(`Unable to extract presentation at path '${descriptor.path}' for submission descriptor '${descriptor.id}'`); if (!inputDescriptor) throw new Error(`Unable to extract input descriptor '${descriptor.id}' from definition '${definition.id}' for submission '${submission.id}'`); if (presentation instanceof MdocDeviceResponse) { const document = presentation.deviceResponse.documents?.find((document) => document.docType === descriptor.id); if (!document) throw new Error(`Unable to extract mdoc document with doctype '${descriptor.id}' from mdoc device response for submission '${submission.id}'.`); return { claimFormat: "mso_mdoc", descriptor, presentation, credential: document, inputDescriptor }; } if (presentation instanceof W3cJwtVerifiablePresentation || presentation instanceof W3cJsonLdVerifiablePresentation) { if (!descriptor.path_nested) throw new Error(`Submission descriptor '${descriptor.id}' for submission '${submission.id}' has no 'path_nested' but presentation is format '${presentation.claimFormat}'`); const [verifiableCredential] = JSONPath.query(presentation.claimFormat === "jwt_vp" ? { vp: presentation } : presentation, descriptor.path_nested.path); if (!verifiableCredential) throw new CredoError(`Unable to extract credential at path '${descriptor.path_nested.path}' from presentation at path '${descriptor.path}' for submission descriptor '${descriptor.id}'`); return { claimFormat: presentation.claimFormat, descriptor, presentation, credential: verifiableCredential, inputDescriptor }; } if (presentation instanceof W3cV2JwtVerifiablePresentation || presentation instanceof W3cV2SdJwtVerifiablePresentation || presentation instanceof W3cV2DataIntegrityVerifiablePresentation) throw new CredoError(`Presentation format '${presentation.claimFormat}' is not supported with DIF Presentation Exchange`); return { claimFormat: "dc+sd-jwt", descriptor, presentation, credential: presentation, inputDescriptor }; }); } //#endregion export { extractPresentationsWithDescriptorsFromSubmission }; //# sourceMappingURL=presentationSelection.mjs.map