Skip to content

Commit

Permalink
Missing sn in CloneCred after fix in PR #682 (#854)
Browse files Browse the repository at this point in the history
* Missing sn in CloneCred in PR 682

* correct tel sn

* add rev and rev anchor
  • Loading branch information
rodolfomiranda authored Oct 4, 2024
1 parent c9f4efb commit f3ace16
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 7 deletions.
33 changes: 27 additions & 6 deletions src/keri/vdr/viring.py
Original file line number Diff line number Diff line change
Expand Up @@ -402,11 +402,19 @@ def cloneCreds(self, saids, db):
atc = bytearray(signing.serialize(creder, prefixer, seqner, saider))
del atc[0:creder.size]

iss = bytearray(self.cloneTvtAt(creder.said))
regk = creder.regi
status = self.tevers[regk].vcState(saider.qb64)
schemer = db.schema.get(creder.schema)

iss = bytearray(self.cloneTvtAt(creder.said, sn=0))
iserder = serdering.SerderKERI(raw=iss)
issatc = bytes(iss[iserder.size:])

del iss[0:iserder.size]
if status.et in [coring.Ilks.rev, coring.Ilks.brv]:
rev = bytearray(self.cloneTvtAt(creder.said, sn=1))
rserder = serdering.SerderKERI(raw=rev)
revatc = bytes(rev[rserder.size:])
del rev[0:rserder.size]

chainSaids = []
for k, p in (creder.edge.items() if creder.edge is not None else {}):
Expand All @@ -419,15 +427,13 @@ def cloneCreds(self, saids, db):
chainSaids.append(coring.Saider(qb64=p["n"]))
chains = self.cloneCreds(chainSaids, db)

regk = creder.regi
status = self.tevers[regk].vcState(saider.qb64)
schemer = db.schema.get(creder.schema)

cred = dict(
sad=creder.sad,
atc=atc.decode("utf-8"),
iss=iserder.sad,
issatc=issatc.decode("utf-8"),
rev=rserder.sad if status.et in [coring.Ilks.rev, coring.Ilks.brv] else None,
revatc=revatc.decode("utf-8") if status.et in [coring.Ilks.rev, coring.Ilks.brv] else None,
pre=creder.issuer,
schema=schemer.sed,
chains=chains,
Expand All @@ -452,6 +458,21 @@ def cloneCreds(self, saids, db):
ancatc = bytes(anc[aserder.size:])
cred['anc'] = aserder.sad
cred['ancatc'] = ancatc.decode("utf-8"),

if status.et in [coring.Ilks.rev, coring.Ilks.brv]:
ctr = core.Counter(qb64b=rev, strip=True, gvrsn=kering.Vrsn_1_0)
if ctr.code == counting.CtrDex_1_0.AttachmentGroup:
ctr = core.Counter(qb64b=rev, strip=True, gvrsn=kering.Vrsn_1_0)

if ctr.code == counting.CtrDex_1_0.SealSourceCouples:
coring.Seqner(qb64b=rev, strip=True)
saider = coring.Saider(qb64b=rev)

anc = db.cloneEvtMsg(pre=creder.issuer, fn=0, dig=saider.qb64b)
aserder = serdering.SerderKERI(raw=anc)
ancatc = bytes(anc[aserder.size:])
cred['revanc'] = aserder.sad
cred['revancatc'] = ancatc.decode("utf-8"),

creds.append(cred)

Expand Down
14 changes: 13 additions & 1 deletion tests/vdr/test_verifying.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,8 +112,9 @@ def test_verifier(seeder):
# also try it via the cloneCreds function
creds = regery.reger.cloneCreds(saids=saider, db=hab.db)

for idx, cred in enumerate(creds):
for cred in creds:
assert dcre.sad == cred["sad"]
assert cred['rev'] is None

with pytest.raises(kering.MissingEntryError):
regery.reger.cloneCred(said="nonexistantsaid")
Expand Down Expand Up @@ -658,5 +659,16 @@ def test_verifier_chained_credential(seeder):
with pytest.raises(kering.RevokedChainError):
vicverfer.processCredential(vLeiCreder, prefixer=ian.kever.prefixer, seqner=seqner,
saider=coring.Saider(qb64=ian.kever.serder.said))

creds = ronreg.reger.cloneCreds(saids=[coring.Saider(qb64=creder.said)], db=ronHby.db)
for cred in creds:
assert cred['status']['et'] == 'rev'
assert cred['rev'] is not None
assert cred['rev']['i'] == creder.said
assert cred['revatc'] is not None
assert cred['revanc'] is not None
assert cred['revanc']['s'] == '3'
assert cred['revanc']['a'][0]['s'] == '1'
assert cred['revancatc'] is not None

"""End Test"""

0 comments on commit f3ace16

Please sign in to comment.