Skip to content

Commit 3da4438

Browse files
committed
fixed up more SerderKERI verify tests
clean up stale code in Prefixer All verify functionality of prefixer is now in SerderKERI so Prefixer is legacy.
1 parent 035d735 commit 3da4438

File tree

5 files changed

+66
-234
lines changed

5 files changed

+66
-234
lines changed

Diff for: src/keri/core/coring.py

+6-102
Original file line numberDiff line numberDiff line change
@@ -3265,126 +3265,30 @@ def _sha2_256(ser, raw):
32653265

32663266
class Prefixer(Matter):
32673267
"""
3268-
Prefixer is Matter subclass for autonomic identifier prefix using
3269-
derivation as determined by code from ked
3268+
Prefixer is Matter subclass for autonomic identifier AID prefix
32703269
32713270
Attributes:
32723271
32733272
Inherited Properties: (see Matter)
3274-
.pad is int number of pad chars given raw
3275-
.code is str derivation code to indicate cypher suite
3276-
.raw is bytes crypto material only without code
3277-
.index is int count of attached crypto material by context (receipts)
3278-
.qb64 is str in Base64 fully qualified with derivation code + crypto mat
3279-
.qb64b is bytes in Base64 fully qualified with derivation code + crypto mat
3280-
.qb2 is bytes in binary with derivation code + crypto material
3281-
.transferable is Boolean, True when transferable derivation code False otherwise
32823273
32833274
Properties:
32843275
32853276
Methods:
3286-
verify(): Verifies derivation of aid prefix from a ked
32873277
32883278
Hidden:
3289-
._pad is method to compute .pad property
3290-
._code is str value for .code property
3291-
._raw is bytes value for .raw property
3292-
._index is int value for .index property
3293-
._infil is method to compute fully qualified Base64 from .raw and .code
3294-
._exfil is method to extract .code and .raw from fully qualified Base64
3295-
"""
3296-
Dummy = "#" # dummy spaceholder char for pre. Must not be a valid Base64 char
3297-
3298-
def __init__(self, raw=None, code=None, ked=None, allows=None, **kwa):
3299-
"""
3300-
assign ._derive to derive aid prefix from ked
3301-
assign ._verify to verify derivation of aid prefix from ked
33023279
3303-
Default code is None to force EmptyMaterialError when only raw provided but
3304-
not code.
3280+
"""
33053281

3282+
def __init__(self, **kwa):
3283+
"""Checks for .code in PreDex so valid prefixive code
33063284
Inherited Parameters:
3307-
raw is bytes of unqualified crypto material usable for crypto operations
3308-
qb64b is bytes of fully qualified crypto material
3309-
qb64 is str or bytes of fully qualified crypto material
3310-
qb2 is bytes of fully qualified crypto material
3311-
code is str of derivation code
3312-
index is int of count of attached receipts for CryCntDex codes
3313-
3314-
Parameters:
3315-
allows (list): allowed codes for prefix. When None then all supported
3316-
codes are allowed. This enables a particular use case to restrict
3317-
the codes allowed to a subset of all supported.
3285+
See Matter
33183286
33193287
"""
3320-
super(Prefixer, self).__init__(raw=raw, code=code, **kwa)
3288+
super(Prefixer, self).__init__(**kwa)
33213289
if self.code not in PreDex:
33223290
raise InvalidCodeError(f"Invalid prefixer code = {self.code}.")
33233291

3324-
#if self.code in [MtrDex.Ed25519N, MtrDex.ECDSA_256r1N, MtrDex.ECDSA_256k1N]:
3325-
#self._verify = self._verify_non_transferable
3326-
#elif self.code in [MtrDex.Ed25519, MtrDex.ECDSA_256r1, MtrDex.ECDSA_256k1]:
3327-
#self._verify = self._verify_transferable
3328-
3329-
3330-
def _verify_non_transferable(self, ked, pre, prefixed=False):
3331-
"""
3332-
Returns True if verified False otherwise
3333-
Verify derivation of fully qualified Base64 pre from inception iked dict
3334-
3335-
Parameters:
3336-
ked is inception key event dict
3337-
pre is Base64 fully qualified prefix default to .qb64
3338-
"""
3339-
try:
3340-
keys = ked["k"]
3341-
if len(keys) != 1:
3342-
return False
3343-
3344-
if keys[0] != pre:
3345-
return False
3346-
3347-
if prefixed and ked["i"] != pre:
3348-
return False
3349-
3350-
if ked["n"]: # must be empty
3351-
return False
3352-
3353-
except Exception as ex:
3354-
return False
3355-
3356-
return True
3357-
3358-
3359-
3360-
def _verify_transferable(self, ked, pre, prefixed=False):
3361-
"""
3362-
Returns True if verified False otherwise
3363-
Verify derivation of fully qualified Base64 prefix from
3364-
inception key event dict (ked)
3365-
3366-
Parameters:
3367-
ked is inception key event dict
3368-
pre is Base64 fully qualified prefix default to .qb64
3369-
"""
3370-
try:
3371-
keys = ked["k"]
3372-
if len(keys) != 1:
3373-
return False
3374-
3375-
if keys[0] != pre:
3376-
return False
3377-
3378-
if prefixed and ked["i"] != pre:
3379-
return False
3380-
3381-
except Exception as ex:
3382-
return False
3383-
3384-
return True
3385-
3386-
3387-
33883292

33893293

33903294
# digest algorithm klas, digest size (not default), digest length

Diff for: src/keri/core/eventing.py

-6
Original file line numberDiff line numberDiff line change
@@ -1794,10 +1794,6 @@ def incept(self, serder, estOnly=None):
17941794

17951795

17961796
self.prefixer = Prefixer(qb64=serder.pre)
1797-
#if not self.prefixer.verify(ked=ked, prefixed=True): # invalid prefix
1798-
#raise ValidationError("Invalid prefix = {} for inception evt = {}."
1799-
#"".format(self.prefixer.qb64, ked))
1800-
#serder._verify() redundant serder.__init__ defaults to verify
18011797
self.serder = serder # need whole serder for digest agility comparisons
18021798

18031799
ndigs = serder.ndigs # ked["n"]
@@ -1945,7 +1941,6 @@ def update(self, serder, sigers, wigers=None, delseqner=None, delsaider=None,
19451941

19461942
# nxt and signatures verify so update state
19471943
self.sner = sner # sequence number Number instance
1948-
#serder._verify() redundant serder.__init__ defaults to verify
19491944
self.serder = serder # need whole serder for digest agility compare
19501945
self.ilk = ilk
19511946
self.tholder = tholder
@@ -2006,7 +2001,6 @@ def update(self, serder, sigers, wigers=None, delseqner=None, delsaider=None,
20062001

20072002
# validates so update state
20082003
self.sner = sner # sequence number Number instance
2009-
#serder._verify() redundant serder.__init__ defaults to verify
20102004
self.serder = serder # need for digest agility includes .serder.diger
20112005
self.ilk = ilk
20122006
if fn is not None: # first is non-idempotent for fn check mode fn is None

Diff for: src/keri/core/serdering.py

+31-2
Original file line numberDiff line numberDiff line change
@@ -1569,6 +1569,29 @@ class SerderKERI(Serder):
15691569
Proto = Protocols.keri # default protocol type
15701570

15711571

1572+
# can't do this override as is because would have to then redo the saidive field
1573+
# calculation. To do that would have to first extract the saidive calculations from
1574+
# both makify and verify into hidden method called ._saidify and then recall
1575+
# ._saidify in order to change defaults via an override
1576+
1577+
#def makify(self, **kwa):
1578+
#"""Makify given sad dict makes the versions
1579+
#Override for ilk and pre specific defaults
1580+
#"""
1581+
#super(SerderKERI, self).makify(**kwa) # all properties now setup
1582+
1583+
#if self.ilk in (Ilks.icp, Ilks.dip) and self.pre: # inceptive with pre
1584+
#try:
1585+
#code = Matter(qb64=self.pre).code
1586+
#except Exception as ex:
1587+
#raise ValidationError(f"Invalid identifier prefix = "
1588+
#f"{self.pre}.") from ex
1589+
1590+
#if code in PreNonDigDex:
1591+
#if not self.keys:
1592+
#self._sad['k'] = [self.pre] # default for non digestive prefix
1593+
#self._sad['kt'] = '1'
1594+
15721595

15731596
def _verify(self, **kwa):
15741597
"""Verifies said(s) in sad against raw
@@ -1610,8 +1633,14 @@ def _verify(self, **kwa):
16101633
if self.ilk in (Ilks.icp, Ilks.dip): # inceptive event
16111634
if code in PreNonDigDex:
16121635
if len(self.keys) != 1:
1613-
raise ValidationError(f"Invalid keys for non-digestive "
1614-
f"prefix {code=}.")
1636+
raise ValidationError(f"Invalid keys = {self.keys} "
1637+
"for non-digestive prefix "
1638+
f"{code=}.")
1639+
1640+
if self.tholder.sith != '1':
1641+
raise ValidationError(f"Invalid signing threshold ="
1642+
f" {self.tholder.sith} for "
1643+
f"non-digestive prefix {code=}.")
16151644

16161645
if self.pre != self.keys[0]:
16171646
raise ValidationError(f"Mismatch prefix = {self.pre} and"

Diff for: src/keri/vdr/eventing.py

-1
Original file line numberDiff line numberDiff line change
@@ -834,7 +834,6 @@ def incept(self, serder):
834834
raise ValidationError("Invalid toad = {} for baks = {} for evt = {}."
835835
"".format(toad, baks, ked))
836836
self.toad = toad
837-
#serder._verify() redundant serder.__init__ defaults to verify
838837
self.serder = serder
839838

840839
def config(self, serder, noBackers=None, estOnly=None):

0 commit comments

Comments
 (0)