From 798ccfae671736e20ae000d2f8129e1afda91dd6 Mon Sep 17 00:00:00 2001 From: Lance Date: Mon, 1 Apr 2024 14:05:10 -0400 Subject: [PATCH] Gen and resolve metadata arg refactored and tested (#64) * added meta flag to generate command to allow for equivalent id information during generation Signed-off-by: 2byrds <2byrds@gmail.com> * refactored metadata flag to meta and tested, then commented out integration test Signed-off-by: 2byrds <2byrds@gmail.com> * ci clears keri Signed-off-by: 2byrds <2byrds@gmail.com> * ci update version Signed-off-by: 2byrds <2byrds@gmail.com> --------- Signed-off-by: 2byrds <2byrds@gmail.com> --- .github/workflows/main.yml | 5 ++++- src/dkr/app/cli/commands/did/keri/resolve.py | 12 ++++++------ src/dkr/app/cli/commands/did/webs/generate.py | 14 +++++++++++--- src/dkr/app/cli/commands/did/webs/resolve.py | 10 +++++----- src/dkr/core/didding.py | 6 +++--- src/dkr/core/resolving.py | 18 ++++++++---------- .../app/cli/commands/did/webs/test_resolve.py | 6 +++--- tests/dkr/core/test_didding.py | 14 +++++++------- volume/dkr/examples/get_started_docker.sh | 6 +++--- volume/dkr/examples/get_started_docker_gen.sh | 2 +- .../dkr/examples/get_started_docker_resolve.sh | 2 +- volume/dkr/examples/get_started_docker_wits.sh | 4 ++-- volume/dkr/examples/get_started_webs_gen.sh | 2 +- .../dkr/examples/get_started_webs_resolve.sh | 4 +++- .../did.json | 2 +- .../keri.cesr | 2 +- 16 files changed, 60 insertions(+), 49 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 5edfb58..f1f52be 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -14,7 +14,10 @@ jobs: - name: Set up Python 3.10 uses: actions/setup-python@v2 with: - python-version: 3.10.13 + python-version: 3.12.2 + - name: Clear databases + run: | + rm -Rf /usr/local/var/keri/* - name: Install dependencies run: | python -m pip install --upgrade pip diff --git a/src/dkr/app/cli/commands/did/keri/resolve.py b/src/dkr/app/cli/commands/did/keri/resolve.py index 818fd32..6f34541 100644 --- a/src/dkr/app/cli/commands/did/keri/resolve.py +++ b/src/dkr/app/cli/commands/did/keri/resolve.py @@ -28,25 +28,25 @@ dest="bran", default=None) # passcode => bran parser.add_argument("--did", "-d", help="DID to resolve (did:keri method)", required=True) parser.add_argument("--oobi", "-o", help="OOBI to use for resolving the DID", required=False) -parser.add_argument("--metadata", "-m", help="Whether to include metadata (True), or only return the DID document (False)", type=bool, required=False, default=None) +parser.add_argument("--meta", "-m", help="Whether to include metadata (True), or only return the DID document (False)", type=bool, required=False, default=None) def handler(args): hby = existing.setupHby(name=args.name, base=args.base, bran=args.bran) hbyDoer = habbing.HaberyDoer(habery=hby) # setup doer obl = oobiing.Oobiery(hby=hby) - res = KeriResolver(hby=hby, hbyDoer=hbyDoer, obl=obl, did=args.did, oobi=args.oobi, metadata=args.metadata) + res = KeriResolver(hby=hby, hbyDoer=hbyDoer, obl=obl, did=args.did, oobi=args.oobi, meta=args.meta) return [res] class KeriResolver(doing.DoDoer): - def __init__(self, hby, hbyDoer, obl, did, oobi, metadata): + def __init__(self, hby, hbyDoer, obl, did, oobi, meta): self.hby = hby self.did = did self.oobi = oobi - self.metadata = metadata + self.meta = meta self.toRemove = [hbyDoer] + obl.doers doers = list(self.toRemove) + [doing.doify(self.resolve)] @@ -68,9 +68,9 @@ def resolve(self, tymth, tock=0.0, **opts): while self.hby.db.roobi.get(keys=(self.oobi,)) is None: _ = yield tock - didresult = didding.generateDIDDoc(self.hby, did=self.did, aid=aid, oobi=self.oobi, metadata=True) + didresult = didding.generateDIDDoc(self.hby, did=self.did, aid=aid, oobi=self.oobi, meta=True) dd = didresult[didding.DD_FIELD] - result = didresult if self.metadata else dd + result = didresult if self.meta else dd data = json.dumps(result, indent=2) print(data) diff --git a/src/dkr/app/cli/commands/did/webs/generate.py b/src/dkr/app/cli/commands/did/webs/generate.py index 7a429b4..fc5eea5 100644 --- a/src/dkr/app/cli/commands/did/webs/generate.py +++ b/src/dkr/app/cli/commands/did/webs/generate.py @@ -37,14 +37,15 @@ required=False, default=None, help="Name of regery to find designated aliases attestation. Default is None.") +parser.add_argument("--meta", "-m", help="Whether to include metadata (True), or only return the DID document (False)", type=bool, required=False, default=False) def handler(args): - gen = Generator(name=args.name, base=args.base, bran=args.bran, did=args.did, oobi=None, da_reg=args.da_reg) + gen = Generator(name=args.name, base=args.base, bran=args.bran, did=args.did, oobi=None, da_reg=args.da_reg, meta=args.meta) return [gen] class Generator(doing.DoDoer): - def __init__(self, name, base, bran, did, oobi, da_reg): + def __init__(self, name, base, bran, did, oobi, da_reg, meta=False): self.name = name self.base = base self.bran = bran @@ -55,6 +56,8 @@ def __init__(self, name, base, bran, did, oobi, da_reg): self.did = did # self.oobi = oobi self.da_reg = da_reg + self.meta = meta + print("Generate DID document command", did, "using oobi", oobi, "and metadata", meta, "registry name for creds", da_reg) self.toRemove = [hbyDoer] + obl.doers doers = list(self.toRemove) + [doing.doify(self.generate)] @@ -105,7 +108,12 @@ def generate(self, tymth, tock=0.0, **opts): kcf.write(tmsg) #generate did doc - diddoc = didding.generateDIDDoc(self.hby, did=self.did, aid=aid, oobi=None, reg_name=self.da_reg) + result = didding.generateDIDDoc(self.hby, did=self.did, aid=aid, oobi=None, reg_name=self.da_reg, meta=self.meta) + + diddoc = result + if(self.meta): + diddoc = result["didDocument"] + print("Generated metadata for DID document", result["didDocumentMetadata"]) # Create the directory (and any intermediate directories in the given path) if it doesn't already exist dd_dir_path = f"{aid}" diff --git a/src/dkr/app/cli/commands/did/webs/resolve.py b/src/dkr/app/cli/commands/did/webs/resolve.py index 3a07424..4f6ad5a 100644 --- a/src/dkr/app/cli/commands/did/webs/resolve.py +++ b/src/dkr/app/cli/commands/did/webs/resolve.py @@ -23,24 +23,24 @@ parser.add_argument('--passcode', help='22 character encryption passcode for keystore (is not saved)', dest="bran", default=None) # passcode => bran parser.add_argument("--did", "-d", help="DID to resolve", required=True) -parser.add_argument("--metadata", "-m", help="Whether to include metadata (True), or only return the DID document (False)", type=bool, required=False, default=None) +parser.add_argument("--meta", "-m", help="Whether to include metadata (True), or only return the DID document (False)", type=bool, required=False, default=None) def handler(args): hby = existing.setupHby(name=args.name, base=args.base, bran=args.bran) hbyDoer = habbing.HaberyDoer(habery=hby) # setup doer obl = oobiing.Oobiery(hby=hby) - res = WebsResolver(hby=hby, hbyDoer=hbyDoer, obl=obl, did=args.did, metadata=args.metadata) + res = WebsResolver(hby=hby, hbyDoer=hbyDoer, obl=obl, did=args.did, meta=args.meta) return [res] class WebsResolver(doing.DoDoer): - def __init__(self, hby, hbyDoer, obl, did, metadata): + def __init__(self, hby, hbyDoer, obl, did, meta): self.hby = hby self.did = did - self.metadata = metadata + self.meta = meta self.toRemove = [hbyDoer] + obl.doers doers = list(self.toRemove) + [doing.doify(self.resolve)] @@ -51,6 +51,6 @@ def resolve(self, tymth, tock=0.125, **opts): self.tock = tock _ = (yield self.tock) - resolving.resolve(hby=self.hby, did=self.did, metadata=self.metadata) + resolving.resolve(hby=self.hby, did=self.did, meta=self.meta) self.remove(self.toRemove) \ No newline at end of file diff --git a/src/dkr/core/didding.py b/src/dkr/core/didding.py index 99035e3..96ec8cd 100644 --- a/src/dkr/core/didding.py +++ b/src/dkr/core/didding.py @@ -60,10 +60,10 @@ def parseDIDWebs(did): return domain, port, path, aid -def generateDIDDoc(hby: habbing.Habery, did, aid, oobi=None, metadata=None, reg_name=None): +def generateDIDDoc(hby: habbing.Habery, did, aid, oobi=None, meta=False, reg_name=None): if (did and aid) and not did.endswith(aid): raise ValueError(f"{did} does not end with {aid}") - print("Generating DID document for", did, "with aid", aid, "using oobi", oobi, "and metadata", metadata, "registry name for creds", reg_name) + print("Generating DID document for", did, "with aid", aid, "using oobi", oobi, "and metadata", meta, "registry name for creds", reg_name) hab = None if aid in hby.habs: @@ -178,7 +178,7 @@ def generateDIDDoc(hby: habbing.Habery, did, aid, oobi=None, metadata=None, reg_ alsoKnownAs=aka_ids ) - if metadata is True: + if meta is True: resolutionResult = dict( didDocument=diddoc, didResolutionMetadata=didResolutionMetadata, diff --git a/src/dkr/core/resolving.py b/src/dkr/core/resolving.py index fe12c2d..a9a2a68 100644 --- a/src/dkr/core/resolving.py +++ b/src/dkr/core/resolving.py @@ -53,7 +53,7 @@ def saveCesr(hby: habbing.Habery, kc_res: requests.Response, aid: str = None): assert aid in hby.kevers, f"KERI CESR parsing failed, KERI AID {aid} not found in habery" def getComp(hby: habbing.Habery, did: str, aid: str, dd_res: requests.Response, kc_res: requests.Response): - dd = didding.generateDIDDoc(hby, did=did, aid=aid, oobi=None, metadata=True) + dd = didding.generateDIDDoc(hby, did=did, aid=aid, oobi=None, meta=True) dd[didding.DD_META_FIELD]['didDocUrl'] = dd_res.url dd[didding.DD_META_FIELD]['keriCesrUrl'] = kc_res.url @@ -62,7 +62,7 @@ def getComp(hby: habbing.Habery, did: str, aid: str, dd_res: requests.Response, return dd, dd_actual -def verify(dd, dd_actual, metadata: bool = False): +def verify(dd, dd_actual, meta: bool = False): dd_exp = dd if didding.DD_FIELD in dd_exp: dd_exp = dd[didding.DD_FIELD] @@ -71,7 +71,7 @@ def verify(dd, dd_actual, metadata: bool = False): result = None if verified: - result = dd if metadata else dd[didding.DD_FIELD] + result = dd if meta else dd[didding.DD_FIELD] print(f"DID verified") else: didresult = dict() @@ -145,11 +145,11 @@ def _compare_dicts(expected, actual, path=""): if expected != actual: print(f"Different values for key {path}: {expected} (expected) vs. {actual} (actual)", file=sys.stderr) -def resolve(hby, did, metadata=False, resq: queue.Queue = None): +def resolve(hby, did, meta=False, resq: queue.Queue = None): aid, dd_res, kc_res = getSrcs(did=did, resq=resq) saveCesr(hby=hby,kc_res=kc_res, aid=aid) dd, dd_actual = getComp(hby=hby, did=did, aid=aid, dd_res=dd_res, kc_res=kc_res) - vresult = verify(dd, dd_actual, metadata=metadata) + vresult = verify(dd, dd_actual, meta=meta) print("Resolution result: ", vresult) return vresult @@ -225,7 +225,7 @@ def __init__(self, hby, hbyDoer, obl): super(ResolveResource, self).__init__(doers=[]) print(f"Init resolver endpoint") - def on_get(self, req, rep, did): + def on_get(self, req, rep, did, meta=False): print(f"Request to resolve did: {did}") if did is None: @@ -239,20 +239,18 @@ def on_get(self, req, rep, did): else: oobi = None - metadata = False - if did.startswith('did:webs:'): #res = WebsResolver(hby=self.hby, hbyDoer=self.hbyDoer, obl=self.obl, did=did) #tymth = None # ??? #data = res.resolve(tymth) - cmd = f"dkr did webs resolve --name dkr --did {did} --metadata {metadata}" + cmd = f"dkr did webs resolve --name dkr --did {did} --meta {meta}" stream = os.popen(cmd) data = stream.read() elif did.startswith('did:keri'): #res = KeriResolver(hby=self.hby, hbyDoer=self.hbyDoer, obl=self.obl, did=did, oobi=oobi, metadata=False) #tymth = None # ??? #data = res.resolve(tymth) - cmd = f"dkr did keri resolve --name dkr --did {did} --oobi {oobi} --metadata {metadata}" + cmd = f"dkr did keri resolve --name dkr --did {did} --oobi {oobi} --meta {meta}" stream = os.popen(cmd) data = stream.read() else: diff --git a/tests/dkr/app/cli/commands/did/webs/test_resolve.py b/tests/dkr/app/cli/commands/did/webs/test_resolve.py index b1dc3cd..d43ca36 100644 --- a/tests/dkr/app/cli/commands/did/webs/test_resolve.py +++ b/tests/dkr/app/cli/commands/did/webs/test_resolve.py @@ -166,18 +166,18 @@ def on_get(self, req, resp): # assert dd[didding.DD_FIELD][didding.VMETH_FIELD] == dd_actual[didding.VMETH_FIELD] # # no metadata -# vresult = resolving.verify(dd, dd_actual, metadata=False) +# vresult = resolving.verify(dd, dd_actual, meta=False) # assert vresult[didding.VMETH_FIELD] == dd[didding.DD_FIELD][didding.VMETH_FIELD] # # metadata -# vresult = resolving.verify(dd, dd_actual, metadata=True) +# vresult = resolving.verify(dd, dd_actual, meta=True) # assert vresult[didding.DD_FIELD][didding.VMETH_FIELD] == dd[didding.DD_FIELD][didding.VMETH_FIELD] # # should not verify # dd_actual_bad = dd_actual # # remove the last character of the id # dd_actual_bad[didding.VMETH_FIELD][0]["id"] = dd_actual_bad[didding.VMETH_FIELD][0]["id"][:-1] -# vresult = resolving.verify(dd, dd_actual_bad, metadata=True) +# vresult = resolving.verify(dd, dd_actual_bad, meta=True) # assert vresult[didding.DID_RES_META_FIELD]['error'] == 'notVerified' # # TODO test services, alsoKnownAs, etc. diff --git a/tests/dkr/core/test_didding.py b/tests/dkr/core/test_didding.py index 1340fe0..7fc3ee1 100644 --- a/tests/dkr/core/test_didding.py +++ b/tests/dkr/core/test_didding.py @@ -156,7 +156,7 @@ def test_parse_web_did(): def test_gen_did_doc(setup_habs): hby, hab, wesHby, wesHab = setup_habs - didDoc = didding.generateDIDDoc(hby, did, hab.pre, oobi=None, metadata=False) + didDoc = didding.generateDIDDoc(hby, did, hab.pre, oobi=None, meta=False) assert ( didDoc["id"] == f"{did}" @@ -204,9 +204,9 @@ def test_gen_did_doc(setup_habs): } -def test_gen_did_doc_with_metadata(setup_habs): +def test_gen_did_doc_with_meta(setup_habs): hby, hab, wesHby, wesHab = setup_habs - didDoc = didding.generateDIDDoc(hby, did, hab.pre, oobi=None, metadata=True) + didDoc = didding.generateDIDDoc(hby, did, hab.pre, oobi=None, meta=True) assert ( didDoc[didding.DD_FIELD]["id"] == f"{did}" @@ -264,14 +264,14 @@ def test_gen_did_doc_no_hab(setup_habs): did = f"did:web:did-webs-service%3a7676:{aid}" try: - didDoc = didding.generateDIDDoc(hby, did, aid, oobi=None, metadata=False) + didDoc = didding.generateDIDDoc(hby, did, aid, oobi=None, meta=False) except KeyError as e: assert str(e) == f"'{aid}'" msgs = resolving.loadFile(f"./volume/dkr/pages/{aid}/keri.cesr") hby.psr.parse(ims=msgs) - didDoc = didding.generateDIDDoc(hby, did, aid, oobi=None, metadata=False) + didDoc = didding.generateDIDDoc(hby, did, aid, oobi=None, meta=False) expected = resolving.loadJsonFile(f"./volume/dkr/pages/{aid}/did.json") @@ -290,7 +290,7 @@ def test_gen_desig_aliases(setup_habs, seeder): ) didDoc = didding.generateDIDDoc( - hby, did, hab.pre, oobi=None, metadata=True, reg_name=crdntler.rgy.name + hby, did, hab.pre, oobi=None, meta=True, reg_name=crdntler.rgy.name ) assert ( didDoc[didding.DD_FIELD]["id"] @@ -339,7 +339,7 @@ def test_gen_desig_aliases_revoked(setup_habs, seeder): revoke_cred(hab, crdntler.rgy, crdntler.rgy.registryByName("dAliases"), creds[0]) didDoc = didding.generateDIDDoc( - hby, did, hab.pre, oobi=None, metadata=True + hby, did, hab.pre, oobi=None, meta=True ) assert ( didDoc[didding.DD_FIELD]["id"] diff --git a/volume/dkr/examples/get_started_docker.sh b/volume/dkr/examples/get_started_docker.sh index ff9eca0..801b297 100755 --- a/volume/dkr/examples/get_started_docker.sh +++ b/volume/dkr/examples/get_started_docker.sh @@ -20,7 +20,7 @@ echo "" echo "ATTENTION: In your did-webs-service, start the webs server first, see the GETTING_STARTED.md for those instructions" read -p "Press enter to resolve did:webs..." -dkr did webs resolve --name controller --did "did:webs:did-webs-service%3a7676:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe" +dkr did webs resolve --name controller --did "did:webs:did-webs-service%3a7676:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe" --meta True echo "" read -p "Press enter to create designated aliases..." @@ -40,11 +40,11 @@ kli vc export --name controller --alias controller --said "$SAID" --chain echo "" read -p "Press enter generate did:webs with designated aliases..." -dkr did webs generate --name controller --did "did:webs:did-webs-service%3a7676:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe" +dkr did webs generate --name controller --did "did:webs:did-webs-service%3a7676:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe" --meta True cp -R ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe ../pages/ echo "" read -p "Press enter to resolve did:webs with designated aliases..." -dkr did webs resolve --name controller --did "did:webs:did-webs-service%3a7676:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe" \ No newline at end of file +dkr did webs resolve --name controller --did "did:webs:did-webs-service%3a7676:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe" --meta True \ No newline at end of file diff --git a/volume/dkr/examples/get_started_docker_gen.sh b/volume/dkr/examples/get_started_docker_gen.sh index b2f6402..0968e31 100755 --- a/volume/dkr/examples/get_started_docker_gen.sh +++ b/volume/dkr/examples/get_started_docker_gen.sh @@ -9,7 +9,7 @@ kli incept --name controller --alias controller --file /usr/local/var/webs/volum echo "" read -p "Press enter to generate did:webs..." -dkr did webs generate --name controller --did "did:webs:did-webs-service%3a7676:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe" +dkr did webs generate --name controller --did "did:webs:did-webs-service%3a7676:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe" --meta True echo "" read -p "Press enter to copy to pages..." diff --git a/volume/dkr/examples/get_started_docker_resolve.sh b/volume/dkr/examples/get_started_docker_resolve.sh index 044d047..3630feb 100755 --- a/volume/dkr/examples/get_started_docker_resolve.sh +++ b/volume/dkr/examples/get_started_docker_resolve.sh @@ -32,6 +32,6 @@ fi DID="did:webs:did-webs-service%3a7676:$AID" echo "Resolving $AID did:webs $DID... " -source "./get_started_webs_resolve.sh" "${NAME}" "${DID}" +source "./get_started_webs_resolve.sh" "${NAME}" "${DID}" "True" diff --git a/volume/dkr/examples/get_started_docker_wits.sh b/volume/dkr/examples/get_started_docker_wits.sh index 6f4c9e8..39f05fe 100755 --- a/volume/dkr/examples/get_started_docker_wits.sh +++ b/volume/dkr/examples/get_started_docker_wits.sh @@ -25,7 +25,7 @@ echo "" echo "ATTENTION: In your did-webs-service, start the webs server first, see the GETTING_STARTED.md for those instructions" read -p "Press enter to resolve did:webs..." -dkr did webs resolve --name controller --did "did:webs:did-webs-service%3a7676:$AID" +dkr did webs resolve --name controller --did "did:webs:did-webs-service%3a7676:$AID" --meta True echo "" read -p "Press enter to create designated aliases..." @@ -52,4 +52,4 @@ cp -R $AID ../pages/ echo "" read -p "Press enter to resolve did:webs with designated aliases..." -dkr did webs resolve --name controller --did "did:webs:did-webs-service%3a7676:$AID" \ No newline at end of file +dkr did webs resolve --name controller --did "did:webs:did-webs-service%3a7676:$AID" --meta True \ No newline at end of file diff --git a/volume/dkr/examples/get_started_webs_gen.sh b/volume/dkr/examples/get_started_webs_gen.sh index 4797910..c84dc6d 100755 --- a/volume/dkr/examples/get_started_webs_gen.sh +++ b/volume/dkr/examples/get_started_webs_gen.sh @@ -8,4 +8,4 @@ hostPath=$2 aid=$3 # generate controller did:webs for EKYGGh-FtAphGmSZbsuBs_t4qpsjYJ2ZqvMKluq9OxmP at labs.hyperledger.org -dkr did webs generate --name "${ctrlName}" --did "did:webs:${hostPath}:${aid}" \ No newline at end of file +dkr did webs generate --name "${ctrlName}" --did "did:webs:${hostPath}:${aid}" --meta True \ No newline at end of file diff --git a/volume/dkr/examples/get_started_webs_resolve.sh b/volume/dkr/examples/get_started_webs_resolve.sh index 37abbf5..8267243 100755 --- a/volume/dkr/examples/get_started_webs_resolve.sh +++ b/volume/dkr/examples/get_started_webs_resolve.sh @@ -4,6 +4,8 @@ ctrlName=$1 # did did=$2 +# metadata +meta=$3 # generate controller did:webs for EKYGGh-FtAphGmSZbsuBs_t4qpsjYJ2ZqvMKluq9OxmP at labs.hyperledger.org -dkr did webs resolve --name "${ctrlName}" --did "${did}" +dkr did webs resolve --name "${ctrlName}" --did "${did}" --meta "${meta}" diff --git a/volume/dkr/pages/ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe/did.json b/volume/dkr/pages/ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe/did.json index 622f4f4..974d1c4 100644 --- a/volume/dkr/pages/ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe/did.json +++ b/volume/dkr/pages/ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe/did.json @@ -1 +1 @@ -{"id": "did:web:did-webs-service%3a7676:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe", "verificationMethod": [{"id": "#DHr0-I-mMN7h6cLMOTRJkkfPuMd0vgQPrOk4Y3edaHjr", "type": "JsonWebKey", "controller": "did:web:did-webs-service%3a7676:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe", "publicKeyJwk": {"kid": "DHr0-I-mMN7h6cLMOTRJkkfPuMd0vgQPrOk4Y3edaHjr", "kty": "OKP", "crv": "Ed25519", "x": "evT4j6Yw3uHpwsw5NEmSR8-4x3S-BA-s6Thjd51oeOs"}}], "service": [], "alsoKnownAs": []} \ No newline at end of file +{"id": "did:web:did-webs-service%3a7676:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe", "verificationMethod": [{"id": "#DHr0-I-mMN7h6cLMOTRJkkfPuMd0vgQPrOk4Y3edaHjr", "type": "JsonWebKey", "controller": "did:web:did-webs-service%3a7676:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe", "publicKeyJwk": {"kid": "DHr0-I-mMN7h6cLMOTRJkkfPuMd0vgQPrOk4Y3edaHjr", "kty": "OKP", "crv": "Ed25519", "x": "evT4j6Yw3uHpwsw5NEmSR8-4x3S-BA-s6Thjd51oeOs"}}], "service": [], "alsoKnownAs": ["did:web:did-webs-service%3a7676:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe", "did:webs:did-webs-service%3a7676:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe", "did:web:example.com:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe", "did:web:foo.com:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe", "did:webs:foo.com:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe"]} \ No newline at end of file diff --git a/volume/dkr/pages/ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe/keri.cesr b/volume/dkr/pages/ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe/keri.cesr index 64c2068..74988cd 100644 --- a/volume/dkr/pages/ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe/keri.cesr +++ b/volume/dkr/pages/ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe/keri.cesr @@ -1 +1 @@ -{"v":"KERI10JSON00012b_","t":"icp","d":"ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe","i":"ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe","s":"0","kt":"1","k":["DHr0-I-mMN7h6cLMOTRJkkfPuMd0vgQPrOk4Y3edaHjr"],"nt":"1","n":["ELa775aLyane1vdiJEuexP8zrueiIoG995pZPGJiBzGX"],"bt":"0","b":[],"c":[],"a":[]}-VAn-AABAADjfOjbPu9OWce59OQIc-y3Su4kvfC2BAd_e_NLHbXcOK8-3s6do5vBfrxQ1kDyvFGCPMcSl620dLMZ4QDYlvME-EAB0AAAAAAAAAAAAAAAAAAAAAAA1AAG2024-03-06T14c48c10d241878p00c00 \ No newline at end of file +{"v":"KERI10JSON00012b_","t":"icp","d":"ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe","i":"ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe","s":"0","kt":"1","k":["DHr0-I-mMN7h6cLMOTRJkkfPuMd0vgQPrOk4Y3edaHjr"],"nt":"1","n":["ELa775aLyane1vdiJEuexP8zrueiIoG995pZPGJiBzGX"],"bt":"0","b":[],"c":[],"a":[]}-VAn-AABAADjfOjbPu9OWce59OQIc-y3Su4kvfC2BAd_e_NLHbXcOK8-3s6do5vBfrxQ1kDyvFGCPMcSl620dLMZ4QDYlvME-EAB0AAAAAAAAAAAAAAAAAAAAAAA1AAG2024-04-01T17c40c48d329209p00c00{"v":"KERI10JSON00013a_","t":"ixn","d":"ED-4iQIVxwMcrTOW6fVs9oPpLTIxtqh_vcvLmE999zsU","i":"ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe","s":"1","p":"ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe","a":[{"i":"EAtQJEQMkkvlWxyfLbcLyv4kNeAI5Qsqe65vKIWnHKpx","s":"0","d":"EAtQJEQMkkvlWxyfLbcLyv4kNeAI5Qsqe65vKIWnHKpx"}]}-VAn-AABAACNra5mDg7YHFtBeXiwIGqnHkyq7F55FGNYG1wH95akjSWCb1HzNI3E05ufT0HffClDxnJF_DmAUW2SBb0EJeoO-EAB0AAAAAAAAAAAAAAAAAAAAAAB1AAG2024-04-01T17c42c37d704426p00c00{"v":"KERI10JSON00013a_","t":"ixn","d":"EBjw0a_L8M0F4xYND99dvahlrkpxODi9Wc9VzUvkhD0t","i":"ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe","s":"2","p":"ED-4iQIVxwMcrTOW6fVs9oPpLTIxtqh_vcvLmE999zsU","a":[{"i":"EIGWggWL2IHiUzj1P2YuPA0-Uh55LTIu14KTvVQGrfvT","s":"0","d":"EJQvCZQYn8oO1z3_f8qhxXjk7TcLol4G3RdHVTwfGV3L"}]}-VAn-AABAABo_okwAmWIYWI93EtUONZiEvsGuSRkKnj0mopX_RoXwWHZ_1V5hQ0BxcntsmAi21DbusyCmK-fHwTNtSxUSsoN-EAB0AAAAAAAAAAAAAAAAAAAAAAC1AAG2024-04-01T17c42c39d995867p00c00{"v":"KERI10JSON000113_","t":"vcp","d":"EAtQJEQMkkvlWxyfLbcLyv4kNeAI5Qsqe65vKIWnHKpx","i":"EAtQJEQMkkvlWxyfLbcLyv4kNeAI5Qsqe65vKIWnHKpx","ii":"ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe","s":"0","c":["NB"],"bt":"0","b":[],"n":"AAfqHwMDdBoIWk_4Z6hvVJuhtvjA_gk8Y9bEUoP_rC_p"}-VAS-GAB0AAAAAAAAAAAAAAAAAAAAAABED-4iQIVxwMcrTOW6fVs9oPpLTIxtqh_vcvLmE999zsU{"v":"KERI10JSON0000ed_","t":"iss","d":"EJQvCZQYn8oO1z3_f8qhxXjk7TcLol4G3RdHVTwfGV3L","i":"EIGWggWL2IHiUzj1P2YuPA0-Uh55LTIu14KTvVQGrfvT","s":"0","ri":"EAtQJEQMkkvlWxyfLbcLyv4kNeAI5Qsqe65vKIWnHKpx","dt":"2023-11-13T17:41:37.710691+00:00"}-VAS-GAB0AAAAAAAAAAAAAAAAAAAAAACEBjw0a_L8M0F4xYND99dvahlrkpxODi9Wc9VzUvkhD0t{"v":"ACDC10JSON0005f2_","d":"EIGWggWL2IHiUzj1P2YuPA0-Uh55LTIu14KTvVQGrfvT","i":"ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe","ri":"EAtQJEQMkkvlWxyfLbcLyv4kNeAI5Qsqe65vKIWnHKpx","s":"EN6Oh5XSD5_q2Hgu-aqpdfbVepdpYpFlgz6zvJL5b_r5","a":{"d":"EJJjtYa6D4LWe_fqtm1p78wz-8jNAzNX6aPDkrQcz27Q","dt":"2023-11-13T17:41:37.710691+00:00","ids":["did:web:did-webs-service%3a7676:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe","did:webs:did-webs-service%3a7676:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe","did:web:example.com:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe","did:web:foo.com:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe","did:webs:foo.com:ENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe"]},"r":{"d":"EEVTx0jLLZDQq8a5bXrXgVP0JDP7j8iDym9Avfo8luLw","aliasDesignation":{"l":"The issuer of this ACDC designates the identifiers in the ids field as the only allowed namespaced aliases of the issuer's AID."},"usageDisclaimer":{"l":"This attestation only asserts designated aliases of the controller of the AID, that the AID controlled namespaced alias has been designated by the controller. It does not assert that the controller of this AID has control over the infrastructure or anything else related to the namespace other than the included AID."},"issuanceDisclaimer":{"l":"All information in a valid and non-revoked alias designation assertion is accurate as of the date specified."},"termsOfUse":{"l":"Designated aliases of the AID must only be used in a manner consistent with the expressed intent of the AID controller."}}}-VA0-FABENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe0AAAAAAAAAAAAAAAAAAAAAAAENro7uf0ePmiK3jdTo2YCdXLqW7z7xoP6qhhBou6gBLe-AABAADQOX208DAmZEPb2v0XXF0N6WgxOdOxB3AsCBJds_vbAr7v1PQBA4MWNsXc8unk5UykbB8j538XGkzLtujekvIP \ No newline at end of file