keri-ts 2.1.0 → 2.2.0
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.
- package/README.md +30 -2
- package/esm/keri/npm/src/acdc/authoring.js +195 -0
- package/esm/keri/npm/src/acdc/custody.js +164 -0
- package/esm/keri/npm/src/acdc/dhking.js +244 -32
- package/esm/keri/npm/src/acdc/regbasing.js +10 -0
- package/esm/keri/npm/src/acdc/salting.js +16 -1
- package/esm/keri/npm/src/acdc/scheming.js +93 -54
- package/esm/keri/npm/src/acdc/unblinding.js +118 -95
- package/esm/keri/npm/src/app/bootstrap/authenticating.js +4 -6
- package/esm/keri/npm/src/app/bootstrap/oobi-resolving.js +41 -0
- package/esm/keri/npm/src/app/bootstrap/oobiery.js +4 -6
- package/esm/keri/npm/src/app/credentials/credential-revoking.js +1 -0
- package/esm/keri/npm/src/app/credentials/credential-workflows.js +2 -0
- package/esm/keri/npm/src/app/credentials/registry-settling.js +44 -0
- package/esm/keri/npm/src/app/credentials/root-replicating.js +68 -60
- package/esm/keri/npm/src/app/credentials/root-replicator.js +198 -0
- package/esm/keri/npm/src/app/credentials/tel-completion.js +36 -0
- package/esm/keri/npm/src/app/delivery/forwarding.js +16 -3
- package/esm/keri/npm/src/app/exchanges/exchanging.js +14 -4
- package/esm/keri/npm/src/app/identity/challenging.js +50 -0
- package/esm/keri/npm/src/app/identity/delegating.js +77 -77
- package/esm/keri/npm/src/app/identity/delegation-approval.js +333 -0
- package/esm/keri/npm/src/app/identity/event-completion.js +154 -0
- package/esm/keri/npm/src/app/identity/habbing.js +129 -6
- package/esm/keri/npm/src/app/identity/keeping.js +77 -4
- package/esm/keri/npm/src/app/ipex/group-ipex.js +327 -0
- package/esm/keri/npm/src/app/ipex/group-issuance.js +902 -0
- package/esm/keri/npm/src/app/ipex/ipex-admitting.js +120 -0
- package/esm/keri/npm/src/app/ipex/ipex-conversation.js +197 -0
- package/esm/keri/npm/src/app/ipex/ipex-discloser.js +591 -0
- package/esm/keri/npm/src/app/ipex/ipex-granting.js +93 -0
- package/esm/keri/npm/src/app/ipex/ipex-grouping.js +34 -11
- package/esm/keri/npm/src/app/ipex/issuance.js +888 -0
- package/esm/keri/npm/src/app/ipex/pending-presentations.js +46 -0
- package/esm/keri/npm/src/app/ipex/presentation-files.js +200 -0
- package/esm/keri/npm/src/app/ipex/presenting.js +401 -0
- package/esm/keri/npm/src/app/ipex/receive-issuance.js +86 -0
- package/esm/keri/npm/src/app/ipex/unblinding-workflow.js +660 -0
- package/esm/keri/npm/src/app/mailbox/ipex-arrival.js +103 -0
- package/esm/keri/npm/src/app/mailbox/kel-publisher.js +322 -0
- package/esm/keri/npm/src/app/mailbox/kel-publishing.js +65 -0
- package/esm/keri/npm/src/app/mailbox/kel-submission.js +24 -0
- package/esm/keri/npm/src/app/mailbox/mailbox-admin.js +208 -0
- package/esm/keri/npm/src/app/mailbox/mailbox-poller.js +212 -47
- package/esm/keri/npm/src/app/mailbox/mailboxing.js +10 -5
- package/esm/keri/npm/src/app/multisig/counseling.js +482 -0
- package/esm/keri/npm/src/app/multisig/group-members.js +18 -0
- package/esm/keri/npm/src/app/multisig/multisig-workflows.js +94 -139
- package/esm/keri/npm/src/app/multisig/proposals.js +281 -0
- package/esm/keri/npm/src/app/multisig/proposing.js +122 -0
- package/esm/keri/npm/src/app/notifications/signaling.js +5 -5
- package/esm/keri/npm/src/app/protocol/parsering.js +26 -1
- package/esm/keri/npm/src/app/protocol/protocol-processing.js +9 -3
- package/esm/keri/npm/src/app/queries/query-workflows.js +98 -0
- package/esm/keri/npm/src/app/runtime/agent-runtime.js +106 -55
- package/esm/keri/npm/src/app/runtime/cue-runtime.js +3 -6
- package/esm/keri/npm/src/app/runtime/delivery-outbox.js +87 -0
- package/esm/keri/npm/src/app/runtime/doing.js +17 -0
- package/esm/keri/npm/src/app/runtime/ipex-auxiliaries.js +207 -0
- package/esm/keri/npm/src/app/runtime/operation-owners.js +151 -0
- package/esm/keri/npm/src/app/runtime/retry-backoff.js +93 -0
- package/esm/keri/npm/src/app/runtime/workflow-contract.js +80 -0
- package/esm/keri/npm/src/app/transport/http-client.js +25 -6
- package/esm/keri/npm/src/app/witness/http-endpoints.js +4 -4
- package/esm/keri/npm/src/cli/common/event-completion.js +49 -0
- package/esm/keri/npm/src/cli/common/runtime-workers.js +23 -0
- package/esm/keri/npm/src/cli/credentials/ipex.js +157 -190
- package/esm/keri/npm/src/cli/credentials/vc.js +53 -72
- package/esm/keri/npm/src/cli/endpoints/did.js +12 -3
- package/esm/keri/npm/src/cli/endpoints/oobi.js +10 -13
- package/esm/keri/npm/src/cli/identity/challenge.js +8 -34
- package/esm/keri/npm/src/cli/identity/delegate.js +81 -258
- package/esm/keri/npm/src/cli/identity/incept.js +15 -32
- package/esm/keri/npm/src/cli/identity/interact.js +5 -17
- package/esm/keri/npm/src/cli/identity/rotate.js +8 -36
- package/esm/keri/npm/src/cli/index.js +3 -1
- package/esm/keri/npm/src/cli/messaging/group-join.js +79 -0
- package/esm/keri/npm/src/cli/messaging/group-wait.js +88 -0
- package/esm/keri/npm/src/cli/messaging/multisig.js +163 -284
- package/esm/keri/npm/src/cli/messaging/root-copy-lines.js +31 -0
- package/esm/keri/npm/src/core/kel/eventing.js +66 -10
- package/esm/keri/npm/src/core/mailbox/kram-policy.js +39 -6
- package/esm/keri/npm/src/core/mailbox/kraming.js +2 -0
- package/esm/keri/npm/src/core/records.js +23 -0
- package/esm/keri/npm/src/core/routing.js +13 -0
- package/esm/keri/npm/src/db/basing.js +34 -2
- package/esm/keri/npm/src/db/core/indexeddb-persistence.js +221 -0
- package/esm/keri/npm/src/db/indexeddb.js +98 -0
- package/esm/keri/npm/src/db/keeping.js +11 -2
- package/esm/keri/npm/src/db/store-lock.js +150 -0
- package/esm/keri/npm/src/npm/db-indexeddb.browser.js +2 -0
- package/esm/keri/npm/src/npm/db-indexeddb.js +3 -0
- package/esm/keri/npm/src/npm/db.browser.js +2 -0
- package/esm/keri/npm/src/npm/index.browser.js +9 -0
- package/esm/keri/npm/src/npm/runtime-web.browser.js +2 -0
- package/esm/keri/npm/src/npm/runtime-web.js +3 -0
- package/esm/keri/npm/src/npm/runtime.browser.js +2 -0
- package/esm/keri/npm/src/runtime/index.js +51 -4
- package/esm/keri/npm/src/runtime/web/output-barrier.js +47 -0
- package/esm/keri/npm/src/runtime/web/persistent-storage.js +37 -0
- package/esm/keri/npm/src/runtime/web.js +10 -0
- package/esm/keri/npm/src/vdr/tel-publication.js +16 -0
- package/esm/keri/npm/src/version.js +2 -2
- package/package.json +15 -2
- package/types/acdc/authoring.d.ts +54 -0
- package/types/acdc/authoring.d.ts.map +1 -0
- package/types/acdc/custody.d.ts +77 -0
- package/types/acdc/custody.d.ts.map +1 -0
- package/types/acdc/dhking.d.ts +94 -3
- package/types/acdc/dhking.d.ts.map +1 -1
- package/types/acdc/regbasing.d.ts +4 -0
- package/types/acdc/regbasing.d.ts.map +1 -1
- package/types/acdc/salting.d.ts +6 -1
- package/types/acdc/salting.d.ts.map +1 -1
- package/types/acdc/scheming.d.ts +2 -0
- package/types/acdc/scheming.d.ts.map +1 -1
- package/types/acdc/unblinding.d.ts +58 -19
- package/types/acdc/unblinding.d.ts.map +1 -1
- package/types/app/bootstrap/authenticating.d.ts +3 -1
- package/types/app/bootstrap/authenticating.d.ts.map +1 -1
- package/types/app/bootstrap/oobi-resolving.d.ts +92 -0
- package/types/app/bootstrap/oobi-resolving.d.ts.map +1 -0
- package/types/app/bootstrap/oobiery.d.ts +3 -1
- package/types/app/bootstrap/oobiery.d.ts.map +1 -1
- package/types/app/credentials/credential-revoking.d.ts +3 -0
- package/types/app/credentials/credential-revoking.d.ts.map +1 -1
- package/types/app/credentials/credential-workflows.d.ts +5 -0
- package/types/app/credentials/credential-workflows.d.ts.map +1 -1
- package/types/app/credentials/registry-settling.d.ts +85 -0
- package/types/app/credentials/registry-settling.d.ts.map +1 -0
- package/types/app/credentials/root-replicating.d.ts +56 -44
- package/types/app/credentials/root-replicating.d.ts.map +1 -1
- package/types/app/credentials/root-replicator.d.ts +105 -0
- package/types/app/credentials/root-replicator.d.ts.map +1 -0
- package/types/app/credentials/tel-completion.d.ts +55 -0
- package/types/app/credentials/tel-completion.d.ts.map +1 -0
- package/types/app/delivery/forwarding.d.ts +6 -0
- package/types/app/delivery/forwarding.d.ts.map +1 -1
- package/types/app/exchanges/exchanging.d.ts.map +1 -1
- package/types/app/identity/challenging.d.ts +54 -0
- package/types/app/identity/challenging.d.ts.map +1 -1
- package/types/app/identity/delegating.d.ts +21 -4
- package/types/app/identity/delegating.d.ts.map +1 -1
- package/types/app/identity/delegation-approval.d.ts +228 -0
- package/types/app/identity/delegation-approval.d.ts.map +1 -0
- package/types/app/identity/event-completion.d.ts +151 -0
- package/types/app/identity/event-completion.d.ts.map +1 -0
- package/types/app/identity/habbing.d.ts +67 -2
- package/types/app/identity/habbing.d.ts.map +1 -1
- package/types/app/identity/keeping.d.ts +49 -3
- package/types/app/identity/keeping.d.ts.map +1 -1
- package/types/app/ipex/group-ipex.d.ts +247 -0
- package/types/app/ipex/group-ipex.d.ts.map +1 -0
- package/types/app/ipex/group-issuance.d.ts +281 -0
- package/types/app/ipex/group-issuance.d.ts.map +1 -0
- package/types/app/ipex/ipex-admitting.d.ts +47 -0
- package/types/app/ipex/ipex-admitting.d.ts.map +1 -0
- package/types/app/ipex/ipex-conversation.d.ts +195 -0
- package/types/app/ipex/ipex-conversation.d.ts.map +1 -0
- package/types/app/ipex/ipex-discloser.d.ts +156 -0
- package/types/app/ipex/ipex-discloser.d.ts.map +1 -0
- package/types/app/ipex/ipex-granting.d.ts +145 -0
- package/types/app/ipex/ipex-granting.d.ts.map +1 -0
- package/types/app/ipex/ipex-grouping.d.ts +18 -0
- package/types/app/ipex/ipex-grouping.d.ts.map +1 -1
- package/types/app/ipex/issuance.d.ts +443 -0
- package/types/app/ipex/issuance.d.ts.map +1 -0
- package/types/app/ipex/pending-presentations.d.ts +25 -0
- package/types/app/ipex/pending-presentations.d.ts.map +1 -0
- package/types/app/ipex/presentation-files.d.ts +47 -0
- package/types/app/ipex/presentation-files.d.ts.map +1 -0
- package/types/app/ipex/presenting.d.ts +298 -0
- package/types/app/ipex/presenting.d.ts.map +1 -0
- package/types/app/ipex/receive-issuance.d.ts +99 -0
- package/types/app/ipex/receive-issuance.d.ts.map +1 -0
- package/types/app/ipex/unblinding-workflow.d.ts +255 -0
- package/types/app/ipex/unblinding-workflow.d.ts.map +1 -0
- package/types/app/mailbox/ipex-arrival.d.ts +104 -0
- package/types/app/mailbox/ipex-arrival.d.ts.map +1 -0
- package/types/app/mailbox/kel-publisher.d.ts +141 -0
- package/types/app/mailbox/kel-publisher.d.ts.map +1 -0
- package/types/app/mailbox/kel-publishing.d.ts +70 -0
- package/types/app/mailbox/kel-publishing.d.ts.map +1 -0
- package/types/app/mailbox/kel-submission.d.ts +18 -0
- package/types/app/mailbox/kel-submission.d.ts.map +1 -0
- package/types/app/mailbox/mailbox-admin.d.ts +113 -0
- package/types/app/mailbox/mailbox-admin.d.ts.map +1 -0
- package/types/app/mailbox/mailbox-poller.d.ts +92 -3
- package/types/app/mailbox/mailbox-poller.d.ts.map +1 -1
- package/types/app/mailbox/mailboxing.d.ts +3 -0
- package/types/app/mailbox/mailboxing.d.ts.map +1 -1
- package/types/app/multisig/counseling.d.ts +196 -0
- package/types/app/multisig/counseling.d.ts.map +1 -0
- package/types/app/multisig/group-members.d.ts +11 -0
- package/types/app/multisig/group-members.d.ts.map +1 -1
- package/types/app/multisig/grouping.d.ts +39 -20
- package/types/app/multisig/grouping.d.ts.map +1 -1
- package/types/app/multisig/multisig-workflows.d.ts +91 -22
- package/types/app/multisig/multisig-workflows.d.ts.map +1 -1
- package/types/app/multisig/proposals.d.ts +129 -0
- package/types/app/multisig/proposals.d.ts.map +1 -0
- package/types/app/multisig/proposing.d.ts +125 -0
- package/types/app/multisig/proposing.d.ts.map +1 -0
- package/types/app/notifications/signaling.d.ts +3 -1
- package/types/app/notifications/signaling.d.ts.map +1 -1
- package/types/app/protocol/parsering.d.ts +13 -0
- package/types/app/protocol/parsering.d.ts.map +1 -1
- package/types/app/protocol/protocol-processing.d.ts +7 -1
- package/types/app/protocol/protocol-processing.d.ts.map +1 -1
- package/types/app/queries/query-workflows.d.ts +98 -0
- package/types/app/queries/query-workflows.d.ts.map +1 -0
- package/types/app/runtime/agent-runtime.d.ts +72 -25
- package/types/app/runtime/agent-runtime.d.ts.map +1 -1
- package/types/app/runtime/cue-runtime.d.ts +2 -1
- package/types/app/runtime/cue-runtime.d.ts.map +1 -1
- package/types/app/runtime/delivery-outbox.d.ts +68 -0
- package/types/app/runtime/delivery-outbox.d.ts.map +1 -0
- package/types/app/runtime/doing.d.ts +27 -0
- package/types/app/runtime/doing.d.ts.map +1 -0
- package/types/app/runtime/ipex-auxiliaries.d.ts +74 -0
- package/types/app/runtime/ipex-auxiliaries.d.ts.map +1 -0
- package/types/app/runtime/operation-owners.d.ts +137 -0
- package/types/app/runtime/operation-owners.d.ts.map +1 -0
- package/types/app/runtime/retry-backoff.d.ts +49 -0
- package/types/app/runtime/retry-backoff.d.ts.map +1 -0
- package/types/app/runtime/workflow-contract.d.ts +79 -0
- package/types/app/runtime/workflow-contract.d.ts.map +1 -0
- package/types/app/transport/http-client.d.ts.map +1 -1
- package/types/cli/common/event-completion.d.ts +26 -0
- package/types/cli/common/event-completion.d.ts.map +1 -0
- package/types/cli/common/runtime-workers.d.ts +23 -0
- package/types/cli/common/runtime-workers.d.ts.map +1 -0
- package/types/cli/credentials/ipex.d.ts.map +1 -1
- package/types/cli/credentials/vc.d.ts +1 -1
- package/types/cli/credentials/vc.d.ts.map +1 -1
- package/types/cli/endpoints/did.d.ts.map +1 -1
- package/types/cli/endpoints/oobi.d.ts +3 -1
- package/types/cli/endpoints/oobi.d.ts.map +1 -1
- package/types/cli/identity/challenge.d.ts +1 -1
- package/types/cli/identity/challenge.d.ts.map +1 -1
- package/types/cli/identity/delegate.d.ts +14 -1
- package/types/cli/identity/delegate.d.ts.map +1 -1
- package/types/cli/identity/incept.d.ts.map +1 -1
- package/types/cli/identity/interact.d.ts.map +1 -1
- package/types/cli/identity/rotate.d.ts.map +1 -1
- package/types/cli/index.d.ts +3 -1
- package/types/cli/index.d.ts.map +1 -1
- package/types/cli/messaging/group-join.d.ts +53 -0
- package/types/cli/messaging/group-join.d.ts.map +1 -0
- package/types/cli/messaging/group-wait.d.ts +34 -0
- package/types/cli/messaging/group-wait.d.ts.map +1 -0
- package/types/cli/messaging/multisig.d.ts +28 -5
- package/types/cli/messaging/multisig.d.ts.map +1 -1
- package/types/cli/messaging/root-copy-lines.d.ts +39 -0
- package/types/cli/messaging/root-copy-lines.d.ts.map +1 -0
- package/types/core/cues.d.ts +11 -0
- package/types/core/cues.d.ts.map +1 -1
- package/types/core/kel/eventing.d.ts.map +1 -1
- package/types/core/mailbox/kram-policy.d.ts +14 -0
- package/types/core/mailbox/kram-policy.d.ts.map +1 -1
- package/types/core/mailbox/kraming.d.ts +1 -1
- package/types/core/mailbox/kraming.d.ts.map +1 -1
- package/types/core/records.d.ts +61 -0
- package/types/core/records.d.ts.map +1 -1
- package/types/core/routing.d.ts +6 -0
- package/types/core/routing.d.ts.map +1 -1
- package/types/db/basing.d.ts +8 -2
- package/types/db/basing.d.ts.map +1 -1
- package/types/db/core/indexeddb-persistence.d.ts +59 -0
- package/types/db/core/indexeddb-persistence.d.ts.map +1 -0
- package/types/db/indexeddb.d.ts +37 -0
- package/types/db/indexeddb.d.ts.map +1 -0
- package/types/db/keeping.d.ts +5 -2
- package/types/db/keeping.d.ts.map +1 -1
- package/types/db/store-lock.d.ts +72 -0
- package/types/db/store-lock.d.ts.map +1 -0
- package/types/npm/db-indexeddb.d.ts +4 -0
- package/types/npm/db-indexeddb.d.ts.map +1 -0
- package/types/npm/runtime-web.d.ts +4 -0
- package/types/npm/runtime-web.d.ts.map +1 -0
- package/types/runtime/index.d.ts +41 -6
- package/types/runtime/index.d.ts.map +1 -1
- package/types/runtime/web/output-barrier.d.ts +30 -0
- package/types/runtime/web/output-barrier.d.ts.map +1 -0
- package/types/runtime/web/persistent-storage.d.ts +36 -0
- package/types/runtime/web/persistent-storage.d.ts.map +1 -0
- package/types/runtime/web.d.ts +11 -0
- package/types/runtime/web.d.ts.map +1 -0
- package/types/vdr/tel-publication.d.ts +6 -0
- package/types/vdr/tel-publication.d.ts.map +1 -1
- package/types/version.d.ts +2 -2
- package/esm/keri/npm/src/cli/common/tel-completion.js +0 -24
- package/types/cli/common/tel-completion.d.ts +0 -8
- package/types/cli/common/tel-completion.d.ts.map +0 -1
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { ValidationError } from "../../core/errors.js";
|
|
2
|
+
import { acceptIpexExchange, ipexExchangeStatus, requireIpexPrior, requireIpexSender, } from "./ipex-conversation.js";
|
|
3
|
+
import { ipexCredentialAdmit, ipexCredentialGrant, processCredentialPresentationArtifacts, storedGrantArtifacts, validateAdmitGrant, } from "./ipex-credentialing.js";
|
|
4
|
+
import { requireStoredExchange, sendCredentialStream } from "./ipex-grouping.js";
|
|
5
|
+
/**
|
|
6
|
+
* Grant a stored single-signature credential: validate the optional agree,
|
|
7
|
+
* assemble the embedded artifacts and support messages, sign, accept locally
|
|
8
|
+
* and deliver support then grant as one stream. Granting a credential again
|
|
9
|
+
* without an agree authors another grant; an agree answers once.
|
|
10
|
+
*
|
|
11
|
+
* @throws ValidationError for a non-local sender, a refused prior, missing local
|
|
12
|
+
* credential evidence or a grant local state does not accept.
|
|
13
|
+
*/
|
|
14
|
+
export function* sendIpexGrant(deps, sender, { recipient, credential, message = "", agree, gvrsn, deliver = true }) {
|
|
15
|
+
requireIpexSender(deps.hby, sender);
|
|
16
|
+
if (agree)
|
|
17
|
+
requireIpexPrior(deps.hby, sender.pre, recipient, agree, "grant");
|
|
18
|
+
const built = ipexCredentialGrant({
|
|
19
|
+
hby: deps.hby,
|
|
20
|
+
hab: sender,
|
|
21
|
+
reger: deps.reger,
|
|
22
|
+
recipient,
|
|
23
|
+
credentialSaid: credential,
|
|
24
|
+
message,
|
|
25
|
+
options: { agree: agree ? deps.hby.db.exns.get([agree]) : null, gvrsn },
|
|
26
|
+
});
|
|
27
|
+
const genus = built.grant.gvrsn ?? gvrsn ?? built.grant.pvrsn;
|
|
28
|
+
yield* acceptIpexExchange(deps, built.grant, built.wire, genus, "Local IPEX grant was not accepted.", agree);
|
|
29
|
+
const deliveries = deliver
|
|
30
|
+
? yield* sendCredentialStream(deps.postman, sender, recipient, [...built.support, built.wire])
|
|
31
|
+
: [];
|
|
32
|
+
return { grant: built.grant, credential, support: built.support, wire: built.wire, deliveries };
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Validate a stored grant for admission by `holder` without signing: it is
|
|
36
|
+
* accepted, addressed to the holder, carries a credential and has no accepted
|
|
37
|
+
* response yet. Saving is not required here.
|
|
38
|
+
*
|
|
39
|
+
* @throws ValidationError when the grant is not stored, was already answered or is not addressed to `holder`.
|
|
40
|
+
*/
|
|
41
|
+
export function requireAdmittableGrant(deps, holder, grantSaid) {
|
|
42
|
+
const grant = requireStoredExchange(deps.hby, grantSaid);
|
|
43
|
+
const sender = grant.ked?.i;
|
|
44
|
+
if (typeof sender !== "string" || sender.length === 0) {
|
|
45
|
+
throw new ValidationError("Grant is missing sender AID.");
|
|
46
|
+
}
|
|
47
|
+
requireIpexPrior(deps.hby, holder.pre, sender, grant.said, "admit");
|
|
48
|
+
const credential = validateAdmitGrant(grant, holder.pre, deps.reger, false);
|
|
49
|
+
return { grant, recipient: sender, credential };
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The holder's consent to a grant: validate the stored grant, sign an admit,
|
|
53
|
+
* accept it locally and deliver it to the grant's sender. A grant that already
|
|
54
|
+
* has an accepted response is refused, so a second admit never re-signs.
|
|
55
|
+
*
|
|
56
|
+
* @throws ValidationError as for {@link requireAdmittableGrant}, for a credential
|
|
57
|
+
* that is not saved when `requireSaved` holds, or for an admit local state does not accept.
|
|
58
|
+
*/
|
|
59
|
+
export function* sendIpexAdmit(deps, holder, grantSaid, { message = "", gvrsn, requireSaved = true, deliver = true } = {}) {
|
|
60
|
+
requireIpexSender(deps.hby, holder);
|
|
61
|
+
const { grant, recipient, credential } = requireAdmittableGrant(deps, holder, grantSaid);
|
|
62
|
+
const saved = !!deps.reger.saved.get([credential]);
|
|
63
|
+
const prepared = ipexCredentialAdmit({
|
|
64
|
+
hab: holder,
|
|
65
|
+
reger: deps.reger,
|
|
66
|
+
grant,
|
|
67
|
+
message,
|
|
68
|
+
options: { requireSaved, gvrsn },
|
|
69
|
+
});
|
|
70
|
+
const genus = prepared.admit.gvrsn ?? gvrsn ?? prepared.admit.pvrsn;
|
|
71
|
+
yield* acceptIpexExchange(deps, prepared.admit, prepared.wire, genus, "Local IPEX admit was not accepted.", grant.said);
|
|
72
|
+
const deliveries = deliver ? yield* sendCredentialStream(deps.postman, holder, recipient, [prepared.wire]) : [];
|
|
73
|
+
return { admit: prepared.admit, grant, credential, saved, wire: prepared.wire, deliveries };
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Import a stored grant's authenticated artifacts once, so the wallet can save
|
|
77
|
+
* its credential as evidence resolves. Idempotent: a credential that is already
|
|
78
|
+
* saved is not replayed. Signs nothing and does not wait; observe the outcome
|
|
79
|
+
* with `waitForIpexExchange(..., { until: "credential-saved" })` while the
|
|
80
|
+
* host's workers run.
|
|
81
|
+
*
|
|
82
|
+
* @param holder AID the grant must be addressed to.
|
|
83
|
+
* @returns The grant's status after the import.
|
|
84
|
+
* @throws ValidationError when the grant is not stored or not addressed to `holder`.
|
|
85
|
+
*/
|
|
86
|
+
export function* settleGrantCredential(deps, holder, grantSaid, { gvrsn } = {}) {
|
|
87
|
+
const grant = requireStoredExchange(deps.hby, grantSaid);
|
|
88
|
+
const credential = validateAdmitGrant(grant, holder, deps.reger, false);
|
|
89
|
+
if (!deps.reger.saved.get([credential])) {
|
|
90
|
+
yield* processCredentialPresentationArtifacts(deps.protocol, storedGrantArtifacts(deps.hby, grant, gvrsn));
|
|
91
|
+
}
|
|
92
|
+
return ipexExchangeStatus(deps, grantSaid);
|
|
93
|
+
}
|
|
@@ -136,20 +136,13 @@ export function* prepareAcdcV2GroupIpex(hby, protocol, group, raw) {
|
|
|
136
136
|
return wire;
|
|
137
137
|
}
|
|
138
138
|
/**
|
|
139
|
-
* Approve one
|
|
140
|
-
*
|
|
141
|
-
* @
|
|
142
|
-
* @param protocol Borrowed semantic owner; this approval creates its own byte-input context.
|
|
143
|
-
* @param postman Borrowed delivery owner; the caller runs and joins its worker.
|
|
144
|
-
* @param reger Explicit legacy store, required for grant approval/delivery and fresh admit approval.
|
|
145
|
-
* @param wrapper Accepted multisig exchange carrying the proposed IPEX child.
|
|
146
|
-
* @param options Approval/genus policy used for the existing group workflow.
|
|
147
|
-
* @returns Approval and current group/protocol completion information.
|
|
139
|
+
* Approve one stored multisig wrapper around an IPEX message locally: validate it, reuse or sign this member's
|
|
140
|
+
* contribution and accept it, without publishing or sending anything. The explicit consent of the library's group
|
|
141
|
+
* IPEX operations; {@link approveMultisigIpex} adds publication and the lead's delivery.
|
|
148
142
|
*/
|
|
149
|
-
export function*
|
|
143
|
+
export function* approveMultisigIpexLocally(hby, protocol, reger, wrapper) {
|
|
150
144
|
const { child, groupHab } = yield* loadIpexProposal(hby, wrapper);
|
|
151
145
|
const { event: embedded, genus } = child;
|
|
152
|
-
const embeddedSaid = embedded.said;
|
|
153
146
|
if (embedded.pvrsn.major === 1 && embedded.route === IPEX_GRANT_ROUTE && !reger) {
|
|
154
147
|
throw new ValidationError("VDR runtime did not open Reger.");
|
|
155
148
|
}
|
|
@@ -166,6 +159,23 @@ export function* approveMultisigIpex(hby, protocol, postman, reger, wrapper, opt
|
|
|
166
159
|
}
|
|
167
160
|
}
|
|
168
161
|
const approved = yield* approveIpexChild(hby, protocol, groupHab, child, wrapper, reger);
|
|
162
|
+
return { embedded, groupHab, genus, approved };
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Approve one pending multisig wrapper around an embedded IPEX message.
|
|
166
|
+
*
|
|
167
|
+
* @param hby Borrowed local identities and accepted-state stores.
|
|
168
|
+
* @param protocol Borrowed semantic owner; this approval creates its own byte-input context.
|
|
169
|
+
* @param postman Borrowed delivery owner; the caller runs and joins its worker.
|
|
170
|
+
* @param reger Explicit legacy store, required for grant approval/delivery and fresh admit approval.
|
|
171
|
+
* @param wrapper Accepted multisig exchange carrying the proposed IPEX child.
|
|
172
|
+
* @param options Approval/genus policy used for the existing group workflow.
|
|
173
|
+
* @returns Approval and current group/protocol completion information.
|
|
174
|
+
*/
|
|
175
|
+
export function* approveMultisigIpex(hby, protocol, postman, reger, wrapper, options = {}) {
|
|
176
|
+
const local = yield* approveMultisigIpexLocally(hby, protocol, reger, wrapper);
|
|
177
|
+
const { embedded, groupHab, genus, approved } = local;
|
|
178
|
+
const embeddedSaid = embedded.said;
|
|
169
179
|
if (!approved)
|
|
170
180
|
return { approved: null, accepted: protocol.exc.complete(embeddedSaid), messages: [], deliveries: [] };
|
|
171
181
|
const publication = options.publish
|
|
@@ -665,3 +675,16 @@ function hexToFixedBytes(hex, size) {
|
|
|
665
675
|
}
|
|
666
676
|
return raw;
|
|
667
677
|
}
|
|
678
|
+
/** The stored `/multisig/exn` wrapper that carries the IPEX message `embeddedSaid`, if one is held. */
|
|
679
|
+
export function findStoredMultisigIpex(db, embeddedSaid) {
|
|
680
|
+
for (const [, wrapper] of db.exns.getTopItemIter()) {
|
|
681
|
+
if (wrapper.route === MULTISIG_EXN_ROUTE && storedMultisigIpexBody(db, wrapper)?.said === embeddedSaid) {
|
|
682
|
+
return wrapper;
|
|
683
|
+
}
|
|
684
|
+
}
|
|
685
|
+
return null;
|
|
686
|
+
}
|
|
687
|
+
/** Whether the local member of `group` already holds a verified contribution to `embedded` (a recorded approval). */
|
|
688
|
+
export function groupIpexApproved(hby, group, embedded) {
|
|
689
|
+
return !!localIpexContribution(hby.db, localGroupMember(hby, group).pre, embedded, rebuildStoredExchangeGroups(hby.db, embedded.said));
|
|
690
|
+
}
|