diff --git a/src/keri/core/coring.py b/src/keri/core/coring.py index 01d332bbc..cf4e31abd 100644 --- a/src/keri/core/coring.py +++ b/src/keri/core/coring.py @@ -4681,12 +4681,12 @@ class CounterCodex: SealSourceCouples: str = '-G' # Composed Base64 couple, snu+dig of given delegator/issuer/transaction event TransLastIdxSigGroups: str = '-H' # Composed Base64 Group, pre+ControllerIdxSigs group. SealSourceTriples: str = '-I' # Composed Base64 triple, pre+snu+dig of anchoring source event - SadPathSig: str = '-J' # Composed Base64 Group path+TransIdxSigGroup of SAID of content - SadPathSigGroup: str = '-K' # Composed Base64 Group, root(path)+SaidPathCouples - PathedMaterialQuadlets: str = '-L' # Composed Grouped Pathed Material Quadlet (4 char each) - AttachedMaterialQuadlets: str = '-V' # Composed Grouped Attached Material Quadlet (4 char each) - BigAttachedMaterialQuadlets: str = '-0V' # Composed Grouped Attached Material Quadlet (4 char each) - KERIProtocolStack: str = '--AAA' # KERI ACDC Protocol Stack CESR Version + SadPathSigGroups: str = '-J' # Composed Base64 Group path+TransIdxSigGroup of SAID of content + RootSadPathSigGroups: str = '-K' # Composed Base64 Group, root(path)+SaidPathCouples + PathedMaterialGroup: str = '-L' # Composed Grouped Pathed Material Quadlet (4 char each) + AttachmentGroup: str = '-V' # Composed Grouped Attached Material Quadlet (4 char each) + BigAttachmentGroup: str = '-0V' # Composed Grouped Attached Material Quadlet (4 char each) + KERIACDCGenusVersion: str = '--AAA' # KERI ACDC Protocol Stack CESR Version def __iter__(self): return iter(astuple(self)) # enables inclusion test with "in" diff --git a/src/keri/core/counting.py b/src/keri/core/counting.py index be60e8d7c..893b4c1c4 100644 --- a/src/keri/core/counting.py +++ b/src/keri/core/counting.py @@ -85,7 +85,6 @@ class CounterCodex_1_0(MapCodex): Only provide defined codes. Undefined are left out so that inclusion(exclusion) via 'in' operator works. """ - ControllerIdxSigs: str = '-A' # Qualified Base64 Indexed Signature. WitnessIdxSigs: str = '-B' # Qualified Base64 Indexed Signature. NonTransReceiptCouples: str = '-C' # Composed Base64 Couple, pre+cig. @@ -95,12 +94,13 @@ class CounterCodex_1_0(MapCodex): SealSourceCouples: str = '-G' # Composed Base64 couple, snu+dig of given delegator/issuer/transaction event TransLastIdxSigGroups: str = '-H' # Composed Base64 Group, pre+ControllerIdxSigs group. SealSourceTriples: str = '-I' # Composed Base64 triple, pre+snu+dig of anchoring source event - SadPathSig: str = '-J' # Composed Base64 Group path+TransIdxSigGroup of SAID of content - SadPathSigGroup: str = '-K' # Composed Base64 Group, root(path)+SaidPathCouples - PathedMaterialQuadlets: str = '-L' # Composed Grouped Pathed Material Quadlet (4 char each) - AttachedMaterialQuadlets: str = '-V' # Composed Grouped Attached Material Quadlet (4 char each) - BigAttachedMaterialQuadlets: str = '-0V' # Composed Grouped Attached Material Quadlet (4 char each) - KERIProtocolStack: str = '--AAA' # KERI ACDC Protocol Stack CESR Version + SadPathSigGroups: str = '-J' # Composed Base64 Group path+TransIdxSigGroup of SAID of content + RootSadPathSigGroups: str = '-K' # Composed Base64 Group, root(path)+SaidPathCouples + PathedMaterialGroup: str = '-L' # Composed Grouped Pathed Material Quadlet (4 char each) + AttachmentGroup: str = '-V' # Composed Grouped Attached Material Quadlet (4 char each) + BigAttachmentGroup: str = '-0V' # Composed Grouped Attached Material Quadlet (4 char each) + KERIACDCGenusVersion: str = '--AAA' # KERI ACDC Protocol Stack CESR Version + def __iter__(self): return iter(astuple(self)) # enables value not key inclusion test with "in" @@ -114,22 +114,59 @@ class CounterCodex_2_0(MapCodex): Only provide defined codes. Undefined are left out so that inclusion(exclusion) via 'in' operator works. """ + GenericGroup: str = '-A' # Generic Group (Universal with Override). + BigGenericGroup: str = '-0A' # Big Generic Group (Universal with Override). + MessageGroup: str = '-B' # Message Body plus Attachments Group (Universal with Override). + BigMessageGroup: str = '-0B' # Big Message Body plus Attachments Group (Universal with Override). + AttachmentGroup: str = '-C' # Message Attachments Only Group (Universal with Override). + BigAttachmentGroup: str = '-0C' # Big Attachments Only Group (Universal with Override). + DatagramSegmentGroup: str = '-D' # Datagram Segment Group (Universal). + BigDatagramSegmentGroup: str = '-0D' # Big Datagram Segment Group (Universal). + ESSRWrapperGroup: str = '-E' # ESSR Wrapper Group (Universal). + BigESSRWrapperGroup: str = '-0E' # Big ESSR Wrapper Group (Universal). + FixedMessageBodyGroup: str = '-F' # Fixed Field Message Body Group (Universal). + BigFixedMessageBodyGroup: str = '-0F' # Big Fixed Field Message Body Group (Universal). + MapMessageBodyGroup: str = '-G' # Field Map Message Body Group (Universal). + BigMapMessageBodyGroup: str = '-0G' # Big Field Map Message Body Group (Universal). + GenericMapGroup: str = '-H' # Generic Field Map Group (Universal). + BigGenericMapGroup: str = '-0H' # Big Generic Field Map Group (Universal). + GenericListGroup: str = '-L' # Generic List Group (Universal). + BigGenericListGroup: str = '-0L' # Big Generic List Group (Universal). + ControllerIdxSigs: str = '-J' # Controller Indexed Signature(s) of qb64. + BigControllerIdxSigs: str = '-0J' # Big Controller Indexed Signature(s) of qb64. + WitnessIdxSigs: str = '-K' # Witness Indexed Signature(s) of qb64. + BigWitnessIdxSigs: str = '-0K' # Big Witness Indexed Signature(s) of qb64. + NonTransReceiptCouples: str = '-L' # NonTrans Receipt Couple(s), pre+cig. + BigNonTransReceiptCouples: str = '-0L' # Big NonTrans Receipt Couple(s), pre+cig. + TransReceiptQuadruples: str = '-M' # Trans Receipt Quadruple(s), pre+snu+dig+sig. + BigTransReceiptQuadruples: str = '-0M' # Big Trans Receipt Quadruple(s), pre+snu+dig+sig. + FirstSeenReplayCouples: str = '-N' # First Seen Replay Couple(s), fnu+dts. + BigFirstSeenReplayCouples: str = '-0N' # First Seen Replay Couple(s), fnu+dts. + TransIdxSigGroups: str = '-O' # Trans Indexed Signature Group(s), pre+snu+dig+ControllerIdxSigs of qb64. + TransIdxSigGroups: str = '-0O' # Big Trans Indexed Signature Group(s), pre+snu+dig+ControllerIdxSigs of qb64. + TransLastIdxSigGroups: str = '-P' # Trans Last Est Evt Indexed Signature Group(s), pre+ControllerIdxSigs of qb64. + BigTransLastIdxSigGroups: str = '-0P' # Big Trans Last Est Evt Indexed Signature Group(s), pre+ControllerIdxSigs of qb64. + SealSourceCouples: str = '-Q' # Seal Source Couple(s), snu+dig of source sealing or sealed event. + BigSealSourceCouples: str = '-0Q' # Seal Source Couple(s), snu+dig of source sealing or sealed event. + SealSourceTriples: str = '-R' # Seal Source Triple(s), pre+snu+dig of source sealing or sealed event. + BigSealSourceTriples: str = '-0R' # Seal Source Triple(s), pre+snu+dig of source sealing or sealed event. + PathedMaterialGroup: str = '-S' # Pathed Material Group. + BigPathedMaterialGroup: str = '-0S' # Big Pathed Material Group. + SadPathSigGroups: str = '-T' # SAD Path Group(s) sadpath+TransIdxSigGroup(s) of SAID qb64 of content. + BigSadPathSigGroups: str = '-0T' # Big SAD Path Group(s) sadpath+TransIdxSigGroup(s) of SAID qb64 of content. + RootSadPathSigGroups: str = '-U' # Root Path SAD Path Group(s), rootpath+SadPathGroup(s). + BigRootSadPathSigGroups: str = '-0U' # Big Root Path SAD Path Group(s), rootpath+SadPathGroup(s). + DigestSealSingles: str = '-V' # Digest Seal Single(s), dig of sealed data. + BigDigestSealSingles: str = '-0V' # Big Digest Seal Single(s), dig of sealed data. + MerkleRootSealSingles: str = '-W' # Merkle Tree Root Digest Seal Single(s), dig of sealed data. + BigMerkleRootSealSingles: str = '-0W' # Merkle Tree Root Digest Seal Single(s), dig of sealed data. + BackerRegistrarSealCouples: str = '-X' # Backer Registrar Seal Couple(s), brid+dig of sealed data. + BigBackerRegistrarSealCouples: str = '-0X' # Big Backer Registrar Seal Couple(s), brid+dig of sealed data. + ESSRPayloadGroup: str = '-Z' # ESSR Payload Group. + BigESSRPayloadGroup: str = '-0Z' # Big ESSR Payload Group. + KERIACDCGenusVersion: str = '--AAA' # KERI ACDC Stack CESR Protocol Genus Version (Universal) + - ControllerIdxSigs: str = '-A' # Qualified Base64 Indexed Signature. - WitnessIdxSigs: str = '-B' # Qualified Base64 Indexed Signature. - NonTransReceiptCouples: str = '-C' # Composed Base64 Couple, pre+cig. - TransReceiptQuadruples: str = '-D' # Composed Base64 Quadruple, pre+snu+dig+sig. - FirstSeenReplayCouples: str = '-E' # Composed Base64 Couple, fnu+dts. - TransIdxSigGroups: str = '-F' # Composed Base64 Group, pre+snu+dig+ControllerIdxSigs group. - SealSourceCouples: str = '-G' # Composed Base64 couple, snu+dig of given delegator/issuer/transaction event - TransLastIdxSigGroups: str = '-H' # Composed Base64 Group, pre+ControllerIdxSigs group. - SealSourceTriples: str = '-I' # Composed Base64 triple, pre+snu+dig of anchoring source event - SadPathSig: str = '-J' # Composed Base64 Group path+TransIdxSigGroup of SAID of content - SadPathSigGroup: str = '-K' # Composed Base64 Group, root(path)+SaidPathCouples - PathedMaterialQuadlets: str = '-L' # Composed Grouped Pathed Material Quadlet (4 char each) - AttachedMaterialQuadlets: str = '-V' # Composed Grouped Attached Material Quadlet (4 char each) - BigAttachedMaterialQuadlets: str = '-0V' # Composed Grouped Attached Material Quadlet (4 char each) - KERIProtocolStack: str = '--AAA' # KERI ACDC Protocol Stack CESR Version def __iter__(self): return iter(astuple(self)) # enables value not key inclusion test with "in" @@ -164,56 +201,11 @@ def __iter__(self): Tagage_2_0 = namedtuple("Tagage_2_0", list(Codict2), defaults=list(Codict2)) Tags_2_0 = Tagage_2_0() # uses defaults -CodictAll = Codict1 | Codict2 +CodictAll = Codict2 | Codict1 AllTagage = namedtuple("AllTagage", list(CodictAll), defaults=list(CodictAll)) AllTags = AllTagage() # uses defaults -""" -Design Notes - -Need sizes by version can assume only support KERI/ACDC Genus so do not -need to support different protocol genera in Counting -Hards and Bards are the same for both versions - -Need to pass in version so Counter Instance knows what version to use -simpler than Serder since version is not provided in version string -Each instance when created needs to get its version at init - -So Sizes in dictionary indexed by version. - -CtrDex Codex itself is not referenced inside Counter but by external classes -making instances so use CtrDex to pass in code. So we need versioned codex - -one option is to have different dataclasses with each version codex and then -have dictionary Codex of those indexed by version as class variable. - -Another option is to have code name index that is indexed by version -so the actual code is looked up for the version instead of passing in the code -itself which requires dereferencing with the version so the version gets used -twice. Also need to reverse code and version to get codename as property - -codename = label or tag. use tag for code tag - - -Counter(codename=, verion=) - -When using code not tag then must check against version to make sure code is -a valid code for version. Likewise a tag may not have a code for a given version - -So tags are strings that can be attribute names for dataclasses -Tags is namedtuple where each attribute value is its key so one can look up the -string by the tag - -But given string value for tag then to lookup code in codex need to to use -builtin getattr - -Instead maybe we just extend the codex dataclass with .__getitem__ .__setitem__ and .__delitem__ methods -so we can access a code by its tag using Codex[tag] - - -""" - class Counter: """ Counter is fully qualified cryptographic material primitive base class for @@ -224,11 +216,11 @@ class Counter: Includes the following attributes and properties: Class Attributes: - Codes - Tags - Hards - Bards - Sizes + Codes (dict): of codexes keyed by version + Tags (dict): of tagages keyed by version + Hards (dict): of hard code sizes keyed by selector text + Bards (dict): of hard code sizes keyed by selector binary + Sizes (dict): of Sizages keyed by hard code Attributes: @@ -279,39 +271,75 @@ class Counter: { Vrsn_1_0: \ { - '-A': Sizage(hs=2, ss=2, fs=4, ls=0), - '-B': Sizage(hs=2, ss=2, fs=4, ls=0), - '-C': Sizage(hs=2, ss=2, fs=4, ls=0), - '-D': Sizage(hs=2, ss=2, fs=4, ls=0), - '-E': Sizage(hs=2, ss=2, fs=4, ls=0), - '-F': Sizage(hs=2, ss=2, fs=4, ls=0), - '-G': Sizage(hs=2, ss=2, fs=4, ls=0), - '-H': Sizage(hs=2, ss=2, fs=4, ls=0), - '-I': Sizage(hs=2, ss=2, fs=4, ls=0), - '-J': Sizage(hs=2, ss=2, fs=4, ls=0), - '-K': Sizage(hs=2, ss=2, fs=4, ls=0), - '-L': Sizage(hs=2, ss=2, fs=4, ls=0), - '-V': Sizage(hs=2, ss=2, fs=4, ls=0), - '-0V': Sizage(hs=3, ss=5, fs=8, ls=0), - '--AAA': Sizage(hs=5, ss=3, fs=8, ls=0), + '-A': Sizage(hs=2, ss=2, fs=4, ls=0), + '-B': Sizage(hs=2, ss=2, fs=4, ls=0), + '-C': Sizage(hs=2, ss=2, fs=4, ls=0), + '-D': Sizage(hs=2, ss=2, fs=4, ls=0), + '-E': Sizage(hs=2, ss=2, fs=4, ls=0), + '-F': Sizage(hs=2, ss=2, fs=4, ls=0), + '-G': Sizage(hs=2, ss=2, fs=4, ls=0), + '-H': Sizage(hs=2, ss=2, fs=4, ls=0), + '-I': Sizage(hs=2, ss=2, fs=4, ls=0), + '-J': Sizage(hs=2, ss=2, fs=4, ls=0), + '-K': Sizage(hs=2, ss=2, fs=4, ls=0), + '-L': Sizage(hs=2, ss=2, fs=4, ls=0), + '-V': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0V': Sizage(hs=3, ss=5, fs=8, ls=0), + '--AAA': Sizage(hs=5, ss=3, fs=8, ls=0), }, Vrsn_2_0: \ { - '-A': Sizage(hs=2, ss=2, fs=4, ls=0), - '-B': Sizage(hs=2, ss=2, fs=4, ls=0), - '-C': Sizage(hs=2, ss=2, fs=4, ls=0), - '-D': Sizage(hs=2, ss=2, fs=4, ls=0), - '-E': Sizage(hs=2, ss=2, fs=4, ls=0), - '-F': Sizage(hs=2, ss=2, fs=4, ls=0), - '-G': Sizage(hs=2, ss=2, fs=4, ls=0), - '-H': Sizage(hs=2, ss=2, fs=4, ls=0), - '-I': Sizage(hs=2, ss=2, fs=4, ls=0), - '-J': Sizage(hs=2, ss=2, fs=4, ls=0), - '-K': Sizage(hs=2, ss=2, fs=4, ls=0), - '-L': Sizage(hs=2, ss=2, fs=4, ls=0), - '-V': Sizage(hs=2, ss=2, fs=4, ls=0), - '-0V': Sizage(hs=3, ss=5, fs=8, ls=0), - '--AAA': Sizage(hs=5, ss=3, fs=8, ls=0), + '-A': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0A': Sizage(hs=3, ss=5, fs=8, ls=0), + '-B': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0B': Sizage(hs=3, ss=5, fs=8, ls=0), + '-C': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0C': Sizage(hs=3, ss=5, fs=8, ls=0), + '-D': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0D': Sizage(hs=3, ss=5, fs=8, ls=0), + '-E': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0E': Sizage(hs=3, ss=5, fs=8, ls=0), + '-F': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0F': Sizage(hs=3, ss=5, fs=8, ls=0), + '-G': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0G': Sizage(hs=3, ss=5, fs=8, ls=0), + '-H': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0H': Sizage(hs=3, ss=5, fs=8, ls=0), + '-I': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0I': Sizage(hs=3, ss=5, fs=8, ls=0), + '-J': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0J': Sizage(hs=3, ss=5, fs=8, ls=0), + '-K': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0K': Sizage(hs=3, ss=5, fs=8, ls=0), + '-L': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0L': Sizage(hs=3, ss=5, fs=8, ls=0), + '-M': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0M': Sizage(hs=3, ss=5, fs=8, ls=0), + '-N': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0N': Sizage(hs=3, ss=5, fs=8, ls=0), + '-O': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0O': Sizage(hs=3, ss=5, fs=8, ls=0), + '-P': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0P': Sizage(hs=3, ss=5, fs=8, ls=0), + '-Q': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0Q': Sizage(hs=3, ss=5, fs=8, ls=0), + '-R': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0R': Sizage(hs=3, ss=5, fs=8, ls=0), + '-S': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0S': Sizage(hs=3, ss=5, fs=8, ls=0), + '-T': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0T': Sizage(hs=3, ss=5, fs=8, ls=0), + '-U': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0U': Sizage(hs=3, ss=5, fs=8, ls=0), + '-V': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0V': Sizage(hs=3, ss=5, fs=8, ls=0), + '-W': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0W': Sizage(hs=3, ss=5, fs=8, ls=0), + '-X': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0X': Sizage(hs=3, ss=5, fs=8, ls=0), + '-Y': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0Y': Sizage(hs=3, ss=5, fs=8, ls=0), + '--AAA': Sizage(hs=5, ss=3, fs=8, ls=0), }, } @@ -363,21 +391,33 @@ def __init__(self, tag=None, *, code = None, count=None, countB64=None, raise kering.InvalidCodeError(f"Unsupported {tag=}.") code = self._codes[tag] - if code is not None: # code provided - if code not in self._sizes: - raise kering.InvalidCodeError("Unsupported code={}.".format(code)) + if code is not None: # code (hard) provided + if code not in self._sizes or len(code) < 2: + raise kering.InvalidCodeError(f"Unsupported {code=}.") hs, ss, fs, ls = self._sizes[code] # get sizes for code cs = hs + ss # both hard + soft code size - if fs != cs or cs % 4: # fs must be bs and multiple of 4 for count codes - raise kering.InvalidCodeSizeError("Whole code size not full size or not " - "multiple of 4. cs={} fs={}.".format(cs, fs)) + if hs < 2 or fs != cs or cs % 4: # fs must be bs and multiple of 4 for count codes + raise kering.InvalidCodeSizeError(f"Whole code size not full " + f"size or not multiple of 4. " + f"{cs=} {fs=}.") if count is None: count = 1 if countB64 is None else b64ToInt(countB64) + if code[1] not in ("123456789-_"): # small [A-Z,a-z] or large [0] + if ss not in (2, 5): # not valid dynamic soft sizes + raise kering.InvalidVarIndexError(f"Invalid {ss=} " + f"for {code=}.") + # dynamically promote code based on count + if code[1] != '0' and count > (64 ** 2 - 1): # small code but large count + # elevate code due to large count + code = f"-0{code[1]}" # promote hard + ss = 5 + if count < 0 or count > (64 ** ss - 1): - raise kering.InvalidVarIndexError("Invalid count={} for code={}.".format(count, code)) + raise kering.InvalidVarIndexError(f"Invalid {count=} for " + f"{code=} with {ss=}.") self._code = code self._count = count @@ -570,7 +610,7 @@ def _infil(self): hs, ss, fs, ls = self._sizes[code] cs = hs + ss # both hard + soft size - if fs != cs or cs % 4: # fs must be bs and multiple of 4 for count codes + if hs < 2 or fs != cs or cs % 4: # hs >=2 fs must be bs and multiple of 4 for count codes raise kering.InvalidCodeSizeError("Whole code size not full size or not " "multiple of 4. cs={} fs={}.".format(cs, fs)) if count < 0 or count > (64 ** ss - 1): @@ -598,7 +638,7 @@ def _binfil(self): hs, ss, fs, ls = self._sizes[code] cs = hs + ss - if fs != cs or cs % 4: # fs must be cs and multiple of 4 for count codes + if hs < 2 or fs != cs or cs % 4: # hs >= 2 fs must be cs and multiple of 4 for count codes raise kering.InvalidCodeSizeError("Whole code size not full size or not " "multiple of 4. cs={} fs={}.".format(cs, fs)) diff --git a/src/keri/core/eventing.py b/src/keri/core/eventing.py index dda7479fa..e501c0844 100644 --- a/src/keri/core/eventing.py +++ b/src/keri/core/eventing.py @@ -1429,7 +1429,7 @@ def messagize(serder, *, sigers=None, seal=None, wigers=None, cigars=None, if len(atc) % 4: raise ValueError("Invalid attachments size={}, nonintegral" " quadlets.".format(len(atc))) - msg.extend(Counter(code=CtrDex.AttachedMaterialQuadlets, + msg.extend(Counter(code=CtrDex.AttachmentGroup, count=(len(atc) // 4)).qb64b) msg.extend(atc) @@ -1461,7 +1461,7 @@ def proofize(sadtsgs=None, *, sadsigers=None, sadcigars=None, pipelined=False): count = 0 for (pather, sigers) in sadsigers: count += 1 - atc.extend(coring.Counter(coring.CtrDex.SadPathSig, count=1).qb64b) + atc.extend(coring.Counter(coring.CtrDex.SadPathSigGroups, count=1).qb64b) atc.extend(pather.qb64b) atc.extend(coring.Counter(code=coring.CtrDex.ControllerIdxSigs, count=len(sigers)).qb64b) @@ -1470,7 +1470,7 @@ def proofize(sadtsgs=None, *, sadsigers=None, sadcigars=None, pipelined=False): for (pather, prefixer, seqner, saider, sigers) in sadtsgs: count += 1 - atc.extend(coring.Counter(coring.CtrDex.SadPathSig, count=1).qb64b) + atc.extend(coring.Counter(coring.CtrDex.SadPathSigGroups, count=1).qb64b) atc.extend(pather.qb64b) atc.extend(coring.Counter(coring.CtrDex.TransIdxSigGroups, count=1).qb64b) @@ -1484,7 +1484,7 @@ def proofize(sadtsgs=None, *, sadsigers=None, sadcigars=None, pipelined=False): for (pather, cigars) in sadcigars: count += 1 - atc.extend(coring.Counter(coring.CtrDex.SadPathSig, count=1).qb64b) + atc.extend(coring.Counter(coring.CtrDex.SadPathSigGroups, count=1).qb64b) atc.extend(pather.qb64b) atc.extend(coring.Counter(code=coring.CtrDex.NonTransReceiptCouples, count=len(sadcigars)).qb64b) @@ -1501,12 +1501,12 @@ def proofize(sadtsgs=None, *, sadsigers=None, sadcigars=None, pipelined=False): if len(atc) % 4: raise ValueError("Invalid attachments size={}, nonintegral" " quadlets.".format(len(atc))) - msg.extend(coring.Counter(code=coring.CtrDex.AttachedMaterialQuadlets, + msg.extend(coring.Counter(code=coring.CtrDex.AttachmentGroup, count=(len(atc) // 4)).qb64b) if count > 1: root = coring.Pather(bext="-") - msg.extend(coring.Counter(code=coring.CtrDex.SadPathSigGroup, count=count).qb64b) + msg.extend(coring.Counter(code=coring.CtrDex.RootSadPathSigGroups, count=count).qb64b) msg.extend(root.qb64b) msg.extend(atc) diff --git a/src/keri/core/parsing.py b/src/keri/core/parsing.py index 3a72354ea..691b8accf 100644 --- a/src/keri/core/parsing.py +++ b/src/keri/core/parsing.py @@ -139,7 +139,7 @@ def _sadPathSigGroup(self, ctr, ims, root=None, cold=Colds.txt, pipelined=False) Returns: """ - if ctr.code != CtrDex.SadPathSig: + if ctr.code != CtrDex.SadPathSigGroups: raise kering.UnexpectedCountCodeError("Wrong " "count code={}.Expected code={}." "".format(ctr.code, CtrDex.ControllerIdxSigs)) @@ -732,7 +732,7 @@ def msgParsator(self, ims=None, framed=True, pipeline=False, cold = sniff(ims) # expect counter at front of attachments if cold != Colds.msg: # not new message so process attachments ctr = yield from self._extractor(ims=ims, klas=Counter, cold=cold) - if ctr.code == CtrDex.AttachedMaterialQuadlets: # pipeline ctr? + if ctr.code == CtrDex.AttachmentGroup: # pipeline ctr? pipelined = True # compute pipelined attached group size based on txt or bny pags = ctr.count * 4 if cold == Colds.txt else ctr.count * 3 @@ -901,7 +901,7 @@ def msgParsator(self, ims=None, framed=True, pipeline=False, abort=pipelined) ssts.append((prefixer, seqner, saider)) - elif ctr.code == CtrDex.SadPathSigGroup: + elif ctr.code == CtrDex.SadPathSigGroups: path = yield from self._extractor(ims, klas=Pather, cold=cold, @@ -921,7 +921,7 @@ def msgParsator(self, ims=None, framed=True, pipeline=False, else: sadcigs.append(sigs) - elif ctr.code == CtrDex.SadPathSig: + elif ctr.code == CtrDex.SadPathSigGroups: for code, sigs in self._sadPathSigGroup(ctr=ctr, ims=ims, cold=cold, @@ -931,7 +931,7 @@ def msgParsator(self, ims=None, framed=True, pipeline=False, else: sadcigs.append(sigs) - elif ctr.code == CtrDex.PathedMaterialQuadlets: # pathed ctr? + elif ctr.code == CtrDex.PathedMaterialGroup: # pathed ctr? # compute pipelined attached group size based on txt or bny pags = ctr.count * 4 if cold == Colds.txt else ctr.count * 3 while len(ims) < pags: # wait until rx full pipelned group diff --git a/src/keri/db/basing.py b/src/keri/db/basing.py index 99f52c871..d8bf0039e 100644 --- a/src/keri/db/basing.py +++ b/src/keri/db/basing.py @@ -1421,7 +1421,7 @@ def cloneEvtMsg(self, pre, fn, dig): if len(atc) % 4: raise ValueError("Invalid attachments size={}, nonintegral" " quadlets.".format(len(atc))) - pcnt = coring.Counter(code=coring.CtrDex.AttachedMaterialQuadlets, + pcnt = coring.Counter(code=coring.CtrDex.AttachmentGroup, count=(len(atc) // 4)).qb64b msg.extend(pcnt) msg.extend(atc) diff --git a/src/keri/peer/exchanging.py b/src/keri/peer/exchanging.py index fc1b3c234..570e1492d 100644 --- a/src/keri/peer/exchanging.py +++ b/src/keri/peer/exchanging.py @@ -318,7 +318,7 @@ def exchange(route, pather = coring.Pather(path=["e", label]) pathed.extend(pather.qb64b) pathed.extend(atc) - end.extend(coring.Counter(code=coring.CtrDex.PathedMaterialQuadlets, + end.extend(coring.Counter(code=coring.CtrDex.PathedMaterialGroup, count=(len(pathed) // 4)).qb64b) end.extend(pathed) @@ -411,7 +411,7 @@ def serializeMessage(hby, said, pipelined=False): # Smash the pathed components on the end for p in hby.db.epath.get(keys=(exn.said,)): - atc.extend(coring.Counter(code=coring.CtrDex.PathedMaterialQuadlets, + atc.extend(coring.Counter(code=coring.CtrDex.PathedMaterialGroup, count=(len(p) // 4)).qb64b) atc.extend(p.encode("utf-8")) @@ -421,7 +421,7 @@ def serializeMessage(hby, said, pipelined=False): if len(atc) % 4: raise ValueError("Invalid attachments size={}, nonintegral" " quadlets.".format(len(atc))) - msg.extend(coring.Counter(code=coring.CtrDex.AttachedMaterialQuadlets, + msg.extend(coring.Counter(code=coring.CtrDex.AttachmentGroup, count=(len(atc) // 4)).qb64b) msg.extend(atc) diff --git a/src/keri/vdr/viring.py b/src/keri/vdr/viring.py index 96eec603a..91b11317e 100644 --- a/src/keri/vdr/viring.py +++ b/src/keri/vdr/viring.py @@ -440,7 +440,7 @@ def cloneCreds(self, saids, db): ) ctr = coring.Counter(qb64b=iss, strip=True) - if ctr.code == coring.CtrDex.AttachedMaterialQuadlets: + if ctr.code == coring.CtrDex.AttachmentGroup: ctr = coring.Counter(qb64b=iss, strip=True) if ctr.code == coring.CtrDex.SealSourceCouples: @@ -541,7 +541,7 @@ def cloneTvt(self, pre, dig): if len(atc) % 4: raise ValueError("Invalid attachments size={}, nonintegral" " quadlets.".format(len(atc))) - pcnt = coring.Counter(code=coring.CtrDex.AttachedMaterialQuadlets, + pcnt = coring.Counter(code=coring.CtrDex.AttachmentGroup, count=(len(atc) // 4)).qb64b msg.extend(pcnt) msg.extend(atc) @@ -1009,7 +1009,7 @@ def messagize(creder, proof): if len(proof) % 4: raise ValueError("Invalid attachments size={}, nonintegral" " quadlets.".format(len(proof))) - craw.extend(coring.Counter(code=coring.CtrDex.AttachedMaterialQuadlets, + craw.extend(coring.Counter(code=coring.CtrDex.AttachmentGroup, count=(len(proof) // 4)).qb64b) craw.extend(proof) diff --git a/tests/core/test_coring.py b/tests/core/test_coring.py index 41d089606..fd65daf67 100644 --- a/tests/core/test_coring.py +++ b/tests/core/test_coring.py @@ -2159,41 +2159,14 @@ def test_counter(): 'SealSourceCouples': '-G', 'TransLastIdxSigGroups': '-H', 'SealSourceTriples': '-I', - 'SadPathSig': '-J', - 'SadPathSigGroup': '-K', - 'PathedMaterialQuadlets': '-L', - 'AttachedMaterialQuadlets': '-V', - 'BigAttachedMaterialQuadlets': '-0V', - 'KERIProtocolStack': '--AAA', + 'SadPathSigGroups': '-J', + 'RootSadPathSigGroups': '-K', + 'PathedMaterialGroup': '-L', + 'AttachmentGroup': '-V', + 'BigAttachmentGroup': '-0V', + 'KERIACDCGenusVersion': '--AAA', } - # new version 2 - #assert dataclasses.asdict(CtrDex) == { - #'ControllerIdxSigs': '-A', - #'WitnessIdxSigs': '-B', - #'NonTransReceiptCouples': '-C', - #'TransReceiptQuadruples': '-D', - #'FirstSeenReplayCouples': '-E', - #'TransIdxSigGroups': '-F', - #'SealSourceCouples': '-G', - #'TransLastIdxSigGroups': '-H', - #'SealSourceTriples': '-I', - #'SadPathSig': '-J', - #'SadPathSigGroup': '-K', - #'PathedMaterialQuadlets': '-L', - #'MessageDataGroups': '-U', - #'AttachedMaterialQuadlets': '-V', - #'MessageDataMaterialQuadlets': '-W', - #'CombinedMaterialQuadlets': '-X', - #'MaterialGroups': '-Y', - #'MaterialQuadlets': '-Z', - #'BigMessageDataGroups': '-0U', - #'BigAttachedMaterialQuadlets': '-0V', - #'BigMessageDataMaterialQuadlets': '-0W', - #'BigCombinedMaterialQuadlets': '-0X', - #'BigMaterialGroups': '-0Y', - #'BigMaterialQuadlets': '-0Z' - #} assert CtrDex.ControllerIdxSigs == '-A' assert CtrDex.WitnessIdxSigs == '-B' @@ -2345,34 +2318,34 @@ def test_counter(): # test with big codes index=1024 count = 1024 - qsc = CtrDex.BigAttachedMaterialQuadlets + intToB64(count, l=5) + qsc = CtrDex.BigAttachmentGroup + intToB64(count, l=5) assert qsc == '-0VAAAQA' qscb = qsc.encode("utf-8") qscb2 = decodeB64(qscb) - counter = Counter(code=CtrDex.BigAttachedMaterialQuadlets, count=count) - assert counter.code == CtrDex.BigAttachedMaterialQuadlets + counter = Counter(code=CtrDex.BigAttachmentGroup, count=count) + assert counter.code == CtrDex.BigAttachmentGroup assert counter.count == count assert counter.qb64b == qscb assert counter.qb64 == qsc assert counter.qb2 == qscb2 counter = Counter(qb64b=qscb) # test with bytes not str - assert counter.code == CtrDex.BigAttachedMaterialQuadlets + assert counter.code == CtrDex.BigAttachmentGroup assert counter.count == count assert counter.qb64b == qscb assert counter.qb64 == qsc assert counter.qb2 == qscb2 counter = Counter(qb64=qsc) # test with str not bytes - assert counter.code == CtrDex.BigAttachedMaterialQuadlets + assert counter.code == CtrDex.BigAttachmentGroup assert counter.count == count assert counter.qb64b == qscb assert counter.qb64 == qsc assert counter.qb2 == qscb2 counter = Counter(qb2=qscb2) # test with qb2 - assert counter.code == CtrDex.BigAttachedMaterialQuadlets + assert counter.code == CtrDex.BigAttachmentGroup assert counter.count == count assert counter.qb64b == qscb assert counter.qb64 == qsc @@ -2455,14 +2428,14 @@ def test_counter(): # test with big codes index=1024 count = 1024 - qsc = CtrDex.BigAttachedMaterialQuadlets + intToB64(count, l=5) + qsc = CtrDex.BigAttachmentGroup + intToB64(count, l=5) assert qsc == '-0VAAAQA' qscb = qsc.encode("utf-8") qscb2 = decodeB64(qscb) ims = bytearray(qscb) counter = Counter(qb64b=ims, strip=True) # test with bytes not str - assert counter.code == CtrDex.BigAttachedMaterialQuadlets + assert counter.code == CtrDex.BigAttachmentGroup assert counter.count == count assert counter.qb64b == qscb assert counter.qb64 == qsc @@ -2471,7 +2444,7 @@ def test_counter(): ims = bytearray(qscb2) counter = Counter(qb2=ims, strip=True) # test with qb2 - assert counter.code == CtrDex.BigAttachedMaterialQuadlets + assert counter.code == CtrDex.BigAttachmentGroup assert counter.count == count assert counter.qb64b == qscb assert counter.qb64 == qsc @@ -2484,13 +2457,13 @@ def test_counter(): version = intToB64(verint, l=3) assert version == 'AAA' assert verint == b64ToInt(version) - qsc = CtrDex.KERIProtocolStack + version + qsc = CtrDex.KERIACDCGenusVersion + version assert qsc == '--AAAAAA' # keri Cesr version 0.0.0 qscb = qsc.encode("utf-8") qscb2 = decodeB64(qscb) - counter = Counter(code=CtrDex.KERIProtocolStack, count=verint) - assert counter.code == CtrDex.KERIProtocolStack + counter = Counter(code=CtrDex.KERIACDCGenusVersion, count=verint) + assert counter.code == CtrDex.KERIACDCGenusVersion assert counter.count == verint assert counter.countToB64(l=3) == version assert counter.countToB64() == version # default length @@ -2498,8 +2471,8 @@ def test_counter(): assert counter.qb64 == qsc assert counter.qb2 == qscb2 - counter = Counter(code=CtrDex.KERIProtocolStack, countB64=version) - assert counter.code == CtrDex.KERIProtocolStack + counter = Counter(code=CtrDex.KERIACDCGenusVersion, countB64=version) + assert counter.code == CtrDex.KERIACDCGenusVersion assert counter.count == verint assert counter.countToB64(l=3) == version assert counter.countToB64() == version # default length diff --git a/tests/core/test_counting.py b/tests/core/test_counting.py index 5547813dc..4d54a0664 100644 --- a/tests/core/test_counting.py +++ b/tests/core/test_counting.py @@ -181,31 +181,67 @@ def test_codexes_tags(): 'SealSourceCouples': '-G', 'TransLastIdxSigGroups': '-H', 'SealSourceTriples': '-I', - 'SadPathSig': '-J', - 'SadPathSigGroup': '-K', - 'PathedMaterialQuadlets': '-L', - 'AttachedMaterialQuadlets': '-V', - 'BigAttachedMaterialQuadlets': '-0V', - 'KERIProtocolStack': '--AAA', + 'SadPathSigGroups': '-J', + 'RootSadPathSigGroups': '-K', + 'PathedMaterialGroup': '-L', + 'AttachmentGroup': '-V', + 'BigAttachmentGroup': '-0V', + 'KERIACDCGenusVersion': '--AAA' } + assert asdict(counting.CtrDex_2_0) == \ { - 'ControllerIdxSigs': '-A', - 'WitnessIdxSigs': '-B', - 'NonTransReceiptCouples': '-C', - 'TransReceiptQuadruples': '-D', - 'FirstSeenReplayCouples': '-E', - 'TransIdxSigGroups': '-F', - 'SealSourceCouples': '-G', - 'TransLastIdxSigGroups': '-H', - 'SealSourceTriples': '-I', - 'SadPathSig': '-J', - 'SadPathSigGroup': '-K', - 'PathedMaterialQuadlets': '-L', - 'AttachedMaterialQuadlets': '-V', - 'BigAttachedMaterialQuadlets': '-0V', - 'KERIProtocolStack': '--AAA', + 'GenericGroup': '-A', + 'BigGenericGroup': '-0A', + 'MessageGroup': '-B', + 'BigMessageGroup': '-0B', + 'AttachmentGroup': '-C', + 'BigAttachmentGroup': '-0C', + 'DatagramSegmentGroup': '-D', + 'BigDatagramSegmentGroup': '-0D', + 'ESSRWrapperGroup': '-E', + 'BigESSRWrapperGroup': '-0E', + 'FixedMessageBodyGroup': '-F', + 'BigFixedMessageBodyGroup': '-0F', + 'MapMessageBodyGroup': '-G', + 'BigMapMessageBodyGroup': '-0G', + 'GenericMapGroup': '-H', + 'BigGenericMapGroup': '-0H', + 'GenericListGroup': '-L', + 'BigGenericListGroup': '-0L', + 'ControllerIdxSigs': '-J', + 'BigControllerIdxSigs': '-0J', + 'WitnessIdxSigs': '-K', + 'BigWitnessIdxSigs': '-0K', + 'NonTransReceiptCouples': '-L', + 'BigNonTransReceiptCouples': '-0L', + 'TransReceiptQuadruples': '-M', + 'BigTransReceiptQuadruples': '-0M', + 'FirstSeenReplayCouples': '-N', + 'BigFirstSeenReplayCouples': '-0N', + 'TransIdxSigGroups': '-0O', + 'TransLastIdxSigGroups': '-P', + 'BigTransLastIdxSigGroups': '-0P', + 'SealSourceCouples': '-Q', + 'BigSealSourceCouples': '-0Q', + 'SealSourceTriples': '-R', + 'BigSealSourceTriples': '-0R', + 'PathedMaterialGroup': '-S', + 'BigPathedMaterialGroup': '-0S', + 'SadPathSigGroups': '-T', + 'BigSadPathSigGroups': '-0T', + 'RootSadPathSigGroups': '-U', + 'BigRootSadPathSigGroups': '-0U', + 'DigestSealSingles': '-V', + 'BigDigestSealSingles': '-0V', + 'MerkleRootSealSingles': '-W', + 'BigMerkleRootSealSingles': '-0W', + 'BackerRegistrarSealCouples': '-X', + 'BigBackerRegistrarSealCouples': '-0X', + 'ESSRPayloadGroup': '-Z', + 'BigESSRPayloadGroup': '-0Z', + 'KERIACDCGenusVersion': '--AAA' } assert counting.Tags_1_0._asdict() == \ @@ -219,56 +255,128 @@ def test_codexes_tags(): 'SealSourceCouples': 'SealSourceCouples', 'TransLastIdxSigGroups': 'TransLastIdxSigGroups', 'SealSourceTriples': 'SealSourceTriples', - 'SadPathSig': 'SadPathSig', - 'SadPathSigGroup': 'SadPathSigGroup', - 'PathedMaterialQuadlets': 'PathedMaterialQuadlets', - 'AttachedMaterialQuadlets': 'AttachedMaterialQuadlets', - 'BigAttachedMaterialQuadlets': 'BigAttachedMaterialQuadlets', - 'KERIProtocolStack': 'KERIProtocolStack' + 'SadPathSigGroups': 'SadPathSigGroups', + 'RootSadPathSigGroups': 'RootSadPathSigGroups', + 'PathedMaterialGroup': 'PathedMaterialGroup', + 'AttachmentGroup': 'AttachmentGroup', + 'BigAttachmentGroup': 'BigAttachmentGroup', + 'KERIACDCGenusVersion': 'KERIACDCGenusVersion' } assert counting.Tags_1_0.ControllerIdxSigs == 'ControllerIdxSigs' assert counting.Tags_2_0._asdict() == \ { + 'GenericGroup': 'GenericGroup', + 'BigGenericGroup': 'BigGenericGroup', + 'MessageGroup': 'MessageGroup', + 'BigMessageGroup': 'BigMessageGroup', + 'AttachmentGroup': 'AttachmentGroup', + 'BigAttachmentGroup': 'BigAttachmentGroup', + 'DatagramSegmentGroup': 'DatagramSegmentGroup', + 'BigDatagramSegmentGroup': 'BigDatagramSegmentGroup', + 'ESSRWrapperGroup': 'ESSRWrapperGroup', + 'BigESSRWrapperGroup': 'BigESSRWrapperGroup', + 'FixedMessageBodyGroup': 'FixedMessageBodyGroup', + 'BigFixedMessageBodyGroup': 'BigFixedMessageBodyGroup', + 'MapMessageBodyGroup': 'MapMessageBodyGroup', + 'BigMapMessageBodyGroup': 'BigMapMessageBodyGroup', + 'GenericMapGroup': 'GenericMapGroup', + 'BigGenericMapGroup': 'BigGenericMapGroup', + 'GenericListGroup': 'GenericListGroup', + 'BigGenericListGroup': 'BigGenericListGroup', 'ControllerIdxSigs': 'ControllerIdxSigs', + 'BigControllerIdxSigs': 'BigControllerIdxSigs', 'WitnessIdxSigs': 'WitnessIdxSigs', + 'BigWitnessIdxSigs': 'BigWitnessIdxSigs', 'NonTransReceiptCouples': 'NonTransReceiptCouples', + 'BigNonTransReceiptCouples': 'BigNonTransReceiptCouples', 'TransReceiptQuadruples': 'TransReceiptQuadruples', + 'BigTransReceiptQuadruples': 'BigTransReceiptQuadruples', 'FirstSeenReplayCouples': 'FirstSeenReplayCouples', + 'BigFirstSeenReplayCouples': 'BigFirstSeenReplayCouples', 'TransIdxSigGroups': 'TransIdxSigGroups', - 'SealSourceCouples': 'SealSourceCouples', 'TransLastIdxSigGroups': 'TransLastIdxSigGroups', + 'BigTransLastIdxSigGroups': 'BigTransLastIdxSigGroups', + 'SealSourceCouples': 'SealSourceCouples', + 'BigSealSourceCouples': 'BigSealSourceCouples', 'SealSourceTriples': 'SealSourceTriples', - 'SadPathSig': 'SadPathSig', - 'SadPathSigGroup': 'SadPathSigGroup', - 'PathedMaterialQuadlets': 'PathedMaterialQuadlets', - 'AttachedMaterialQuadlets': 'AttachedMaterialQuadlets', - 'BigAttachedMaterialQuadlets': 'BigAttachedMaterialQuadlets', - 'KERIProtocolStack': 'KERIProtocolStack' + 'BigSealSourceTriples': 'BigSealSourceTriples', + 'PathedMaterialGroup': 'PathedMaterialGroup', + 'BigPathedMaterialGroup': 'BigPathedMaterialGroup', + 'SadPathSigGroups': 'SadPathSigGroups', + 'BigSadPathSigGroups': 'BigSadPathSigGroups', + 'RootSadPathSigGroups': 'RootSadPathSigGroups', + 'BigRootSadPathSigGroups': 'BigRootSadPathSigGroups', + 'DigestSealSingles': 'DigestSealSingles', + 'BigDigestSealSingles': 'BigDigestSealSingles', + 'MerkleRootSealSingles': 'MerkleRootSealSingles', + 'BigMerkleRootSealSingles': 'BigMerkleRootSealSingles', + 'BackerRegistrarSealCouples': 'BackerRegistrarSealCouples', + 'BigBackerRegistrarSealCouples': 'BigBackerRegistrarSealCouples', + 'ESSRPayloadGroup': 'ESSRPayloadGroup', + 'BigESSRPayloadGroup': 'BigESSRPayloadGroup', + 'KERIACDCGenusVersion': 'KERIACDCGenusVersion' } assert counting.Tags_2_0.ControllerIdxSigs == 'ControllerIdxSigs' assert counting.AllTags._asdict() == \ { + 'GenericGroup': 'GenericGroup', + 'BigGenericGroup': 'BigGenericGroup', + 'MessageGroup': 'MessageGroup', + 'BigMessageGroup': 'BigMessageGroup', + 'AttachmentGroup': 'AttachmentGroup', + 'BigAttachmentGroup': 'BigAttachmentGroup', + 'DatagramSegmentGroup': 'DatagramSegmentGroup', + 'BigDatagramSegmentGroup': 'BigDatagramSegmentGroup', + 'ESSRWrapperGroup': 'ESSRWrapperGroup', + 'BigESSRWrapperGroup': 'BigESSRWrapperGroup', + 'FixedMessageBodyGroup': 'FixedMessageBodyGroup', + 'BigFixedMessageBodyGroup': 'BigFixedMessageBodyGroup', + 'MapMessageBodyGroup': 'MapMessageBodyGroup', + 'BigMapMessageBodyGroup': 'BigMapMessageBodyGroup', + 'GenericMapGroup': 'GenericMapGroup', + 'BigGenericMapGroup': 'BigGenericMapGroup', + 'GenericListGroup': 'GenericListGroup', + 'BigGenericListGroup': 'BigGenericListGroup', 'ControllerIdxSigs': 'ControllerIdxSigs', + 'BigControllerIdxSigs': 'BigControllerIdxSigs', 'WitnessIdxSigs': 'WitnessIdxSigs', + 'BigWitnessIdxSigs': 'BigWitnessIdxSigs', 'NonTransReceiptCouples': 'NonTransReceiptCouples', + 'BigNonTransReceiptCouples': 'BigNonTransReceiptCouples', 'TransReceiptQuadruples': 'TransReceiptQuadruples', + 'BigTransReceiptQuadruples': 'BigTransReceiptQuadruples', 'FirstSeenReplayCouples': 'FirstSeenReplayCouples', + 'BigFirstSeenReplayCouples': 'BigFirstSeenReplayCouples', 'TransIdxSigGroups': 'TransIdxSigGroups', - 'SealSourceCouples': 'SealSourceCouples', 'TransLastIdxSigGroups': 'TransLastIdxSigGroups', + 'BigTransLastIdxSigGroups': 'BigTransLastIdxSigGroups', + 'SealSourceCouples': 'SealSourceCouples', + 'BigSealSourceCouples': 'BigSealSourceCouples', 'SealSourceTriples': 'SealSourceTriples', - 'SadPathSig': 'SadPathSig', - 'SadPathSigGroup': 'SadPathSigGroup', - 'PathedMaterialQuadlets': 'PathedMaterialQuadlets', - 'AttachedMaterialQuadlets': 'AttachedMaterialQuadlets', - 'BigAttachedMaterialQuadlets': 'BigAttachedMaterialQuadlets', - 'KERIProtocolStack': 'KERIProtocolStack' + 'BigSealSourceTriples': 'BigSealSourceTriples', + 'PathedMaterialGroup': 'PathedMaterialGroup', + 'BigPathedMaterialGroup': 'BigPathedMaterialGroup', + 'SadPathSigGroups': 'SadPathSigGroups', + 'BigSadPathSigGroups': 'BigSadPathSigGroups', + 'RootSadPathSigGroups': 'RootSadPathSigGroups', + 'BigRootSadPathSigGroups': 'BigRootSadPathSigGroups', + 'DigestSealSingles': 'DigestSealSingles', + 'BigDigestSealSingles': 'BigDigestSealSingles', + 'MerkleRootSealSingles': 'MerkleRootSealSingles', + 'BigMerkleRootSealSingles': 'BigMerkleRootSealSingles', + 'BackerRegistrarSealCouples': 'BackerRegistrarSealCouples', + 'BigBackerRegistrarSealCouples': 'BigBackerRegistrarSealCouples', + 'ESSRPayloadGroup': 'ESSRPayloadGroup', + 'BigESSRPayloadGroup': 'BigESSRPayloadGroup', + 'KERIACDCGenusVersion': 'KERIACDCGenusVersion' } + assert counting.AllTags.ControllerIdxSigs == 'ControllerIdxSigs' + """End Test""" @@ -276,6 +384,8 @@ def test_counter(): """ Test Counter class """ + # test class attributes + assert Counter.Codes == \ { counting.Vrsn_1_0: counting.CtrDex_1_0, @@ -325,19 +435,55 @@ def test_counter(): counting.Vrsn_2_0: \ { '-A': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0A': Sizage(hs=3, ss=5, fs=8, ls=0), '-B': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0B': Sizage(hs=3, ss=5, fs=8, ls=0), '-C': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0C': Sizage(hs=3, ss=5, fs=8, ls=0), '-D': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0D': Sizage(hs=3, ss=5, fs=8, ls=0), '-E': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0E': Sizage(hs=3, ss=5, fs=8, ls=0), '-F': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0F': Sizage(hs=3, ss=5, fs=8, ls=0), '-G': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0G': Sizage(hs=3, ss=5, fs=8, ls=0), '-H': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0H': Sizage(hs=3, ss=5, fs=8, ls=0), '-I': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0I': Sizage(hs=3, ss=5, fs=8, ls=0), '-J': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0J': Sizage(hs=3, ss=5, fs=8, ls=0), '-K': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0K': Sizage(hs=3, ss=5, fs=8, ls=0), '-L': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0L': Sizage(hs=3, ss=5, fs=8, ls=0), + '-M': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0M': Sizage(hs=3, ss=5, fs=8, ls=0), + '-N': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0N': Sizage(hs=3, ss=5, fs=8, ls=0), + '-O': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0O': Sizage(hs=3, ss=5, fs=8, ls=0), + '-P': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0P': Sizage(hs=3, ss=5, fs=8, ls=0), + '-Q': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0Q': Sizage(hs=3, ss=5, fs=8, ls=0), + '-R': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0R': Sizage(hs=3, ss=5, fs=8, ls=0), + '-S': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0S': Sizage(hs=3, ss=5, fs=8, ls=0), + '-T': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0T': Sizage(hs=3, ss=5, fs=8, ls=0), + '-U': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0U': Sizage(hs=3, ss=5, fs=8, ls=0), '-V': Sizage(hs=2, ss=2, fs=4, ls=0), '-0V': Sizage(hs=3, ss=5, fs=8, ls=0), + '-W': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0W': Sizage(hs=3, ss=5, fs=8, ls=0), + '-X': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0X': Sizage(hs=3, ss=5, fs=8, ls=0), + '-Y': Sizage(hs=2, ss=2, fs=4, ls=0), + '-0Y': Sizage(hs=3, ss=5, fs=8, ls=0), '--AAA': Sizage(hs=5, ss=3, fs=8, ls=0) } } @@ -352,10 +498,11 @@ def test_counter(): for ckey, cval in vsize.items(): assert Counter.Hards[ckey[:2]] == cval.hs - # verify all Codes have hs > 0 and ss > 0 and fs = hs + ss and not fs % 4 + # verify all Codes have hs >= 2 and ss > 0 and fs = hs + ss and not fs % 4 + # if hs < 2 or ss <= 0 or fs != cs or cs % 4 cs = hs + ss for vsize in Counter.Sizes.values(): for val in vsize.values(): - assert val.hs > 0 and val.ss > 0 and val.hs + val.ss == val.fs and not val.fs % 4 + assert val.hs >= 2 and val.ss > 0 and val.hs + val.ss == val.fs and not val.fs % 4 # Bizes maps bytes of sextet of decoded first character of code with hard size of code # verify equivalents of items for Sizes and Bizes @@ -431,21 +578,21 @@ def test_counter_v1(): """ test Counter instances for verision 1.0 code tables """ + # version 1_0 tests default version is Version + assert Version == Vrsn_1_0 + CtrDex = Counter.Codes[Version] # set CtrDex to Vrsn_1_0 + # test Counter instances with pytest.raises(kering.EmptyMaterialError): counter = Counter() # create code manually count = 1 - qsc = counting.CtrDex_1_0.ControllerIdxSigs + intToB64(count, l=2) + qsc = CtrDex.ControllerIdxSigs + intToB64(count, l=2) assert qsc == '-AAB' qscb = qsc.encode("utf-8") qscb2 = decodeB64(qscb) - # version 1_0 tests default version is Version - assert Version == Vrsn_1_0 - CtrDex = Counter.Codes[Version] # set CtrDex to Vrsn_1_0 - counter = Counter(tag="ControllerIdxSigs", count=count) assert counter.code == CtrDex.ControllerIdxSigs assert counter.count == count @@ -556,34 +703,34 @@ def test_counter_v1(): # test with big codes index=1024 count = 1024 - qsc = CtrDex.BigAttachedMaterialQuadlets + intToB64(count, l=5) + qsc = CtrDex.BigAttachmentGroup + intToB64(count, l=5) assert qsc == '-0VAAAQA' qscb = qsc.encode("utf-8") qscb2 = decodeB64(qscb) - counter = Counter(code=CtrDex.BigAttachedMaterialQuadlets, count=count) - assert counter.code == CtrDex.BigAttachedMaterialQuadlets + counter = Counter(code=CtrDex.BigAttachmentGroup, count=count) + assert counter.code == CtrDex.BigAttachmentGroup assert counter.count == count assert counter.qb64b == qscb assert counter.qb64 == qsc assert counter.qb2 == qscb2 counter = Counter(qb64b=qscb) # test with bytes not str - assert counter.code == CtrDex.BigAttachedMaterialQuadlets + assert counter.code == CtrDex.BigAttachmentGroup assert counter.count == count assert counter.qb64b == qscb assert counter.qb64 == qsc assert counter.qb2 == qscb2 counter = Counter(qb64=qsc) # test with str not bytes - assert counter.code == CtrDex.BigAttachedMaterialQuadlets + assert counter.code == CtrDex.BigAttachmentGroup assert counter.count == count assert counter.qb64b == qscb assert counter.qb64 == qsc assert counter.qb2 == qscb2 counter = Counter(qb2=qscb2) # test with qb2 - assert counter.code == CtrDex.BigAttachedMaterialQuadlets + assert counter.code == CtrDex.BigAttachmentGroup assert counter.count == count assert counter.qb64b == qscb assert counter.qb64 == qsc @@ -666,14 +813,14 @@ def test_counter_v1(): # test with big codes index=1024 count = 1024 - qsc = CtrDex.BigAttachedMaterialQuadlets + intToB64(count, l=5) + qsc = CtrDex.BigAttachmentGroup + intToB64(count, l=5) assert qsc == '-0VAAAQA' qscb = qsc.encode("utf-8") qscb2 = decodeB64(qscb) ims = bytearray(qscb) counter = Counter(qb64b=ims, strip=True) # test with bytes not str - assert counter.code == CtrDex.BigAttachedMaterialQuadlets + assert counter.code == CtrDex.BigAttachmentGroup assert counter.count == count assert counter.qb64b == qscb assert counter.qb64 == qsc @@ -682,7 +829,7 @@ def test_counter_v1(): ims = bytearray(qscb2) counter = Counter(qb2=ims, strip=True) # test with qb2 - assert counter.code == CtrDex.BigAttachedMaterialQuadlets + assert counter.code == CtrDex.BigAttachmentGroup assert counter.count == count assert counter.qb64b == qscb assert counter.qb64 == qsc @@ -695,13 +842,13 @@ def test_counter_v1(): genver = intToB64(genverint, l=3) assert genver == 'AAA' assert genverint == b64ToInt(genver) - qsc = CtrDex.KERIProtocolStack + genver + qsc = CtrDex.KERIACDCGenusVersion + genver assert qsc == '--AAAAAA' # keri Cesr version 0.0.0 qscb = qsc.encode("utf-8") qscb2 = decodeB64(qscb) - counter = Counter(code=CtrDex.KERIProtocolStack, count=genverint) - assert counter.code == CtrDex.KERIProtocolStack + counter = Counter(code=CtrDex.KERIACDCGenusVersion, count=genverint) + assert counter.code == CtrDex.KERIACDCGenusVersion assert counter.count == genverint assert counter.countToB64(l=3) == genver assert counter.countToB64() == genver # default length @@ -709,8 +856,8 @@ def test_counter_v1(): assert counter.qb64 == qsc assert counter.qb2 == qscb2 - counter = Counter(code=CtrDex.KERIProtocolStack, countB64=genver) - assert counter.code == CtrDex.KERIProtocolStack + counter = Counter(code=CtrDex.KERIACDCGenusVersion, countB64=genver) + assert counter.code == CtrDex.KERIACDCGenusVersion assert counter.count == genverint assert counter.countToB64(l=3) == genver assert counter.countToB64() == genver # default length @@ -724,20 +871,20 @@ def test_counter_v2(): """ test Counter instances for verision 2.0 code tables """ + # version 2_0 tests default version is Version + #assert Version == Vrsn_2_0 + CtrDex = Counter.Codes[Vrsn_2_0] # set CtrDex to Vrsn_2_0 + # test Counter instances with pytest.raises(kering.EmptyMaterialError): counter = Counter() # create code manually count = 1 - qsc = counting.CtrDex_1_0.ControllerIdxSigs + intToB64(count, l=2) - assert qsc == '-AAB' + qsc = CtrDex.ControllerIdxSigs + intToB64(count, l=2) + assert qsc == '-JAB' qscb = qsc.encode("utf-8") qscb2 = decodeB64(qscb) - # version 2_0 tests default version is Version - #assert Version == Vrsn_2_0 - - CtrDex = Counter.Codes[Vrsn_2_0] # set CtrDex to Vrsn_2_0 # default count = 1 counter = Counter(code=CtrDex.ControllerIdxSigs, version=Vrsn_2_0) @@ -792,7 +939,7 @@ def test_counter_v2(): # test with non-zero count=5 count = 5 qsc = CtrDex.ControllerIdxSigs + intToB64(count, l=2) - assert qsc == '-AAF' + assert qsc == '-JAF' qscb = qsc.encode("utf-8") qscb2 = decodeB64(qscb) @@ -849,41 +996,6 @@ def test_counter_v2(): assert counter.qb64 == qsc assert counter.qb2 == qscb2 - # test with big codes index=1024 - count = 1024 - qsc = CtrDex.BigAttachedMaterialQuadlets + intToB64(count, l=5) - assert qsc == '-0VAAAQA' - qscb = qsc.encode("utf-8") - qscb2 = decodeB64(qscb) - - counter = Counter(code=CtrDex.BigAttachedMaterialQuadlets, count=count, version=Vrsn_2_0) - assert counter.code == CtrDex.BigAttachedMaterialQuadlets - assert counter.count == count - assert counter.qb64b == qscb - assert counter.qb64 == qsc - assert counter.qb2 == qscb2 - - counter = Counter(qb64b=qscb, version=Vrsn_2_0) # test with bytes not str - assert counter.code == CtrDex.BigAttachedMaterialQuadlets - assert counter.count == count - assert counter.qb64b == qscb - assert counter.qb64 == qsc - assert counter.qb2 == qscb2 - - counter = Counter(qb64=qsc, version=Vrsn_2_0) # test with str not bytes - assert counter.code == CtrDex.BigAttachedMaterialQuadlets - assert counter.count == count - assert counter.qb64b == qscb - assert counter.qb64 == qsc - assert counter.qb2 == qscb2 - - counter = Counter(qb2=qscb2, version=Vrsn_2_0) # test with qb2 - assert counter.code == CtrDex.BigAttachedMaterialQuadlets - assert counter.count == count - assert counter.qb64b == qscb - assert counter.qb64 == qsc - assert counter.qb2 == qscb2 - # Test ._bexfil counter = Counter(qb64=qsc, version=Vrsn_2_0) code = counter.code @@ -903,7 +1015,7 @@ def test_counter_v2(): # create code manually count = 1 qsc = CtrDex.ControllerIdxSigs + intToB64(count, l=2) - assert qsc == '-AAB' + assert qsc == '-JAB' qscb = qsc.encode("utf-8") qscb2 = decodeB64(qscb) @@ -959,16 +1071,51 @@ def test_counter_v2(): with pytest.raises(TypeError): counter = Counter(qb2=ims, strip=True, version=Vrsn_2_0) - # test with big codes index=1024 + # test with big codes count=1024 count = 1024 - qsc = CtrDex.BigAttachedMaterialQuadlets + intToB64(count, l=5) - assert qsc == '-0VAAAQA' + qsc = CtrDex.BigGenericGroup + intToB64(count, l=5) + assert qsc == '-0AAAAQA' + qscb = qsc.encode("utf-8") + qscb2 = decodeB64(qscb) + + counter = Counter(code=CtrDex.BigGenericGroup, count=count, version=Vrsn_2_0) + assert counter.code == CtrDex.BigGenericGroup + assert counter.count == count + assert counter.qb64b == qscb + assert counter.qb64 == qsc + assert counter.qb2 == qscb2 + + counter = Counter(qb64b=qscb, version=Vrsn_2_0) # test with bytes not str + assert counter.code == CtrDex.BigGenericGroup + assert counter.count == count + assert counter.qb64b == qscb + assert counter.qb64 == qsc + assert counter.qb2 == qscb2 + + counter = Counter(qb64=qsc, version=Vrsn_2_0) # test with str not bytes + assert counter.code == CtrDex.BigGenericGroup + assert counter.count == count + assert counter.qb64b == qscb + assert counter.qb64 == qsc + assert counter.qb2 == qscb2 + + counter = Counter(qb2=qscb2, version=Vrsn_2_0) # test with qb2 + assert counter.code == CtrDex.BigGenericGroup + assert counter.count == count + assert counter.qb64b == qscb + assert counter.qb64 == qsc + assert counter.qb2 == qscb2 + + # test ims with big codes count=1024 + count = 1024 + qsc = CtrDex.BigGenericGroup + intToB64(count, l=5) + assert qsc == '-0AAAAQA' qscb = qsc.encode("utf-8") qscb2 = decodeB64(qscb) ims = bytearray(qscb) counter = Counter(qb64b=ims, strip=True, version=Vrsn_2_0) # test with bytes not str - assert counter.code == CtrDex.BigAttachedMaterialQuadlets + assert counter.code == CtrDex.BigGenericGroup assert counter.count == count assert counter.qb64b == qscb assert counter.qb64 == qsc @@ -977,26 +1124,106 @@ def test_counter_v2(): ims = bytearray(qscb2) counter = Counter(qb2=ims, strip=True, version=Vrsn_2_0) # test with qb2 - assert counter.code == CtrDex.BigAttachedMaterialQuadlets + assert counter.code == CtrDex.BigGenericGroup assert counter.count == count assert counter.qb64b == qscb assert counter.qb64 == qsc assert counter.qb2 == qscb2 assert not ims + # test with big codes count=8193 + count = 8193 + qsc = CtrDex.BigGenericGroup + intToB64(count, l=5) + assert qsc == '-0AAACAB' + qscb = qsc.encode("utf-8") + qscb2 = decodeB64(qscb) + + counter = Counter(code=CtrDex.BigGenericGroup, count=count, version=Vrsn_2_0) + assert counter.code == CtrDex.BigGenericGroup + assert counter.count == count + assert counter.qb64b == qscb + assert counter.qb64 == qsc + assert counter.qb2 == qscb2 + + counter = Counter(qb64b=qscb, version=Vrsn_2_0) # test with bytes not str + assert counter.code == CtrDex.BigGenericGroup + assert counter.count == count + assert counter.qb64b == qscb + assert counter.qb64 == qsc + assert counter.qb2 == qscb2 + + counter = Counter(qb64=qsc, version=Vrsn_2_0) # test with str not bytes + assert counter.code == CtrDex.BigGenericGroup + assert counter.count == count + assert counter.qb64b == qscb + assert counter.qb64 == qsc + assert counter.qb2 == qscb2 + + counter = Counter(qb2=qscb2, version=Vrsn_2_0) # test with qb2 + assert counter.code == CtrDex.BigGenericGroup + assert counter.count == count + assert counter.qb64b == qscb + assert counter.qb64 == qsc + assert counter.qb2 == qscb2 + + # test ims with big codes count=8193 + count = 8193 + qsc = CtrDex.BigGenericGroup + intToB64(count, l=5) + assert qsc == '-0AAACAB' + qscb = qsc.encode("utf-8") + qscb2 = decodeB64(qscb) + + ims = bytearray(qscb) + counter = Counter(qb64b=ims, strip=True, version=Vrsn_2_0) # test with bytes not str + assert counter.code == CtrDex.BigGenericGroup + assert counter.count == count + assert counter.qb64b == qscb + assert counter.qb64 == qsc + assert counter.qb2 == qscb2 + assert not ims + + ims = bytearray(qscb2) + counter = Counter(qb2=ims, strip=True, version=Vrsn_2_0) # test with qb2 + assert counter.code == CtrDex.BigGenericGroup + assert counter.count == count + assert counter.qb64b == qscb + assert counter.qb64 == qsc + assert counter.qb2 == qscb2 + assert not ims + + # test with promotion from small to big codes with count=8193 + count = 8193 + qsc = CtrDex.BigGenericGroup + intToB64(count, l=5) + assert qsc == '-0AAACAB' + qscb = qsc.encode("utf-8") + qscb2 = decodeB64(qscb) + + counter = Counter(code=CtrDex.GenericGroup, count=count, version=Vrsn_2_0) + assert counter.code == CtrDex.BigGenericGroup + assert counter.count == count + assert counter.qb64b == qscb + assert counter.qb64 == qsc + assert counter.qb2 == qscb2 + + counter = Counter(tag=AllTags.GenericGroup, count=count, version=Vrsn_2_0) + assert counter.code == CtrDex.BigGenericGroup + assert counter.count == count + assert counter.qb64b == qscb + assert counter.qb64 == qsc + assert counter.qb2 == qscb2 + # test protocol genus with CESR version - # test with big codes index=1024 genverint = 0 genver = intToB64(genverint, l=3) assert genver == 'AAA' assert genverint == b64ToInt(genver) - qsc = CtrDex.KERIProtocolStack + genver + qsc = CtrDex.KERIACDCGenusVersion + genver assert qsc == '--AAAAAA' # keri Cesr version 0.0.0 qscb = qsc.encode("utf-8") qscb2 = decodeB64(qscb) - counter = Counter(code=CtrDex.KERIProtocolStack, count=genverint, version=Vrsn_2_0) - assert counter.code == CtrDex.KERIProtocolStack + counter = Counter(code=CtrDex.KERIACDCGenusVersion, count=genverint, version=Vrsn_2_0) + assert counter.code == CtrDex.KERIACDCGenusVersion assert counter.count == genverint assert counter.countToB64(l=3) == genver assert counter.countToB64() == genver # default length @@ -1004,8 +1231,8 @@ def test_counter_v2(): assert counter.qb64 == qsc assert counter.qb2 == qscb2 - counter = Counter(code=CtrDex.KERIProtocolStack, countB64=genver, version=Vrsn_2_0) - assert counter.code == CtrDex.KERIProtocolStack + counter = Counter(code=CtrDex.KERIACDCGenusVersion, countB64=genver, version=Vrsn_2_0) + assert counter.code == CtrDex.KERIACDCGenusVersion assert counter.count == genverint assert counter.countToB64(l=3) == genver assert counter.countToB64() == genver # default length diff --git a/tests/core/test_replay.py b/tests/core/test_replay.py index e5801dcb6..6a9a1a172 100644 --- a/tests/core/test_replay.py +++ b/tests/core/test_replay.py @@ -337,7 +337,7 @@ def test_replay(): assert len(msg) == 1076 counter = coring.Counter(qb64b=msg) # attachment length quadlets counter - assert counter.code == coring.CtrDex.AttachedMaterialQuadlets + assert counter.code == coring.CtrDex.AttachmentGroup assert counter.count == (len(msg) - len(counter.qb64b)) // 4 == 268 del msg[:len(counter.qb64b)] assert len(msg) == 1072 == 268 * 4 diff --git a/tests/vc/test_proving.py b/tests/vc/test_proving.py index fbcc9be99..b46947e22 100644 --- a/tests/vc/test_proving.py +++ b/tests/vc/test_proving.py @@ -70,7 +70,7 @@ def test_proving(mockHelpingNowIso8601): proof = msg[creder.size:] ctr = Counter(qb64b=proof, strip=True) - assert ctr.code == CtrDex.AttachedMaterialQuadlets + assert ctr.code == CtrDex.AttachmentGroup assert ctr.count == 52 pags = ctr.count * 4