Skip to content

Commit 781ea7a

Browse files
authored
Complete unit test for multisig issuer and holder credential creation, GRANT and ADMIT resulting in the credential saving in the holder's database after the ADMIT message is processed. (WebOfTrust#166)
Re-ordering some of the logic in mutlsig grant and admit request handlers to be consistent. Signed-off-by: pfeairheller <pfeairheller@gmail.com>
1 parent eb163c5 commit 781ea7a

File tree

3 files changed

+557
-154
lines changed

3 files changed

+557
-154
lines changed

src/keria/app/ipexing.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,9 @@ def sendMultisigExn(agent, hab, ked, sigs, atc, rec):
130130
raise falcon.HTTPBadRequest(description=f"invalid exn request message {serder.said}")
131131

132132
grant, _ = exchanging.cloneMessage(agent.hby, admitked['p'])
133+
if grant is None:
134+
raise falcon.HTTPBadRequest(description=f"attempt to admit an invalid grant {admitked['p']}")
135+
133136
embeds = grant.ked['e']
134137
acdc = embeds["acdc"]
135138
issr = acdc['i']
@@ -225,20 +228,13 @@ def sendMultisigExn(agent, hab, ked, sigs, atc, rec):
225228
if grant['r'] != "/ipex/grant":
226229
raise falcon.HTTPBadRequest(description=f"invalid route for embedded ipex grant {ked['r']}")
227230

228-
holder = grant['a']['i']
229-
serder = serdering.SerderKERI(sad=grant)
230-
ims = bytearray(serder.raw) + atc.encode("utf-8")
231-
agent.hby.psr.parseOne(ims=ims)
232-
agent.exchanges.append(dict(said=serder.said, pre=hab.pre, rec=holder, topic="credential"))
233-
agent.grants.append(dict(said=grant['d'], pre=hab.pre))
234-
235231
# use that data to create th Serder and Sigers for the exn
236232
serder = serdering.SerderKERI(sad=ked)
237233
sigers = [coring.Siger(qb64=sig) for sig in sigs]
238234

239235
# Now create the stream to send, need the signer seal
240-
kever = hab.kever
241-
seal = eventing.SealEvent(i=hab.pre, s="{:x}".format(kever.lastEst.s), d=kever.lastEst.d)
236+
kever = hab.mhab.kever
237+
seal = eventing.SealEvent(i=hab.mhab.pre, s="{:x}".format(kever.lastEst.s), d=kever.lastEst.d)
242238

243239
ims = eventing.messagize(serder=serder, sigers=sigers, seal=seal)
244240

@@ -247,3 +243,14 @@ def sendMultisigExn(agent, hab, ked, sigs, atc, rec):
247243
# make a copy and parse
248244
agent.hby.psr.parseOne(ims=bytearray(ims))
249245
agent.exchanges.append(dict(said=serder.said, pre=hab.pre, rec=rec, topic='credential'))
246+
holder = grant['a']['i']
247+
248+
exn, pathed = exchanging.cloneMessage(agent.hby, serder.said)
249+
if not exn:
250+
raise falcon.HTTPBadRequest(description=f"invalid exn request message {serder.said}")
251+
252+
serder = serdering.SerderKERI(sad=grant)
253+
ims = bytearray(serder.raw) + pathed['exn']
254+
agent.hby.psr.parseOne(ims=ims)
255+
agent.exchanges.append(dict(said=serder.said, pre=hab.pre, rec=holder, topic="credential"))
256+
agent.grants.append(dict(said=grant['d'], pre=hab.pre, rec=holder))

src/keria/peer/exchanging.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def on_post(req, rep, name):
5454

5555
for recp in rec: # Have to verify we already know all the recipients.
5656
if recp not in agent.hby.kevers:
57-
raise falcon.HTTPBadRequest(f"attempt to send to unknown AID={recp}")
57+
raise falcon.HTTPBadRequest(description=f"attempt to send to unknown AID={recp}")
5858

5959
# use that data to create th Serder and Sigers for the exn
6060
serder = serdering.SerderKERI(sad=ked)

0 commit comments

Comments
 (0)