keri 2.0.0.dev1__tar.gz → 2.0.0.dev5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {keri-2.0.0.dev1/src/keri.egg-info → keri-2.0.0.dev5}/PKG-INFO +17 -15
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/setup.py +20 -18
- keri-2.0.0.dev5/src/keri/__init__.py +7 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/agenting.py +126 -63
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/aid.py +6 -9
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/challenge/respond.py +4 -7
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/challenge/verify.py +3 -7
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/clean.py +4 -14
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/contacts/list.py +4 -9
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/contacts/replace.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/decrypt.py +3 -6
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/delegate/confirm.py +3 -6
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/delegate/request.py +3 -6
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/did/generate.py +1 -11
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ends/add.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ends/export.py +4 -9
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ends/list.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/escrow/clear.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/escrow/list.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/event.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/export.py +8 -16
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/import.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/incept.py +24 -9
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/init.py +4 -10
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/interact.py +3 -6
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/introduce.py +3 -6
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/admit.py +3 -6
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/grant.py +3 -6
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/join.py +0 -5
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/list.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/spurn.py +3 -6
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/kevers.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/list.py +4 -9
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/local/watch.py +4 -13
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/location/add.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/mailbox/add.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/mailbox/debug.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/mailbox/list.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/mailbox/update.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/migrate/list.py +4 -13
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/migrate/run.py +4 -13
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/migrate/show.py +4 -15
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/continue.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/incept.py +3 -6
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/interact.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/join.py +4 -9
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/notice.py +4 -10
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/rotate.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/shell.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/update.py +4 -9
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/notifications/list.py +5 -9
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/notifications/mark.py +5 -9
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/notifications/rem.py +5 -9
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/oobi/clean.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/oobi/generate.py +4 -12
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/oobi/resolve.py +4 -14
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/passcode/remove.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/passcode/set.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/query.py +4 -12
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/rename.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/rollback.py +5 -9
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/rotate.py +3 -6
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/sign.py +3 -6
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ssh/export.py +4 -9
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/status.py +4 -9
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/create.py +3 -6
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/export.py +5 -9
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/list.py +4 -9
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/registry/incept.py +27 -10
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/registry/list.py +3 -7
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/registry/status.py +3 -6
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/revoke.py +3 -6
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/verify.py +3 -7
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/version.py +2 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/watcher/add.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/watcher/adjudicate.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/watcher/list.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/witness/authenticate.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/witness/list.py +4 -8
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/witness/start.py +2 -5
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/witness/submit.py +5 -9
- keri-2.0.0.dev5/src/keri/app/cli/common/parsing.py +41 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/delegating.py +25 -21
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/forwarding.py +55 -4
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/grouping.py +21 -2
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/habbing.py +1 -1
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/httping.py +36 -1
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/indirecting.py +1 -1
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/notifying.py +5 -5
- keri-2.0.0.dev5/src/keri/core/__init__.py +26 -0
- keri-2.0.0.dev1/src/keri/core/streaming.py → keri-2.0.0.dev5/src/keri/core/annotating.py +2 -126
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/coring.py +753 -680
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/counting.py +38 -26
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/eventing.py +119 -200
- keri-2.0.0.dev5/src/keri/core/mapping.py +1802 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/parsing.py +228 -42
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/serdering.py +930 -297
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/signing.py +129 -3
- keri-2.0.0.dev5/src/keri/core/structing.py +1903 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/escrowing.py +31 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/migrations/add_key_and_reg_state_schemas.py +4 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/kering.py +4 -4
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/peer/exchanging.py +3 -3
- {keri-2.0.0.dev1/src/keri/vc → keri-2.0.0.dev5/src/keri/spac}/__init__.py +1 -1
- keri-2.0.0.dev5/src/keri/spac/payloading.py +116 -0
- keri-2.0.0.dev5/src/keri/vc/__init__.py +10 -0
- keri-2.0.0.dev5/src/keri/vc/messaging.py +1013 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/vc/proving.py +5 -2
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/vdr/credentialing.py +147 -81
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/vdr/verifying.py +3 -3
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/vdr/viring.py +2 -2
- {keri-2.0.0.dev1 → keri-2.0.0.dev5/src/keri.egg-info}/PKG-INFO +17 -15
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri.egg-info/SOURCES.txt +5 -2
- keri-2.0.0.dev5/src/keri.egg-info/requires.txt +22 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/tests/test_kering.py +7 -3
- keri-2.0.0.dev1/src/keri/__init__.py +0 -5
- keri-2.0.0.dev1/src/keri/app/cli/common/incepting.py +0 -33
- keri-2.0.0.dev1/src/keri/core/__init__.py +0 -19
- keri-2.0.0.dev1/src/keri/core/mapping.py +0 -412
- keri-2.0.0.dev1/src/keri/core/structing.py +0 -719
- keri-2.0.0.dev1/src/keri.egg-info/requires.txt +0 -20
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/LICENSE +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/README.md +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/setup.cfg +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/apping.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/challenging.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/challenge/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/challenge/generate.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/contacts/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/delegate/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/did/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ends/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/escrow/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/agree.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/apply.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ipex/offer.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/local/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/location/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/mailbox/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/migrate/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/multisig/demo.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/nonce.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/notifications/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/oobi/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/passcode/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/passcode/generate.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/saidify.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/salt.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/ssh/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/time.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/vc/registry/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/watcher/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/witness/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/commands/witness/demo.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/common/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/common/config.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/common/displaying.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/common/existing.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/common/rotating.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/common/terming.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/cli/kli.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/configing.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/connecting.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/directing.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/keeping.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/oobiing.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/querying.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/signaling.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/signing.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/specing.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/storing.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/app/watching.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/indexing.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/routing.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/core/scheming.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/basing.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/dbing.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/koming.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/migrations/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/migrations/hab_data_rename.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/migrations/rekey_habs.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/db/subing.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/demo/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/demo/demo_bob.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/demo/demo_eve.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/demo/demo_kev.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/demo/demo_sam.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/demo/demoing.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/end/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/end/ending.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/end/priming.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/help/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/help/helping.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/peer/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/vc/protocoling.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/vc/walleting.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/vdr/__init__.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri/vdr/eventing.py +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri.egg-info/dependency_links.txt +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri.egg-info/entry_points.txt +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri.egg-info/not-zip-safe +0 -0
- {keri-2.0.0.dev1 → keri-2.0.0.dev5}/src/keri.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: keri
|
|
3
|
-
Version: 2.0.0.
|
|
3
|
+
Version: 2.0.0.dev5
|
|
4
4
|
Summary: Key Event Receipt Infrastructure
|
|
5
5
|
Home-page: https://github.com/WebOfTrust/keripy
|
|
6
6
|
Author: Samuel M. Smith
|
|
@@ -18,28 +18,30 @@ Classifier: Operating System :: Microsoft :: Windows
|
|
|
18
18
|
Classifier: Programming Language :: Python :: 3.13
|
|
19
19
|
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
20
20
|
Classifier: Topic :: Utilities
|
|
21
|
-
Requires-Python: >=3.
|
|
21
|
+
Requires-Python: >=3.14.2
|
|
22
22
|
License-File: LICENSE
|
|
23
|
-
Requires-Dist: lmdb>=1.
|
|
23
|
+
Requires-Dist: lmdb>=1.7.5
|
|
24
24
|
Requires-Dist: pysodium>=0.7.18
|
|
25
|
-
Requires-Dist: blake3>=1.0.
|
|
26
|
-
Requires-Dist: msgpack>=1.1.
|
|
27
|
-
Requires-Dist: cbor2>=5.
|
|
28
|
-
Requires-Dist: multidict>=6.
|
|
25
|
+
Requires-Dist: blake3>=1.0.8
|
|
26
|
+
Requires-Dist: msgpack>=1.1.2
|
|
27
|
+
Requires-Dist: cbor2>=5.8.0
|
|
28
|
+
Requires-Dist: multidict>=6.7.0
|
|
29
29
|
Requires-Dist: ordered-set>=4.1.0
|
|
30
|
-
Requires-Dist: hio>=0.7.
|
|
31
|
-
Requires-Dist: multicommand
|
|
32
|
-
Requires-Dist: jsonschema>=4.
|
|
33
|
-
Requires-Dist: falcon>=4.0
|
|
30
|
+
Requires-Dist: hio>=0.7.18
|
|
31
|
+
Requires-Dist: multicommand==1.0.0
|
|
32
|
+
Requires-Dist: jsonschema>=4.26.0
|
|
33
|
+
Requires-Dist: falcon>=4.2.0
|
|
34
34
|
Requires-Dist: hjson>=3.1.0
|
|
35
|
-
Requires-Dist: PyYaml>=6.0.
|
|
36
|
-
Requires-Dist: apispec>=6.
|
|
35
|
+
Requires-Dist: PyYaml>=6.0.3
|
|
36
|
+
Requires-Dist: apispec>=6.9.0
|
|
37
37
|
Requires-Dist: mnemonic>=0.21
|
|
38
|
-
Requires-Dist: PrettyTable>=3.
|
|
38
|
+
Requires-Dist: PrettyTable>=3.17.0
|
|
39
39
|
Requires-Dist: http_sfv>=0.9.9
|
|
40
|
-
Requires-Dist: cryptography>=
|
|
40
|
+
Requires-Dist: cryptography>=46.0.3
|
|
41
41
|
Requires-Dist: semver>=3.0.4
|
|
42
42
|
Requires-Dist: qrcode>=8.2
|
|
43
|
+
Requires-Dist: setuptools>=80.9.0
|
|
44
|
+
Requires-Dist: wheel>=0.45.1
|
|
43
45
|
Dynamic: author
|
|
44
46
|
Dynamic: author-email
|
|
45
47
|
Dynamic: classifier
|
|
@@ -37,7 +37,7 @@ from os.path import splitext
|
|
|
37
37
|
from setuptools import find_packages, setup
|
|
38
38
|
setup(
|
|
39
39
|
name='keri',
|
|
40
|
-
version='2.0.0-
|
|
40
|
+
version='2.0.0-dev5', # also change in src/keri/__init__.py
|
|
41
41
|
license='Apache Software License 2.0',
|
|
42
42
|
description='Key Event Receipt Infrastructure',
|
|
43
43
|
long_description="KERI Decentralized Key Management Infrastructure",
|
|
@@ -74,34 +74,36 @@ setup(
|
|
|
74
74
|
keywords=[
|
|
75
75
|
# eg: 'keyword1', 'keyword2', 'keyword3',
|
|
76
76
|
],
|
|
77
|
-
python_requires='>=3.
|
|
77
|
+
python_requires='>=3.14.2',
|
|
78
78
|
install_requires=[
|
|
79
|
-
'lmdb>=1.
|
|
79
|
+
'lmdb>=1.7.5',
|
|
80
80
|
'pysodium>=0.7.18',
|
|
81
|
-
'blake3>=1.0.
|
|
82
|
-
'msgpack>=1.1.
|
|
83
|
-
'cbor2>=5.
|
|
84
|
-
'multidict>=6.
|
|
81
|
+
'blake3>=1.0.8',
|
|
82
|
+
'msgpack>=1.1.2',
|
|
83
|
+
'cbor2>=5.8.0',
|
|
84
|
+
'multidict>=6.7.0',
|
|
85
85
|
'ordered-set>=4.1.0',
|
|
86
|
-
'hio>=0.7.
|
|
87
|
-
'multicommand
|
|
88
|
-
'jsonschema>=4.
|
|
89
|
-
'falcon>=4.0
|
|
86
|
+
'hio>=0.7.18',
|
|
87
|
+
'multicommand==1.0.0',
|
|
88
|
+
'jsonschema>=4.26.0',
|
|
89
|
+
'falcon>=4.2.0',
|
|
90
90
|
'hjson>=3.1.0',
|
|
91
|
-
'PyYaml>=6.0.
|
|
92
|
-
'apispec>=6.
|
|
91
|
+
'PyYaml>=6.0.3',
|
|
92
|
+
'apispec>=6.9.0',
|
|
93
93
|
'mnemonic>=0.21',
|
|
94
|
-
'PrettyTable>=3.
|
|
94
|
+
'PrettyTable>=3.17.0',
|
|
95
95
|
'http_sfv>=0.9.9',
|
|
96
|
-
'cryptography>=
|
|
96
|
+
'cryptography>=46.0.3',
|
|
97
97
|
'semver>=3.0.4',
|
|
98
|
-
'qrcode>=8.2'
|
|
98
|
+
'qrcode>=8.2',
|
|
99
|
+
'setuptools>=80.9.0',
|
|
100
|
+
'wheel>=0.45.1',
|
|
99
101
|
],
|
|
100
102
|
extras_require={
|
|
101
103
|
},
|
|
102
104
|
tests_require=[
|
|
103
|
-
'coverage>=7.
|
|
104
|
-
'pytest>=
|
|
105
|
+
'coverage>=7.13.1',
|
|
106
|
+
'pytest>=9.0.2',
|
|
105
107
|
'pytest-shell>=0.3.2'
|
|
106
108
|
],
|
|
107
109
|
setup_requires=[
|
|
@@ -27,9 +27,23 @@ logger = help.ogler.getLogger()
|
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
class Receiptor(doing.DoDoer):
|
|
30
|
+
"""
|
|
31
|
+
Receiptor is a parent task orchestrating both initial receipt retrieval of KEL events and
|
|
32
|
+
subsequent retrieval of receipts for specific events based on queries.
|
|
33
|
+
"""
|
|
30
34
|
|
|
31
35
|
def __init__(self, hby, msgs=None, gets=None, cues=None):
|
|
36
|
+
"""
|
|
37
|
+
Initialize the Receiptor and create doers for processing and retrieving witness receipts.
|
|
32
38
|
|
|
39
|
+
Parameters:
|
|
40
|
+
hby (Habery): Habery to pull identifiers and witnesses for those identifiers from
|
|
41
|
+
msgs (Deck): KEL event messages to publish to witnesses for receipting
|
|
42
|
+
Messages should have {"pre": <str>, "sn": <int>, "auths": <dict>}
|
|
43
|
+
gets (Deck): query messages of KEL events to retrieve receipts from witnesses for
|
|
44
|
+
Messages should have {"pre": <str>, "sn": <int>}
|
|
45
|
+
cues (Deck): outgoing cues of successful messages; currently the messages placed here are not used
|
|
46
|
+
"""
|
|
33
47
|
self.msgs = msgs if msgs is not None else decking.Deck()
|
|
34
48
|
self.gets = gets if gets is not None else decking.Deck()
|
|
35
49
|
self.cues = cues if cues is not None else decking.Deck()
|
|
@@ -41,11 +55,11 @@ class Receiptor(doing.DoDoer):
|
|
|
41
55
|
super(Receiptor, self).__init__(doers=doers)
|
|
42
56
|
|
|
43
57
|
def receipt(self, pre, sn=None, auths=None):
|
|
44
|
-
"""
|
|
58
|
+
"""Returns a generator performing witness receipting of KEL events.
|
|
45
59
|
|
|
46
60
|
The returns a generator that will submit the designated event to witnesses for receipts using
|
|
47
|
-
the synchronous witness API, then
|
|
48
|
-
|
|
61
|
+
the synchronous witness API, then propagate the receipts to each of the other witnesses.
|
|
62
|
+
Delegates to .catchup to catch up any new witnesses to the current state of the KEL.
|
|
49
63
|
|
|
50
64
|
Parameters:
|
|
51
65
|
pre (str): qualified base64 identifier to gather receipts for
|
|
@@ -54,7 +68,6 @@ class Receiptor(doing.DoDoer):
|
|
|
54
68
|
|
|
55
69
|
Returns:
|
|
56
70
|
list: identifiers of witnesses that returned receipts.
|
|
57
|
-
|
|
58
71
|
"""
|
|
59
72
|
auths = auths if auths is not None else dict()
|
|
60
73
|
if pre not in self.hby.prefixes:
|
|
@@ -87,6 +100,7 @@ class Receiptor(doing.DoDoer):
|
|
|
87
100
|
except (kering.MissingEntryError, gaierror) as e:
|
|
88
101
|
logger.error(f"unable to create http client for witness {wit}: {e}")
|
|
89
102
|
|
|
103
|
+
# send to each witness and gather receipts
|
|
90
104
|
rcts = dict()
|
|
91
105
|
for wit, client in clients.items():
|
|
92
106
|
headers = dict()
|
|
@@ -110,9 +124,10 @@ class Receiptor(doing.DoDoer):
|
|
|
110
124
|
else:
|
|
111
125
|
print(f"invalid response {rep.status} from witnesses {wit}")
|
|
112
126
|
|
|
127
|
+
# send retrieved receipts to all other witnesses
|
|
113
128
|
for wit in rcts:
|
|
114
|
-
ewits = [w for w in rcts if w != wit]
|
|
115
|
-
wigs = [sig for w, sig in rcts.items() if w != wit]
|
|
129
|
+
ewits = [w for w in rcts if w != wit] # get complement of all other witnesses
|
|
130
|
+
wigs = [sig for w, sig in rcts.items() if w != wit] # all other witness signatures
|
|
116
131
|
|
|
117
132
|
msg = bytearray()
|
|
118
133
|
if ser.ked['t'] in (coring.Ilks.icp, coring.Ilks.dip): # introduce new witnesses
|
|
@@ -141,18 +156,15 @@ class Receiptor(doing.DoDoer):
|
|
|
141
156
|
return rcts.keys()
|
|
142
157
|
|
|
143
158
|
def get(self, pre, sn=None):
|
|
144
|
-
"""
|
|
145
|
-
|
|
146
|
-
The returns a generator that will request receipts for event identified by pre and sn
|
|
159
|
+
"""
|
|
160
|
+
Queries a random witness for the receipt of the event at the sequence number for a prefix.
|
|
147
161
|
|
|
162
|
+
Returns:
|
|
163
|
+
a generator requesting receipts for event identified by pre and sn
|
|
148
164
|
|
|
149
165
|
Parameters:
|
|
150
|
-
pre (str): qualified base64 identifier to gather
|
|
166
|
+
pre (str): qualified base64 identifier to gather a receipt for
|
|
151
167
|
sn: (Optiona[int]): sequence number of event to gather receipts for, latest is used if not provided
|
|
152
|
-
|
|
153
|
-
Returns:
|
|
154
|
-
list: identifiers of witnesses that returned receipts.
|
|
155
|
-
|
|
156
168
|
"""
|
|
157
169
|
if pre not in self.hby.prefixes:
|
|
158
170
|
raise kering.MissingEntryError(f"{pre} not a valid AID")
|
|
@@ -185,12 +197,16 @@ class Receiptor(doing.DoDoer):
|
|
|
185
197
|
return rep.status == 200
|
|
186
198
|
|
|
187
199
|
def catchup(self, pre, wit):
|
|
188
|
-
"""
|
|
200
|
+
"""
|
|
201
|
+
A generator that catches up a target witness with the latest KEL state of a prefix.
|
|
202
|
+
When adding a new Witness use this method to catch the witness up to the current state of the KEL
|
|
203
|
+
|
|
204
|
+
Returns:
|
|
205
|
+
a generator that sends the KEL to the witness
|
|
189
206
|
|
|
190
207
|
Parameters:
|
|
191
208
|
pre (str): qualified base64 AID of the KEL to send
|
|
192
209
|
wit (str): qualified base64 AID of the witness to send the KEL to
|
|
193
|
-
|
|
194
210
|
"""
|
|
195
211
|
if pre not in self.hby.prefixes:
|
|
196
212
|
raise kering.MissingEntryError(f"{pre} not a valid AID")
|
|
@@ -209,14 +225,17 @@ class Receiptor(doing.DoDoer):
|
|
|
209
225
|
|
|
210
226
|
def witDo(self, tymth=None, tock=0.0, **kwa):
|
|
211
227
|
"""
|
|
212
|
-
|
|
213
|
-
|
|
228
|
+
A generator that obtains witness receipts for one key event message at a tyme by processing all messages in
|
|
229
|
+
the .msgs buffer and adds processed messages to cues. Catches up any new witnesses in "adds"
|
|
230
|
+
to the current state of the KEL using self.catchup.
|
|
231
|
+
Intended to be used with doify to create a generator Doer.
|
|
232
|
+
Delegates to the internal receipt generator function.
|
|
214
233
|
|
|
234
|
+
Returns:
|
|
235
|
+
a Hio generator function to be used as a Doer.
|
|
215
236
|
Parameters:
|
|
216
|
-
tymth (function):
|
|
217
|
-
|
|
218
|
-
tock (float): injected initial tock value
|
|
219
|
-
|
|
237
|
+
tymth (function): function returning cycle time for configuring this Doer's cycle time.
|
|
238
|
+
tock (float): cycle time for this Doer, default is 0.0 seconds.
|
|
220
239
|
Usage:
|
|
221
240
|
add result of doify on this method to doers list
|
|
222
241
|
"""
|
|
@@ -238,14 +257,15 @@ class Receiptor(doing.DoDoer):
|
|
|
238
257
|
|
|
239
258
|
def gitDo(self, tymth=None, tock=0.0, **kwa):
|
|
240
259
|
"""
|
|
241
|
-
|
|
242
|
-
|
|
260
|
+
A generator that obtains a witness receipts for key event messages specified in the query messages in the
|
|
261
|
+
.gets buffer
|
|
262
|
+
Intended to be used with doify to create a generator Doer.
|
|
243
263
|
|
|
264
|
+
Returns:
|
|
265
|
+
a Hio generator function to be used as a Doer.
|
|
244
266
|
Parameters:
|
|
245
|
-
tymth (function):
|
|
246
|
-
|
|
247
|
-
tock (float): injected initial tock value
|
|
248
|
-
|
|
267
|
+
tymth (function): function returning cycle time for configuring this Doer's cycle time.
|
|
268
|
+
tock (float): cycle time for this Doer, default is 0.0 seconds.
|
|
249
269
|
Usage:
|
|
250
270
|
add result of doify on this method to doers list
|
|
251
271
|
"""
|
|
@@ -266,14 +286,13 @@ class Receiptor(doing.DoDoer):
|
|
|
266
286
|
|
|
267
287
|
class WitnessReceiptor(doing.DoDoer):
|
|
268
288
|
"""
|
|
269
|
-
Sends messages to all current witnesses of given identifier (from hab)
|
|
270
|
-
for receipts from each of those witnesses and propagates those receipts to each
|
|
289
|
+
Sends receipt messages to all current witnesses of given identifier (from hab), waits
|
|
290
|
+
for receipts from each of those witnesses, and propagates those receipts to each
|
|
271
291
|
of the other witnesses after receiving the complete set.
|
|
272
292
|
|
|
273
293
|
Removes all Doers and exits as Done once all witnesses have been sent the entire
|
|
274
294
|
receipt set. Could be enhanced to have a `once` method that runs once and cleans up
|
|
275
295
|
and an `all` method that runs and waits for more messages to receipt.
|
|
276
|
-
|
|
277
296
|
"""
|
|
278
297
|
|
|
279
298
|
def __init__(self, hby, msgs=None, cues=None, force=False, auths=None, **kwa):
|
|
@@ -283,10 +302,12 @@ class WitnessReceiptor(doing.DoDoer):
|
|
|
283
302
|
|
|
284
303
|
Parameters:
|
|
285
304
|
hby (Habery): Habitat of the identifier to receipt witnesses
|
|
286
|
-
msgs (Deck):
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
305
|
+
msgs (Deck): events to send the event and receipt to all witnesses
|
|
306
|
+
Messages should have {"pre": <str>, "sn": <int>, "auths": <dict>}
|
|
307
|
+
cues (Deck): outgoing cues of events confirmed as fully receipted
|
|
308
|
+
Messages have {"pre": <str>, "sn": <int>, "auths": <dict>}
|
|
309
|
+
force (bool): True means to send witnesses all receipts even if we have a full complement.
|
|
310
|
+
auths (dict): map of witness AIDs to (time,auth) tuples for providing TOTP auth for witnessing
|
|
290
311
|
"""
|
|
291
312
|
self.hby = hby
|
|
292
313
|
self.force = force
|
|
@@ -298,16 +319,18 @@ class WitnessReceiptor(doing.DoDoer):
|
|
|
298
319
|
|
|
299
320
|
def receiptDo(self, tymth=None, tock=0.0, **kwa):
|
|
300
321
|
"""
|
|
301
|
-
|
|
322
|
+
Sends events, their receipts, receipt signatures, delegation chain, and location record
|
|
323
|
+
URLs between witnesses in the set of current witnesses.
|
|
324
|
+
|
|
325
|
+
Returns:
|
|
326
|
+
a doifiable Hio generator to perform event and receipt sending.
|
|
302
327
|
|
|
303
328
|
Usage:
|
|
304
329
|
add result of doify on this method to doers list
|
|
305
330
|
|
|
306
331
|
Parameters:
|
|
307
|
-
tymth
|
|
308
|
-
|
|
309
|
-
tock is injected initial tock value
|
|
310
|
-
|
|
332
|
+
tymth (function): function returning cycle time for configuring this Doer's cycle time.
|
|
333
|
+
tock (float): cycle time for this Doer, default is 0.0 seconds.
|
|
311
334
|
"""
|
|
312
335
|
self.wind(tymth)
|
|
313
336
|
self.tock = tock
|
|
@@ -365,7 +388,7 @@ class WitnessReceiptor(doing.DoDoer):
|
|
|
365
388
|
break
|
|
366
389
|
_ = yield self.tock
|
|
367
390
|
|
|
368
|
-
# If we started with all our
|
|
391
|
+
# If we started with all our receipts, exit unless told to force resubmit of all receipts
|
|
369
392
|
if completed and not self.force:
|
|
370
393
|
self.cues.push(evt)
|
|
371
394
|
continue
|
|
@@ -423,28 +446,30 @@ class WitnessReceiptor(doing.DoDoer):
|
|
|
423
446
|
|
|
424
447
|
class WitnessInquisitor(doing.DoDoer):
|
|
425
448
|
"""
|
|
426
|
-
Sends messages to
|
|
427
|
-
|
|
428
|
-
|
|
449
|
+
Sends KEL and TEL query messages to different types of targets whether witnesses, controllers, or agents
|
|
450
|
+
based on the locally available endpoint role records for the query target.
|
|
451
|
+
Queries are performed by sending query messages either to a random witness or to the controller or agent that is the target of the query.
|
|
429
452
|
|
|
430
|
-
Removes all Doers and exits as Done once
|
|
431
|
-
receipt set. Could be enhanced to have a `once` method that runs once and cleans up
|
|
432
|
-
and an `all` method that runs and waits for more messages to receipt.
|
|
453
|
+
Removes all Doers and exits as Done once the query target has been sent the query message
|
|
433
454
|
|
|
455
|
+
TODO: possibly rename based on the fact that multiple types of targets are supported (controller, agent, witness)
|
|
434
456
|
"""
|
|
435
457
|
|
|
436
|
-
def __init__(self, hby,
|
|
458
|
+
def __init__(self, hby, msgs=None, klas=None, **kwa):
|
|
437
459
|
"""
|
|
438
|
-
|
|
439
|
-
send the msg and process all responses (KEL replays, RCTs, etc)
|
|
460
|
+
Initialize the WitnessInquisitor with the given parameters.
|
|
440
461
|
|
|
441
462
|
Parameters:
|
|
442
|
-
hby (
|
|
443
|
-
|
|
444
|
-
|
|
463
|
+
hby (Habery): Habery context to use to retrieve the source Hab for reading endpoint role records
|
|
464
|
+
klas (class): Type of messenger to use to send messages; defaults to HTTPMessenger; currently unused
|
|
465
|
+
msgs (decking.Deck): query message buffer to be sent to the target or a random witness
|
|
466
|
+
Attributes:
|
|
467
|
+
hby (Habery): Habery context to use to retrieve the source Hab for reading endpoint role records
|
|
468
|
+
klas (class): Type of messenger to use to send messages; defaults to HTTPMessenger; currently unused
|
|
469
|
+
msgs (decking.Deck): query message buffer to be sent to the target or a random witness
|
|
470
|
+
sent (decking.Deck): buffer for sent messages to track sent queries
|
|
445
471
|
"""
|
|
446
472
|
self.hby = hby
|
|
447
|
-
self.reger = reger
|
|
448
473
|
self.klas = klas if klas is not None else HTTPMessenger
|
|
449
474
|
self.msgs = msgs if msgs is not None else decking.Deck()
|
|
450
475
|
self.sent = decking.Deck()
|
|
@@ -453,7 +478,11 @@ class WitnessInquisitor(doing.DoDoer):
|
|
|
453
478
|
|
|
454
479
|
def msgDo(self, tymth=None, tock=1.0, **opts):
|
|
455
480
|
"""
|
|
456
|
-
|
|
481
|
+
Signs and sends provided KEL and TEL query messages to query targets using HTTPMessenger or
|
|
482
|
+
TCPMessenger. Uses a randomly selected witness if the query target is a witness, or uses
|
|
483
|
+
the specified controller or agent when a controller or agent is specified.
|
|
484
|
+
|
|
485
|
+
Returns a Hio generator function that runs until all messages in .msgs are processed.
|
|
457
486
|
|
|
458
487
|
Usage:
|
|
459
488
|
add result of doify on this method to doers list
|
|
@@ -527,21 +556,20 @@ class WitnessInquisitor(doing.DoDoer):
|
|
|
527
556
|
yield self.tock
|
|
528
557
|
|
|
529
558
|
def query(self, pre, r="logs", sn='0', fn='0', src=None, hab=None, anchor=None, wits=None, **kwa):
|
|
530
|
-
"""
|
|
559
|
+
"""
|
|
560
|
+
Create a KEL query (`qry`) message against the attester for the prefix (`pre`) and place on the internal .msgs
|
|
561
|
+
queue for processing by the .msgDo doer. May also contain an anchor to use to locate a key event.
|
|
562
|
+
May specify the hab to use for signing and retrieving endpoint role records.
|
|
531
563
|
|
|
532
564
|
Parameters:
|
|
533
|
-
src (str): qb64 identifier prefix of source of query
|
|
534
|
-
hab (Hab): Hab to use instead of src if provided
|
|
535
565
|
pre (str): qb64 identifier prefix being queried for
|
|
536
566
|
r (str): query route
|
|
537
567
|
sn (str): optional specific hex str of sequence number to query for
|
|
538
568
|
fn (str): optional specific hex str of sequence number to start with
|
|
539
|
-
|
|
569
|
+
src (str): qb64 identifier prefix of source of query
|
|
570
|
+
hab (Hab): Hab to use instead of src, if provided, to retrieve endpoint role records from and to perform signing
|
|
571
|
+
anchor (Seal): anchored Seal to search for in the query target
|
|
540
572
|
wits (list) witnesses to query
|
|
541
|
-
|
|
542
|
-
Returns:
|
|
543
|
-
bytearray: signed query event
|
|
544
|
-
|
|
545
573
|
"""
|
|
546
574
|
qry = dict(s=sn, fn=fn)
|
|
547
575
|
if anchor is not None:
|
|
@@ -554,6 +582,20 @@ class WitnessInquisitor(doing.DoDoer):
|
|
|
554
582
|
self.msgs.append(msg)
|
|
555
583
|
|
|
556
584
|
def telquery(self, ri, src=None, i=None, r="tels", hab=None, pre=None, wits=None, **kwa):
|
|
585
|
+
"""
|
|
586
|
+
Create a TEL Query message to search against a given registry, issuer, route, in the target
|
|
587
|
+
prefixe's (`pre`) records, and add that query message on the internal .msgs queue.
|
|
588
|
+
May specify the hab to use for signing and retrieving endpoint role records.
|
|
589
|
+
|
|
590
|
+
Parameters:
|
|
591
|
+
ri (str): qb64 identifier prefix of the registry being queried
|
|
592
|
+
src (str): qb64 identifier prefix of source of query
|
|
593
|
+
i (str): qb64 identifier prefix of the issuer of the registry being queried
|
|
594
|
+
r (str): query route
|
|
595
|
+
hab (Hab): Hab to use instead of src, if provided, to retrieve endpoint role records from and to perform signing
|
|
596
|
+
pre (str): qb64 identifier prefix of the target being queried
|
|
597
|
+
wits (list): witnesses to query
|
|
598
|
+
"""
|
|
557
599
|
qry = dict(ri=ri)
|
|
558
600
|
msg = dict(src=src, pre=pre, target=i, r=r, wits=wits, q=qry)
|
|
559
601
|
if hab is not None:
|
|
@@ -985,6 +1027,16 @@ class HTTPStreamMessenger(doing.DoDoer):
|
|
|
985
1027
|
|
|
986
1028
|
|
|
987
1029
|
def mailbox(hab, cid):
|
|
1030
|
+
"""
|
|
1031
|
+
Finds and returns a mailbox, if any, based on the provided Mab and controller AID (cid).
|
|
1032
|
+
|
|
1033
|
+
Returns:
|
|
1034
|
+
str | None: qb64 identifier prefix of the mailbox to use for the controller, or None if no mailbox found.
|
|
1035
|
+
|
|
1036
|
+
Parameters:
|
|
1037
|
+
hab (Hab): Hab to use to look up witness URLs
|
|
1038
|
+
cid (str): qb64 identifier prefix of controller to find mailbox for
|
|
1039
|
+
"""
|
|
988
1040
|
for (_, erole, eid), end in hab.db.ends.getItemIter(keys=(cid, kering.Roles.mailbox)):
|
|
989
1041
|
if end.allowed:
|
|
990
1042
|
return eid
|
|
@@ -1089,6 +1141,17 @@ def httpClient(hab, wit):
|
|
|
1089
1141
|
|
|
1090
1142
|
|
|
1091
1143
|
def schemes(db, eids):
|
|
1144
|
+
"""
|
|
1145
|
+
Creates a message bytearray of reply messages containing location records (URLs) and witness
|
|
1146
|
+
signatures, if any, for a given list of authorized endpoint role AIDs (eids).
|
|
1147
|
+
|
|
1148
|
+
Returns:
|
|
1149
|
+
a bytearray of reply messages and their signatures
|
|
1150
|
+
|
|
1151
|
+
Parameters:
|
|
1152
|
+
db (Baser): Hab database used to retrieve location records and witness signatures
|
|
1153
|
+
eids (list): list of endpoint role AIDs (eids) to retrieve location records and witness signatures for
|
|
1154
|
+
"""
|
|
1092
1155
|
msgs = bytearray()
|
|
1093
1156
|
for eid in eids:
|
|
1094
1157
|
for scheme in kering.Schemes:
|
|
@@ -9,21 +9,18 @@ import argparse
|
|
|
9
9
|
from hio.base import doing
|
|
10
10
|
|
|
11
11
|
from keri import help
|
|
12
|
-
from keri.app.cli.common import existing
|
|
12
|
+
from keri.app.cli.common import existing
|
|
13
|
+
|
|
14
|
+
from keri.app.cli.common.parsing import Parsery
|
|
13
15
|
from keri.kering import ConfigurationError
|
|
14
16
|
|
|
15
17
|
logger = help.ogler.getLogger()
|
|
16
18
|
|
|
17
|
-
parser = argparse.ArgumentParser(description='Print the AID for a given alias')
|
|
18
|
-
parser.set_defaults(handler=lambda args: handler(args)
|
|
19
|
-
|
|
20
|
-
parser.add_argument('--name', '-n', help='keystore name and file location of KERI keystore', required=True)
|
|
21
|
-
parser.add_argument('--base', '-b', help='additional optional prefix to file location of KERI keystore',
|
|
22
|
-
required=False, default="")
|
|
19
|
+
parser = argparse.ArgumentParser(description='Print the AID for a given alias', parents=[Parsery.keystore()])
|
|
20
|
+
parser.set_defaults(handler=lambda args: handler(args))
|
|
21
|
+
|
|
23
22
|
parser.add_argument('--alias', '-a', help='human readable alias for the new identifier prefix', default=None,
|
|
24
23
|
required=True)
|
|
25
|
-
parser.add_argument('--passcode', '-p', help='21 character encryption passcode for keystore (is not saved)',
|
|
26
|
-
dest="bran", default=None) # passcode => bran
|
|
27
24
|
|
|
28
25
|
|
|
29
26
|
def handler(args):
|
|
@@ -8,19 +8,16 @@ import argparse
|
|
|
8
8
|
from hio.base import doing
|
|
9
9
|
|
|
10
10
|
from keri.app import habbing, forwarding, connecting
|
|
11
|
-
from keri.app.cli.common import existing
|
|
11
|
+
from keri.app.cli.common import existing
|
|
12
|
+
from keri.app.cli.common.parsing import Parsery
|
|
12
13
|
from keri.app.habbing import GroupHab
|
|
13
14
|
from keri.peer import exchanging
|
|
14
15
|
|
|
15
16
|
parser = argparse.ArgumentParser(description='Respond to a list of challenge words by signing and sending an EXN '
|
|
16
|
-
'response'
|
|
17
|
+
'response',
|
|
18
|
+
parents=[Parsery.keystore()])
|
|
17
19
|
parser.set_defaults(handler=lambda args: respond(args))
|
|
18
|
-
parser.add_argument('--name', '-n', help='keystore name and file location of KERI keystore', required=True)
|
|
19
|
-
parser.add_argument('--base', '-b', help='additional optional prefix to file location of KERI keystore',
|
|
20
|
-
required=False, default="")
|
|
21
20
|
parser.add_argument('--alias', '-a', help='human readable alias for the identifier to use for responding', default=None)
|
|
22
|
-
parser.add_argument('--passcode', '-p', help='21 character encryption passcode for keystore (is not saved)',
|
|
23
|
-
dest="bran", default=None) # passcode => bran
|
|
24
21
|
parser.add_argument('--words', '-d', help='JSON formatted array of words to sign, \'@\' allowed to load from a file',
|
|
25
22
|
action="store", required=True)
|
|
26
23
|
parser.add_argument('--recipient', '-r', help='Contact alias of the AID to send the signed words to',
|
|
@@ -14,21 +14,17 @@ from keri import help
|
|
|
14
14
|
from keri.app import indirecting, challenging, connecting, signaling
|
|
15
15
|
from keri.app.cli.commands.challenge.generate import generateWords
|
|
16
16
|
from keri.app.cli.common import existing
|
|
17
|
+
from keri.app.cli.common.parsing import Parsery
|
|
17
18
|
from keri.help import helping
|
|
18
19
|
from keri.peer import exchanging
|
|
19
20
|
|
|
20
21
|
logger = help.ogler.getLogger()
|
|
21
22
|
|
|
22
23
|
parser = argparse.ArgumentParser(description='Check mailbox for EXN challenge response messages and verify their '
|
|
23
|
-
'signatures and data against provided words and signer'
|
|
24
|
+
'signatures and data against provided words and signer',
|
|
25
|
+
parents=[Parsery.keystore()])
|
|
24
26
|
parser.set_defaults(handler=lambda args: verify(args))
|
|
25
|
-
parser.add_argument('--name', '-n', help='keystore name and file location of KERI keystore', required=True)
|
|
26
27
|
parser.add_argument('--alias', '-a', help='Unused, kept for backwards compatibility', default=None)
|
|
27
|
-
parser.add_argument('--base', '-b', help='additional optional prefix to file location of KERI keystore',
|
|
28
|
-
required=False, default="")
|
|
29
|
-
parser.add_argument('--passcode', '-p', help='21 character encryption passcode for keystore (is not saved)',
|
|
30
|
-
dest="bran", default=None) # passcode => bran
|
|
31
|
-
|
|
32
28
|
parser.add_argument('--words', '-d', help='JSON formatted array of words to verfiy, \'@\' allowed to load from a file',
|
|
33
29
|
action="store", required=False)
|
|
34
30
|
parser.add_argument('--generate', '-g', help="Generate words, print to stdout and wait for verification",
|
|
@@ -9,6 +9,7 @@ from hio.base import doing
|
|
|
9
9
|
|
|
10
10
|
from keri import help
|
|
11
11
|
from keri.app.cli.common import existing
|
|
12
|
+
from keri.app.cli.common.parsing import Parsery
|
|
12
13
|
|
|
13
14
|
logger = help.ogler.getLogger()
|
|
14
15
|
|
|
@@ -24,22 +25,11 @@ def handler(args):
|
|
|
24
25
|
return [clean]
|
|
25
26
|
|
|
26
27
|
|
|
27
|
-
parser = argparse.ArgumentParser(description='Cleans and migrates a database and keystore'
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
# Parameters for basic structure of database
|
|
32
|
-
parser.add_argument('--name', '-n', help='keystore name and file location of KERI keystore', required=True)
|
|
33
|
-
parser.add_argument('--base', '-b', help='additional optional prefix to file location of KERI keystore',
|
|
34
|
-
required=False, default="")
|
|
28
|
+
parser = argparse.ArgumentParser(description='Cleans and migrates a database and keystore',
|
|
29
|
+
parents=[Parsery.keystore()])
|
|
30
|
+
parser.set_defaults(handler=handler)
|
|
35
31
|
parser.add_argument('--temp', '-t', help='create a temporary keystore, used for testing', default=False)
|
|
36
32
|
|
|
37
|
-
# Parameters for Manager creation
|
|
38
|
-
# passcode => bran
|
|
39
|
-
parser.add_argument('--passcode', '-p', help='21 character encryption passcode for keystore (is not saved)',
|
|
40
|
-
dest="bran", default=None)
|
|
41
|
-
|
|
42
|
-
|
|
43
33
|
class CleanDoer(doing.Doer):
|
|
44
34
|
|
|
45
35
|
def __init__(self, args):
|
|
@@ -13,19 +13,14 @@ from hio.base import doing
|
|
|
13
13
|
from keri import help, kering
|
|
14
14
|
from keri.app import connecting
|
|
15
15
|
from keri.app.cli.common import existing
|
|
16
|
+
from keri.app.cli.common.parsing import Parsery
|
|
16
17
|
from keri.kering import ConfigurationError
|
|
17
18
|
|
|
18
19
|
logger = help.ogler.getLogger()
|
|
19
20
|
|
|
20
|
-
parser = argparse.ArgumentParser(description='List existing contacts'
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
parser.add_argument('--name', '-n', help='keystore name and file location of KERI keystore', required=True)
|
|
24
|
-
parser.add_argument('--base', '-b', help='additional optional prefix to file location of KERI keystore',
|
|
25
|
-
required=False, default="")
|
|
26
|
-
parser.add_argument('--passcode', '-p', help='21 character encryption passcode for keystore (is not saved)',
|
|
27
|
-
dest="bran", default=None) # passcode => bran
|
|
28
|
-
|
|
21
|
+
parser = argparse.ArgumentParser(description='List existing contacts',
|
|
22
|
+
parents=[Parsery.keystore()])
|
|
23
|
+
parser.set_defaults(handler=lambda args: handler(args))
|
|
29
24
|
|
|
30
25
|
def handler(args):
|
|
31
26
|
kwa = dict(args=args)
|
|
@@ -12,19 +12,15 @@ from hio.base import doing
|
|
|
12
12
|
from keri import help
|
|
13
13
|
from keri.app import connecting
|
|
14
14
|
from keri.app.cli.common import existing
|
|
15
|
+
from keri.app.cli.common.parsing import Parsery
|
|
15
16
|
from keri.kering import ConfigurationError
|
|
16
17
|
|
|
17
18
|
logger = help.ogler.getLogger()
|
|
18
19
|
|
|
19
20
|
# Could be expanded to provide arbitrary data if desired
|
|
20
|
-
parser = argparse.ArgumentParser(description='Replace contact information for identifier prefix with alias information'
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
parser.add_argument('--name', '-n', help='keystore name and file location of KERI keystore', required=True)
|
|
24
|
-
parser.add_argument('--base', '-b', help='additional optional prefix to file location of KERI keystore',
|
|
25
|
-
required=False, default="")
|
|
26
|
-
parser.add_argument('--passcode', '-p', help='21 character encryption passcode for keystore (is not saved)',
|
|
27
|
-
dest="bran", default=None) # passcode => bran
|
|
21
|
+
parser = argparse.ArgumentParser(description='Replace contact information for identifier prefix with alias information',
|
|
22
|
+
parents=[Parsery.keystore()])
|
|
23
|
+
parser.set_defaults(handler=lambda args: handler(args))
|
|
28
24
|
parser.add_argument('--prefix', '-o', help='identifier prefix to replace contact information for', required=True)
|
|
29
25
|
parser.add_argument('--alias', '-a', help='human readable alias for the contact', required=True)
|
|
30
26
|
|