Juvix imports
module arch.node.engines.signs_for_messages;
import prelude open;
import arch.node.types.identities open;
SignsFor Messages¶
Message interface¶
type SignsForMsg :=
| MsgSignsForRequest RequestSignsFor
| MsgSignsForReply ReplySignsFor
| MsgSubmitSignsForEvidenceRequest RequestSubmitSignsForEvidence
| MsgSubmitSignsForEvidenceReply ReplySubmitSignsForEvidence
| MsgQuerySignsForEvidenceRequest RequestQuerySignsForEvidence
| MsgQuerySignsForEvidenceReply ReplyQuerySignsForEvidence;
Message sequence diagrams¶
Submitting signs_for
evidence¶
sequenceDiagram
participant Client
participant SignsForEngine
Client->>SignsForEngine: RequestSubmitSignsForEvidence
Note over SignsForEngine: Process and store evidence
SignsForEngine->>Client: ReplySubmitSignsForEvidence
Querying signs_for
relationship¶
sequenceDiagram
participant Client
participant SignsForEngine
Client->>SignsForEngine: RequestSignsFor (X signs for Y?)
Note over SignsForEngine: Check stored evidence
SignsForEngine->>Client: ReplySignsFor
Retrieving signs_for
evidence¶
sequenceDiagram
participant Client
participant SignsForEngine
Client->>SignsForEngine: RequestQuerySignsForEvidence (for X)
Note over SignsForEngine: Retrieve relevant evidence
SignsForEngine->>Client: ReplyQuerySignsForEvidence
Message types¶
RequestSignsFor
¶
type RequestSignsFor :=
mkRequestSignsFor@{
externalIdentityA : ExternalIdentity;
externalIdentityB : ExternalIdentity;
};
A RequestSignsFor
queries whether externalIdentityA
can sign on behalf of
externalIdentityB
.
Arguments
externalIdentityA
:- The identity attempting to sign.
externalIdentityB
:- The identity on whose behalf the signature is made.
MsgSignsForReply ReplySignsFor
¶
type ReplySignsFor :=
mkReplySignsFor@{
signsFor : Bool;
err : Option String;
};
A ReplySignsFor
indicates whether the signs_for
relationship exists.
Arguments
signsFor
:- True if
externalIdentityA
can sign forexternalIdentityB
, False otherwise. err
:- An error message if the query failed.
RequestSubmitSignsForEvidence
¶
type RequestSubmitSignsForEvidence :=
mkRequestSubmitSignsForEvidence@{
evidence : SignsForEvidence;
};
A RequestSubmitSignsForEvidence
submits evidence of a signs_for
relationship.
Arguments
evidence
:- The evidence supporting the
signs_for
relationship.
ReplySubmitSignsForEvidence
¶
type ReplySubmitSignsForEvidence :=
mkReplySubmitSignsForEvidence@{
err : Option String;
};
A ReplySubmitSignsForEvidence
acknowledges the submission of evidence.
Arguments
err
:- An error message if the submission failed.
RequestQuerySignsForEvidence
¶
type RequestQuerySignsForEvidence :=
mkRequestQuerySignsForEvidence@{
externalIdentity : ExternalIdentity;
};
A RequestQuerySignsForEvidence
queries all signs_for
evidence related to an identity.
Arguments
externalIdentity
:- The identity for which to retrieve evidence.
ReplyQuerySignsForEvidence
¶
type ReplyQuerySignsForEvidence :=
mkReplyQuerySignsForEvidence@{
externalIdentity : ExternalIdentity;
evidence : Set SignsForEvidence;
err : Option String;
};
A ReplyQuerySignsForEvidence
provides the requested evidence.
Arguments
externalIdentity
:- The identity for which to retrieve evidence.
evidence
:- A set of
SignsForEvidence
related to the identity. err
:- An error message if the query failed.
SignsForMsg
¶
type SignsForMsg :=
| MsgSignsForRequest RequestSignsFor
| MsgSignsForReply ReplySignsFor
| MsgSubmitSignsForEvidenceRequest RequestSubmitSignsForEvidence
| MsgSubmitSignsForEvidenceReply ReplySubmitSignsForEvidence
| MsgQuerySignsForEvidenceRequest RequestQuerySignsForEvidence
| MsgQuerySignsForEvidenceReply ReplyQuerySignsForEvidence;