UNPKG

@iden3/js-iden3-auth

Version:

iden3-auth implementation in JavaScript

55 lines (54 loc) 2.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkQueryV2Circuits = exports.userStateError = void 0; const js_jsonld_merklization_1 = require("@iden3/js-jsonld-merklization"); const js_sdk_1 = require("@0xpolygonid/js-sdk"); exports.userStateError = new Error(`user state is not valid`); async function checkQueryV2Circuits(circuitId, query, outs, schemaLoader, opts, verifiablePresentation) { if (!query.type) { throw new Error(`proof query type is undefined`); } const loader = schemaLoader || (0, js_jsonld_merklization_1.getDocumentLoader)(); // validate schema let context; try { context = (await loader(query.context ?? '')).document; } catch (e) { throw new Error(`can't load schema for request query`); } const queriesMetadata = await (0, js_sdk_1.parseQueriesMetadata)(query.type, JSON.stringify(context), query.credentialSubject, { documentLoader: loader }); await (0, js_sdk_1.checkQueryRequest)(query, queriesMetadata, context, outs, circuitId, loader, opts); const queryMetadata = queriesMetadata[0]; // only one query is supported (0, js_sdk_1.checkCircuitOperator)(circuitId, outs.operator); // validate selective disclosure if (queryMetadata.operator === js_sdk_1.Operators.SD) { try { await (0, js_sdk_1.validateDisclosureV2Circuit)(queryMetadata, outs, verifiablePresentation, loader); } catch (e) { throw new Error(`failed to validate selective disclosure: ${e.message}`); } } else if (!queryMetadata.fieldName && queryMetadata.operator == js_sdk_1.Operators.NOOP) { try { await (0, js_sdk_1.validateEmptyCredentialSubjectV2Circuit)(queryMetadata, outs); } catch (e) { throw new Error(`failed to validate operators: ${e.message}`); } } else { try { await (0, js_sdk_1.validateOperators)(queryMetadata, outs); } catch (e) { throw new Error(`failed to validate operators: ${e.message}`); } } // verify field inclusion (0, js_sdk_1.verifyFieldValueInclusionV2)(outs, queryMetadata); } exports.checkQueryV2Circuits = checkQueryV2Circuits;