Source code for keri.app.challenging

# -*- encoding: utf-8 -*-
"""
keri.vc.challenging module

"""

from keri.core import coring


[docs] def loadHandlers(db, signaler, exc): """ Load handlers for the peer-to-peer challenge response protocol Parameters: db (Baser): database environment signaler (Signaler): Signaler for transient messages for the controller of the agent exc (Exchanger): Peer-to-peer message router """ chacha = ChallengeHandler(db=db, signaler=signaler) exc.addHandler(chacha)
[docs] class ChallengeHandler: """ Handle challenge response peer to peer `exn` message """ resource = "/challenge/response"
[docs] def __init__(self, db, signaler): """ Initialize peer to peer challenge response messsage """ self.db = db self.signaler = signaler super(ChallengeHandler, self).__init__()
[docs] def handle(self, serder, attachments=None): """ Do route specific processsing of Challenge response messages Parameters: serder (Serder): Serder of the exn challenge response message attachments (list): list of tuples of pather, CESR SAD path attachments to the exn event """ payload = serder.ked['a'] signer = serder.pre words = payload["words"] msg = dict( signer=signer, said=serder.said, words=words ) # Notify controller of sucessful challenge self.signaler.push(msg, topic="/challenge") # Log signer against event to track successful challenges with signed response self.db.reps.add(keys=(signer,), val=coring.Saider(qb64=serder.said))