Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
'multidict>=6.0.5',
'ordered-set>=4.1.0',
'hio>=0.6.19',
'multicommand>=1.0.0',
'multicommand==1.0.0',
'jsonschema>=4.21.1',
'falcon>=3.1.3',
'hjson>=3.1.0',
Expand Down
74 changes: 74 additions & 0 deletions src/keri/app/cli/commands/delete.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
# -*- encoding: utf-8 -*-
"""
KERI
keri.kli.commands module

"""
import argparse

from hio.base import doing

from keri import help
from keri.app.cli.common import existing
from keri.db.dbing import dgKey, snKey

logger = help.ogler.getLogger()

parser = argparse.ArgumentParser(description='Remove an AID from the database')
parser.set_defaults(handler=lambda args: handler(args),
transferable=True)
parser.add_argument('--name', '-n', help='keystore name and file location of KERI keystore', required=True)
parser.add_argument('--base', '-b', help='additional optional prefix to file location of KERI keystore',
required=False, default="")
parser.add_argument('--prefix', help='qb64 identifier prefix to display', required=True)
parser.add_argument('--passcode', '-p', help='21 character encryption passcode for keystore (is not saved)',
dest="bran", default=None) # passcode => bran


def handler(args):
kever = DeleteDoer(name=args.name, base=args.base, bran=args.bran, prefix=args.prefix)
return [kever]


class DeleteDoer(doing.Doer):

def __init__(self, name, base, bran, prefix, poll=False, verbose=False):
self.prefix = prefix
self.poll = poll
self.verbose = verbose
self.hby = existing.setupHby(name=name, base=base, bran=bran)
super(DeleteDoer, self).__init__()

def recur(self, tyme):
""" Command line status handler

"""
preb = self.prefix.encode("utf-8")

if self.prefix not in self.hby.kevers:
print(f"Identifier prefix {self.prefix} is not known locally")
return True

count = 0
for _, fn, dig in self.hby.db.getFelItemPreIter(self.prefix):
dgkeys = (self.prefix, dig)
dgkey = dgKey(preb, dig)

self.hby.db.delEvt(dgkey)
self.hby.db.delWigs(dgkey)
self.hby.db.delSigs(dgkey)
self.hby.db.delDts(dgkey)
self.hby.db.wits.rem(keys=dgkeys)
self.hby.db.delKes(dgkey)
self.hby.db.delAes(dgkey)
self.hby.db.esrs.rem(dgkeys)
self.hby.db.fons.rem(dgkey)
count += 1

for sn in range(count):
self.hby.db.delKes(snKey(preb, sn))
self.hby.db.delFe(snKey(preb, sn))

self.hby.db.states.rem(keys=self.prefix)

return True
2 changes: 0 additions & 2 deletions src/keri/app/cli/commands/vc/create.py
Original file line number Diff line number Diff line change
Expand Up @@ -218,8 +218,6 @@ def createDo(self, tymth, tock=0.0, **kwa):
dt = self.creder.attrib["dt"] if "dt" in self.creder.attrib else helping.nowIso8601()
iserder = registry.issue(said=self.creder.said, dt=dt)

#vcid = iserder.ked["i"]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thank you for leaving the campsite cleaner than you found it

#rseq = coring.Seqner(snh=iserder.ked["s"])
rseal = eventing.SealEvent(iserder.pre, iserder.snh, iserder.said)
rseal = dict(i=rseal.i, s=rseal.s, d=rseal.d)

Expand Down
6 changes: 6 additions & 0 deletions src/keri/app/cli/commands/vc/schema/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# -*- encoding: utf-8 -*-
"""
KERI
keri.kli.commands.vc.schema module

"""
85 changes: 85 additions & 0 deletions src/keri/app/cli/commands/vc/schema/import.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# -*- encoding: utf-8 -*-
"""
KERI
keri.kli.commands.vc.schema module

"""
import argparse
import json

from hio.base import doing

from keri import help, kering
from keri.app.cli.common import existing
from keri.core import scheming

logger = help.ogler.getLogger()

parser = argparse.ArgumentParser(description='Import ACDC JSON schema file into the schema database')
parser.set_defaults(handler=lambda args: import_schema(args))
parser.add_argument('--name', '-n', help='keystore name and file location of KERI keystore', required=True)
parser.add_argument('--base', '-b', help='additional optional prefix to file location of KERI keystore',
required=False, default="")
parser.add_argument('--passcode', '-p', help='21 character encryption passcode for keystore (is not saved)',
dest="bran", default=None) # passcode => bran
parser.add_argument('--schema', '-s', help='path to ACDC JSON schema file to import', required=True)


def import_schema(args):
""" Command line handler for importing ACDC JSON schema files

"""
idoer = ImportDoer(name=args.name,
base=args.base,
bran=args.bran,
schema=args.schema)
return [idoer]


class ImportDoer(doing.DoDoer):

def __init__(self, name, base, bran, schema):
self.schemaPath = schema
self.hby = existing.setupHby(name=name, base=base, bran=bran)

doers = [doing.doify(self.importDo)]

super(ImportDoer, self).__init__(doers=doers)

def importDo(self, tymth, tock=0.0, **kwa):
""" Import ACDC JSON schema file into the schema database

Parameters:
tymth (function): injected function wrapper closure returned by .tymen() of
Tymist instance. Calling tymth() returns associated Tymist .tyme.
tock (float): injected initial tock value

Returns: doifiable Doist compatible generator method

"""
# enter context
self.wind(tymth)
self.tock = tock
_ = (yield self.tock)

try:
# Read the schema file
with open(self.schemaPath, 'rb') as f:
raw = f.read()

# Create Schemer instance which validates the schema
schemer = scheming.Schemer(raw=raw)

# Store the schema in the database
self.hby.db.schema.pin(keys=(schemer.said,), val=schemer)

print(f"Schema successfully imported with SAID: {schemer.said}")

except FileNotFoundError:
raise kering.ConfigurationError(f"Schema file not found: {self.schemaPath}")
except json.JSONDecodeError as e:
raise kering.ConfigurationError(f"Invalid JSON in schema file: {e}")
except kering.ValidationError as e:
raise kering.ConfigurationError(f"Schema validation failed: {e}")
except Exception as e:
raise kering.ConfigurationError(f"Error importing schema: {e}")
6 changes: 5 additions & 1 deletion src/keri/vc/protocoling.py
Original file line number Diff line number Diff line change
Expand Up @@ -219,14 +219,15 @@ def ipexAgreeExn(hab, message, offer):
return exn, ims


def ipexGrantExn(hab, recp, message, acdc, iss=None, anc=None, agree=None, dt=None):
def ipexGrantExn(hab, recp, message, acdc, reg=None, iss=None, anc=None, agree=None, dt=None):
""" Disclose an ACDC

Parameters:
hab(Hab): identifier environment for issuer of credential
recp (str) qb64 AID of recipient of GRANT message
message(str): Human readable message regarding the credential disclosure
acdc (bytes): CESR stream of serialized ACDC with attachments
reg (bytes): serialized TEL registry event
iss (bytes): serialized TEL issuance event
anc (bytes): serialized anchoring event in the KEL, either ixn or rot
agree (Serder): optional IPEX exn agree message that this grant is response to.
Expand All @@ -246,6 +247,9 @@ def ipexGrantExn(hab, recp, message, acdc, iss=None, anc=None, agree=None, dt=No
acdc=acdc,
)

if reg is not None:
embeds['reg'] = reg

if iss is not None:
embeds['iss'] = iss

Expand Down
1 change: 1 addition & 0 deletions src/keri/vdr/credentialing.py
Original file line number Diff line number Diff line change
Expand Up @@ -561,6 +561,7 @@ def issue(self, creder, iserder, anc):
if not isinstance(hab, GroupHab): # not a multisig group
seqner = coring.Seqner(sn=hab.kever.sner.num)
saider = coring.Saider(qb64=hab.kever.serder.said)
# Key is credential SAID and TEL event SAID
registry.anchorMsg(pre=vcid, regd=iserder.said, seqner=seqner, saider=saider)

print("Waiting for TEL event witness receipts")
Expand Down
1 change: 0 additions & 1 deletion src/keri/vdr/viring.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
from ..app import signing
from ..core import coring, serdering, indexing, counting
from ..db import dbing, basing
from ..db.dbing import snKey
from ..vdr import eventing
from .. import help

Expand Down
Loading