From d18fe3f29996e027fd0fc30df2844cafc9bd2c54 Mon Sep 17 00:00:00 2001 From: Philip Feairheller Date: Tue, 26 Mar 2024 16:28:00 -0700 Subject: [PATCH] Add support for the --send argument back into `kli revoke`. It got clobbered in a merge. (#725) Signed-off-by: pfeairheller --- src/keri/app/cli/commands/vc/revoke.py | 32 ++++++++++++++++++-------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/src/keri/app/cli/commands/vc/revoke.py b/src/keri/app/cli/commands/vc/revoke.py index ed2c41ec9..a37059255 100644 --- a/src/keri/app/cli/commands/vc/revoke.py +++ b/src/keri/app/cli/commands/vc/revoke.py @@ -122,9 +122,7 @@ def revokeDo(self, tymth, tock=0.0): aserder = serdering.SerderKERI(raw=bytes(anc)) self.registrar.revoke(creder, rserder, aserder) - senderHab = self.hab if isinstance(self.hab, GroupHab): - senderHab = self.hab.mhab smids = self.hab.db.signingMembers(pre=self.hab.pre) smids.remove(self.hab.mhab.pre) @@ -139,8 +137,13 @@ def revokeDo(self, tymth, tock=0.0): while not self.registrar.complete(creder.said, sn=1): yield self.tock - if self.hab.witnesser() and 'i' in creder.attrib: - recp = creder.attrib['i'] + recps = [creder.attrib['i']] if 'i' in creder.attrib else [] + if self.send is not None: + recps.extend(self.send) + + senderHab = self.hab.mhab if isinstance(self.hab, GroupHab) else self.hab + + if len(recps) > 0: msgs = [] for msg in self.hby.db.clonePreIter(pre=creder.issuer): serder = serdering.SerderKERI(raw=msg) @@ -151,12 +154,21 @@ def revokeDo(self, tymth, tock=0.0): atc = msg[serder.size:] msgs.append((serder, atc)) - for (serder, atc) in msgs: - self.postman.send(src=senderHab.pre, dest=recp, topic="credential", serder=serder, - attachment=atc) - - last = msgs[-1][0] - while not self.postman.sent(said=last.said): + sent = 0 + for send in recps: + if send in self.hby.kevers: + recp = send + else: + recp = self.org.find("alias", send) + if len(recp) != 1: + raise ValueError(f"invalid recipient {send}") + recp = recp[0]['id'] + for (serder, atc) in msgs: + self.postman.send(src=senderHab.pre, dest=recp, topic="credential", serder=serder, + attachment=atc) + sent += 1 + + while not len(self.postman.cues) == sent: yield self.tock except kering.ValidationError as ex: