@iden3/js-iden3-auth
Version:
iden3-auth implementation in JavaScript
55 lines (54 loc) • 2.29 kB
JavaScript
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;
;