Source code for aries_cloudagent.indy.sdk.verifier

"""Indy SDK verifier implementation."""

import json
import logging

import indy.anoncreds
from indy.error import IndyError

from ...ledger.indy import IndySdkLedger

from ..verifier import IndyVerifier

LOGGER = logging.getLogger(__name__)


[docs]class IndySdkVerifier(IndyVerifier): """Indy-SDK verifier implementation.""" def __init__(self, ledger: IndySdkLedger): """ Initialize an IndyVerifier instance. Args: ledger: ledger instance """ self.ledger = ledger
[docs] async def verify_presentation( self, pres_req, pres, schemas, credential_definitions, rev_reg_defs, rev_reg_entries, ) -> bool: """ Verify a presentation. Args: pres_req: Presentation request data pres: Presentation data schemas: Schema data credential_definitions: credential definition data rev_reg_defs: revocation registry definitions rev_reg_entries: revocation registry entries """ try: self.non_revoc_intervals(pres_req, pres) await self.check_timestamps(self.ledger, pres_req, pres, rev_reg_defs) await self.pre_verify(pres_req, pres) except ValueError as err: LOGGER.error( f"Presentation on nonce={pres_req['nonce']} " f"cannot be validated: {str(err)}" ) return False try: verified = await indy.anoncreds.verifier_verify_proof( json.dumps(pres_req), json.dumps(pres), json.dumps(schemas), json.dumps(credential_definitions), json.dumps(rev_reg_defs), json.dumps(rev_reg_entries), ) except IndyError: LOGGER.exception( f"Validation of presentation on nonce={pres_req['nonce']} " "failed with error" ) verified = False return verified