UNPKG

@iden3/js-iden3-auth

Version:

iden3-auth implementation in JavaScript

66 lines (65 loc) 3.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AtomicQueryMTPV2PubSignalsVerifier = void 0; const js_iden3_core_1 = require("@iden3/js-iden3-core"); const query_1 = require("../circuits/query"); const ownershipVerifier_1 = require("../circuits/ownershipVerifier"); const common_1 = require("../circuits/common"); const js_sdk_1 = require("@0xpolygonid/js-sdk"); const valuesSize = 64; const defaultProofVerifyOpts = 1 * 60 * 60 * 1000; // 1 hour class AtomicQueryMTPV2PubSignalsVerifier extends ownershipVerifier_1.IDOwnershipPubSignals { constructor(pubSignals) { super(); this.pubSignals = new js_sdk_1.AtomicQueryMTPV2PubSignals(); this.pubSignals = this.pubSignals.pubSignalsUnmarshal(js_sdk_1.byteEncoder.encode(JSON.stringify(pubSignals))); if (!this.pubSignals.userID) { throw new Error('user id is not presented in proof public signals'); } if (!this.pubSignals.requestID) { throw new Error('requestId is not presented in proof public signals'); } this.userId = this.pubSignals.userID; this.challenge = this.pubSignals.requestID; } async verifyQuery(query, schemaLoader, verifiablePresentation, opts) { const outs = { issuerId: this.pubSignals.issuerID, schemaHash: this.pubSignals.claimSchema, slotIndex: this.pubSignals.slotIndex, operator: this.pubSignals.operator, value: this.pubSignals.value, timestamp: this.pubSignals.timestamp, merklized: this.pubSignals.merklized, claimPathKey: this.pubSignals.claimPathKey, claimPathNotExists: this.pubSignals.claimPathNotExists, valueArraySize: valuesSize, isRevocationChecked: this.pubSignals.isRevocationChecked }; await (0, query_1.checkQueryV2Circuits)(js_sdk_1.CircuitId.AtomicQueryMTPV2, query, outs, schemaLoader, opts, verifiablePresentation); return this.pubSignals; } async verifyStates(resolvers, opts) { const resolver = (0, common_1.getResolverByID)(resolvers, this.pubSignals.issuerID); if (!resolver) { throw new Error(`resolver not found for issuerID ${this.pubSignals.issuerID.string()}`); } await (0, common_1.checkUserState)(resolver, this.pubSignals.issuerID, this.pubSignals.issuerClaimIdenState); if (this.pubSignals.isRevocationChecked === 0) { return; } const issuerNonRevStateResolved = await (0, common_1.checkIssuerNonRevState)(resolver, this.pubSignals.issuerID, this.pubSignals.issuerClaimNonRevState); let acceptedStateTransitionDelay = defaultProofVerifyOpts; if (opts?.acceptedStateTransitionDelay) { acceptedStateTransitionDelay = opts.acceptedStateTransitionDelay; } if (!issuerNonRevStateResolved.latest) { const timeDiff = Date.now() - (0, js_iden3_core_1.getDateFromUnixTimestamp)(Number(issuerNonRevStateResolved.transitionTimestamp)).getTime(); if (timeDiff > acceptedStateTransitionDelay) { throw new Error('issuer state is outdated'); } } } } exports.AtomicQueryMTPV2PubSignalsVerifier = AtomicQueryMTPV2PubSignalsVerifier;