keri 1.2.0.dev3__tar.gz → 1.2.0.dev4__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.
Files changed (180) hide show
  1. {keri-1.2.0.dev3/src/keri.egg-info → keri-1.2.0.dev4}/PKG-INFO +1 -1
  2. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/setup.py +1 -1
  3. keri-1.2.0.dev4/src/keri/__init__.py +5 -0
  4. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/delegate/confirm.py +2 -2
  5. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/core/eventing.py +118 -0
  6. {keri-1.2.0.dev3 → keri-1.2.0.dev4/src/keri.egg-info}/PKG-INFO +1 -1
  7. keri-1.2.0.dev3/src/keri/__init__.py +0 -5
  8. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/LICENSE +0 -0
  9. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/README.md +0 -0
  10. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/setup.cfg +0 -0
  11. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/__init__.py +0 -0
  12. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/agenting.py +0 -0
  13. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/apping.py +0 -0
  14. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/challenging.py +0 -0
  15. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/__init__.py +0 -0
  16. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/__init__.py +0 -0
  17. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/challenge/__init__.py +0 -0
  18. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/challenge/generate.py +0 -0
  19. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/challenge/respond.py +0 -0
  20. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/challenge/verify.py +0 -0
  21. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/clean.py +0 -0
  22. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/contacts/__init__.py +0 -0
  23. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/contacts/list.py +0 -0
  24. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/decrypt.py +0 -0
  25. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/delegate/__init__.py +0 -0
  26. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/delegate/request.py +0 -0
  27. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/did/__init__.py +0 -0
  28. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/did/generate.py +0 -0
  29. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/ends/__init__.py +0 -0
  30. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/ends/add.py +0 -0
  31. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/ends/export.py +0 -0
  32. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/ends/list.py +0 -0
  33. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/escrow.py +0 -0
  34. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/export.py +0 -0
  35. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/incept.py +0 -0
  36. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/init.py +0 -0
  37. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/interact.py +0 -0
  38. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/ipex/__init__.py +0 -0
  39. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/ipex/admit.py +0 -0
  40. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/ipex/agree.py +0 -0
  41. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/ipex/apply.py +0 -0
  42. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/ipex/grant.py +0 -0
  43. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/ipex/join.py +0 -0
  44. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/ipex/list.py +0 -0
  45. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/ipex/offer.py +0 -0
  46. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/ipex/spurn.py +0 -0
  47. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/kevers.py +0 -0
  48. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/list.py +0 -0
  49. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/local/__init__.py +0 -0
  50. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/local/watch.py +0 -0
  51. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/mailbox/__init__.py +0 -0
  52. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/mailbox/debug.py +0 -0
  53. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/mailbox/update.py +0 -0
  54. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/migrate/__init__.py +0 -0
  55. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/migrate/list.py +0 -0
  56. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/migrate/run.py +0 -0
  57. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/migrate/show.py +0 -0
  58. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/migrate.py +0 -0
  59. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/multisig/__init__.py +0 -0
  60. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/multisig/continue.py +0 -0
  61. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/multisig/demo.py +0 -0
  62. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/multisig/incept.py +0 -0
  63. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/multisig/interact.py +0 -0
  64. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/multisig/join.py +0 -0
  65. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/multisig/notice.py +0 -0
  66. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/multisig/rotate.py +0 -0
  67. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/multisig/shell.py +0 -0
  68. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/multisig/update.py +0 -0
  69. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/nonce.py +0 -0
  70. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/oobi/__init__.py +0 -0
  71. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/oobi/clean.py +0 -0
  72. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/oobi/generate.py +0 -0
  73. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/oobi/resolve.py +0 -0
  74. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/passcode/__init__.py +0 -0
  75. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/passcode/generate.py +0 -0
  76. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/passcode/remove.py +0 -0
  77. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/passcode/set.py +0 -0
  78. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/query.py +0 -0
  79. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/rename.py +0 -0
  80. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/rollback.py +0 -0
  81. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/rotate.py +0 -0
  82. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/saidify.py +0 -0
  83. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/salt.py +0 -0
  84. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/sign.py +0 -0
  85. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/ssh/__init__.py +0 -0
  86. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/ssh/export.py +0 -0
  87. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/status.py +0 -0
  88. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/time.py +0 -0
  89. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/vc/__init__.py +0 -0
  90. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/vc/create.py +0 -0
  91. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/vc/export.py +0 -0
  92. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/vc/list.py +0 -0
  93. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/vc/registry/__init__.py +0 -0
  94. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/vc/registry/incept.py +0 -0
  95. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/vc/registry/list.py +0 -0
  96. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/vc/registry/status.py +0 -0
  97. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/vc/revoke.py +0 -0
  98. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/verify.py +0 -0
  99. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/version.py +0 -0
  100. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/watcher/__init__.py +0 -0
  101. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/watcher/add.py +0 -0
  102. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/witness/__init__.py +0 -0
  103. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/witness/authenticate.py +0 -0
  104. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/witness/demo.py +0 -0
  105. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/witness/start.py +0 -0
  106. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/commands/witness/submit.py +0 -0
  107. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/common/__init__.py +0 -0
  108. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/common/config.py +0 -0
  109. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/common/displaying.py +0 -0
  110. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/common/existing.py +0 -0
  111. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/common/incepting.py +0 -0
  112. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/common/rotating.py +0 -0
  113. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/common/terming.py +0 -0
  114. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/cli/kli.py +0 -0
  115. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/configing.py +0 -0
  116. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/connecting.py +0 -0
  117. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/delegating.py +0 -0
  118. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/directing.py +0 -0
  119. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/forwarding.py +0 -0
  120. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/grouping.py +0 -0
  121. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/habbing.py +0 -0
  122. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/httping.py +0 -0
  123. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/indirecting.py +0 -0
  124. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/keeping.py +0 -0
  125. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/notifying.py +0 -0
  126. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/oobiing.py +0 -0
  127. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/querying.py +0 -0
  128. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/signaling.py +0 -0
  129. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/signing.py +0 -0
  130. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/specing.py +0 -0
  131. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/app/storing.py +0 -0
  132. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/core/__init__.py +0 -0
  133. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/core/coring.py +0 -0
  134. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/core/counting.py +0 -0
  135. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/core/indexing.py +0 -0
  136. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/core/parsing.py +0 -0
  137. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/core/routing.py +0 -0
  138. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/core/scheming.py +0 -0
  139. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/core/serdering.py +0 -0
  140. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/core/signing.py +0 -0
  141. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/core/streaming.py +0 -0
  142. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/core/structing.py +0 -0
  143. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/db/__init__.py +0 -0
  144. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/db/basing.py +0 -0
  145. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/db/dbing.py +0 -0
  146. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/db/escrowing.py +0 -0
  147. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/db/koming.py +0 -0
  148. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/db/migrations/__init__.py +0 -0
  149. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/db/migrations/rekey_habs.py +0 -0
  150. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/db/subing.py +0 -0
  151. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/demo/__init__.py +0 -0
  152. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/demo/demo_bob.py +0 -0
  153. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/demo/demo_eve.py +0 -0
  154. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/demo/demo_kev.py +0 -0
  155. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/demo/demo_sam.py +0 -0
  156. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/demo/demoing.py +0 -0
  157. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/end/__init__.py +0 -0
  158. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/end/ending.py +0 -0
  159. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/end/priming.py +0 -0
  160. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/help/__init__.py +0 -0
  161. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/help/helping.py +0 -0
  162. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/kering.py +0 -0
  163. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/peer/__init__.py +0 -0
  164. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/peer/exchanging.py +0 -0
  165. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/vc/__init__.py +0 -0
  166. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/vc/protocoling.py +0 -0
  167. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/vc/proving.py +0 -0
  168. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/vc/walleting.py +0 -0
  169. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/vdr/__init__.py +0 -0
  170. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/vdr/credentialing.py +0 -0
  171. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/vdr/eventing.py +0 -0
  172. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/vdr/verifying.py +0 -0
  173. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri/vdr/viring.py +0 -0
  174. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri.egg-info/SOURCES.txt +0 -0
  175. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri.egg-info/dependency_links.txt +0 -0
  176. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri.egg-info/entry_points.txt +0 -0
  177. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri.egg-info/not-zip-safe +0 -0
  178. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri.egg-info/requires.txt +0 -0
  179. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/src/keri.egg-info/top_level.txt +0 -0
  180. {keri-1.2.0.dev3 → keri-1.2.0.dev4}/tests/test_kering.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: keri
3
- Version: 1.2.0.dev3
3
+ Version: 1.2.0.dev4
4
4
  Summary: Key Event Receipt Infrastructure
5
5
  Home-page: https://github.com/WebOfTrust/keripy
6
6
  Author: Samuel M. Smith
@@ -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='1.2.0-dev3', # also change in src/keri/__init__.py
40
+ version='1.2.0-dev4', # 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",
@@ -0,0 +1,5 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ __version__ = '1.2.0-dev4' # also change in setup.py
4
+
5
+
@@ -130,7 +130,7 @@ class ConfirmDoer(doing.DoDoer):
130
130
 
131
131
  if isinstance(hab, GroupHab):
132
132
  aids = hab.smids
133
- #seqner = coring.Seqner(sn=eserder.sn)
133
+
134
134
  anchor = dict(i=eserder.ked["i"], s=eserder.snh, d=eserder.said)
135
135
  if self.interact:
136
136
  msg = hab.interact(data=[anchor])
@@ -166,7 +166,7 @@ class ConfirmDoer(doing.DoDoer):
166
166
 
167
167
  else:
168
168
  cur = hab.kever.sner.num
169
- #seqner = coring.Seqner(sn=eserder.sn)
169
+
170
170
  anchor = dict(i=eserder.ked["i"], s=eserder.snh, d=eserder.said)
171
171
  if self.interact:
172
172
  hab.interact(data=[anchor])
@@ -5714,6 +5714,124 @@ class Kevery:
5714
5714
  break
5715
5715
  key = ekey # setup next while iteration, with key after ekey
5716
5716
 
5717
+ def processEscrowDelegables(self):
5718
+ """
5719
+ Process events escrowed by Kever that require delegation.
5720
+
5721
+ Escrowed items are indexed in database table keyed by prefix and
5722
+ sn with duplicates given by different dig inserted in insertion order.
5723
+ This allows FIFO processing of events with same prefix and sn but different
5724
+ digest.
5725
+
5726
+ Uses .db.delegables.add(key, val) which is IOVal with dups.
5727
+
5728
+ Value is dgkey for event stored in .Evt where .Evt has serder.raw of event.
5729
+
5730
+ Steps:
5731
+ Each pass (walk index table)
5732
+ For each prefix,sn
5733
+ For each escrow item dup at prefix,sn:
5734
+ Get Event
5735
+ Get and Attach Signatures
5736
+ Process event as if it came in over the wire
5737
+ If successful then remove from escrow table
5738
+ """
5739
+
5740
+ for (pre, sn), dig in self.db.delegables.getItemIter():
5741
+ try:
5742
+ edig = dig.encode("utf-8")
5743
+ dgkey = dgKey(pre.encode("utf-8"), edig)
5744
+ if not (esr := self.db.esrs.get(keys=dgkey)): # get event source, otherwise error
5745
+ # no local sourde so raise ValidationError which unescrows below
5746
+ raise ValidationError("Missing escrowed event source "
5747
+ "at dig = {}.".format(bytes(edig)))
5748
+
5749
+ # check date if expired then remove escrow.
5750
+ dtb = self.db.getDts(dgkey)
5751
+ if dtb is None: # othewise is a datetime as bytes
5752
+ # no date time so raise ValidationError which unescrows below
5753
+ logger.info("Kevery unescrow error: Missing event datetime"
5754
+ " at dig = %s", bytes(edig))
5755
+
5756
+ raise ValidationError("Missing escrowed event datetime "
5757
+ "at dig = {}.".format(bytes(edig)))
5758
+
5759
+ # do date math here and discard if stale nowIso8601() bytes
5760
+ dtnow = helping.nowUTC()
5761
+ dte = helping.fromIso8601(bytes(dtb))
5762
+ if (dtnow - dte) > datetime.timedelta(seconds=self.TimeoutOOE):
5763
+ # escrow stale so raise ValidationError which unescrows below
5764
+ logger.info("Kevery unescrow error: Stale event escrow "
5765
+ " at dig = %s", bytes(edig))
5766
+
5767
+ raise ValidationError("Stale event escrow "
5768
+ "at dig = {}.".format(bytes(edig)))
5769
+
5770
+ # get the escrowed event using edig
5771
+ eraw = self.db.getEvt(dgKey(pre, bytes(edig)))
5772
+ if eraw is None:
5773
+ # no event so raise ValidationError which unescrows below
5774
+ logger.info("Kevery unescrow error: Missing event at."
5775
+ "dig = %s", bytes(edig))
5776
+
5777
+ raise ValidationError("Missing escrowed evt at dig = {}."
5778
+ "".format(bytes(edig)))
5779
+
5780
+ eserder = serdering.SerderKERI(raw=bytes(eraw)) # escrowed event
5781
+
5782
+ # get sigs and attach
5783
+ sigs = self.db.getSigs(dgKey(pre, bytes(edig)))
5784
+ if not sigs: # otherwise its a list of sigs
5785
+ # no sigs so raise ValidationError which unescrows below
5786
+ logger.info("Kevery unescrow error: Missing event sigs at."
5787
+ "dig = %s", bytes(edig))
5788
+
5789
+ raise ValidationError("Missing escrowed evt sigs at "
5790
+ "dig = {}.".format(bytes(edig)))
5791
+
5792
+ sigers = [Siger(qb64b=bytes(sig)) for sig in sigs]
5793
+
5794
+ # get wigs
5795
+ wigs = self.db.getWigs(dgKey(pre, bytes(edig))) # list of wigs
5796
+ wigers = [Siger(qb64b=bytes(wig)) for wig in wigs]
5797
+
5798
+ # get delgate seal
5799
+ couple = self.db.getAes(dgkey)
5800
+ if couple is not None: # Only try to parse the event if we have the del seal
5801
+ raw = bytearray(couple)
5802
+ seqner = coring.Seqner(qb64b=raw, strip=True)
5803
+ saider = coring.Saider(qb64b=raw)
5804
+
5805
+ # process event
5806
+ self.processEvent(serder=eserder, sigers=sigers, wigers=wigers, delseqner=seqner,
5807
+ delsaider=saider, local=esr.local)
5808
+ else:
5809
+ raise MissingDelegableApprovalError()
5810
+
5811
+ except MissingDelegableApprovalError as ex:
5812
+ # still waiting on missing delegation approval
5813
+ if logger.isEnabledFor(logging.DEBUG):
5814
+ logger.exception("Kevery unescrow failed: %s", ex.args[0])
5815
+ else:
5816
+ logger.error("Kevery unescrow failed: %s", ex.args[0])
5817
+
5818
+ except Exception as ex: # log diagnostics errors etc
5819
+ # error other than out of order so remove from OO escrow
5820
+ self.db.delegables.rem(keys=(pre, sn,), val=edig) # removes one escrow at key val
5821
+ if logger.isEnabledFor(logging.DEBUG):
5822
+ logger.exception("Kevery unescrowed: %s", ex.args[0])
5823
+ else:
5824
+ logger.error("Kevery unescrowed: %s", ex.args[0])
5825
+
5826
+ else: # unescrow succeeded, remove from escrow
5827
+ # We don't remove all escrows at pre,sn because some might be
5828
+ # duplicitous so we process remaining escrows in spite of found
5829
+ # valid event escrow.
5830
+ self.db.delegables.rem(keys=(pre, sn,), val=edig) # removes one escrow at key val
5831
+ logger.info("Kevery unescrow succeeded in valid event: "
5832
+ "event=%s", eserder.said)
5833
+ logger.debug(f"event=\n{eserder.pretty()}\n")
5834
+
5717
5835
  def processQueryNotFound(self):
5718
5836
  """
5719
5837
  Process qry events escrowed by Kevery for KELs that have not yet met the criteria of the query.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: keri
3
- Version: 1.2.0.dev3
3
+ Version: 1.2.0.dev4
4
4
  Summary: Key Event Receipt Infrastructure
5
5
  Home-page: https://github.com/WebOfTrust/keripy
6
6
  Author: Samuel M. Smith
@@ -1,5 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
- __version__ = '1.2.0-dev3' # also change in setup.py
4
-
5
-
File without changes
File without changes
File without changes
File without changes