Juvix imports
module arch.node.engines.identity_management_messages;
import prelude open;
import arch.node.types.identities open;
Identity Management Messages¶
Message interface¶
type IdentityManagementMsg :=
| MsgIdentityManagementGenerateIdentityRequest RequestGenerateIdentity
| MsgIdentityManagementGenerateIdentityReply ReplyGenerateIdentity
| MsgIdentityManagementConnectIdentityRequest RequestConnectIdentity
| MsgIdentityManagementConnectIdentityReply ReplyConnectIdentity
| MsgIdentityManagementDeleteIdentityRequest RequestDeleteIdentity
| MsgIdentityManagementDeleteIdentityReply ReplyDeleteIdentity;
Message sequence diagrams¶
Generating an identity¶
sequenceDiagram
participant Client
participant IdentityManagementEngine
participant CommitmentEngine
participant DecryptionEngine
Client->>IdentityManagementEngine: RequestGenerateIdentity
Note over IdentityManagementEngine: Create new identity
IdentityManagementEngine->>CommitmentEngine: Spawn (if requested)
IdentityManagementEngine->>DecryptionEngine: Spawn (if requested)
IdentityManagementEngine->>Client: ReplyGenerateIdentity
Connecting to an existing identity¶
sequenceDiagram
participant Client
participant IdentityManagementEngine
Client->>IdentityManagementEngine: RequestConnectIdentity
Note over IdentityManagementEngine: Check external identity
Note over IdentityManagementEngine: Verify capabilities
Note over IdentityManagementEngine: Copy engine references
IdentityManagementEngine->>Client: ReplyConnectIdentity
Deleting an identity¶
sequenceDiagram
participant Client
participant IdentityManagementEngine
Client->>IdentityManagementEngine: RequestDeleteIdentity
Note over IdentityManagementEngine: Check if identity exists
Note over IdentityManagementEngine: Delete identity if exists
IdentityManagementEngine->>Client: ReplyDeleteIdentity
Message types¶
RequestGenerateIdentity
¶
type RequestGenerateIdentity :=
mkRequestGenerateIdentity@{
backend : Backend;
params : IDParams;
capabilities : Capabilities;
};
A RequestGenerateIdentity
instructs the Identity Management Engine to generate
a new identity using the specified backend, parameters, and capabilities.
Arguments
backend
:- The backend to use for identity generation.
params
:- Parameters to pass to the backend.
capabilities
:- Capabilities to request (e.g., commitment, decryption, or both).
ReplyGenerateIdentity
¶
type ReplyGenerateIdentity :=
mkReplyGenerateIdentity@{
commitmentEngine : Option EngineID;
decryptionEngine : Option EngineID;
externalIdentity : EngineID;
err : Option String;
};
A ReplyGenerateIdentity
provides the handles to the decryption and
commitment engine instances for the newly generated identity, or an error if a
failure occurred.
Arguments
commitmentEngine
:- Reference to the newly instantiated commitment engine.
decryptionEngine
:- Reference to the newly instantiated decryption engine.
externalIdentity
:- The external identity of the newly created identity.
err
:- An error message if identity generation failed.
RequestConnectIdentity
¶
type RequestConnectIdentity :=
mkRequestConnectIdentity@{
externalIdentity : EngineID;
backend : Backend;
capabilities : Capabilities;
};
A RequestConnectIdentity
instructs the Identity Management Engine to connect
to an existing identity using the specified backend.
Arguments
externalIdentity
:- The external identity to connect.
backend
:- The backend to use for the connection.
capabilities
:- Capabilities to request (e.g., commitment, decryption, or both).
ReplyConnectIdentity
¶
type ReplyConnectIdentity :=
mkConnectIdentityReply@{
commitmentEngine : Option EngineID;
decryptionEngine : Option EngineID;
err : Option String;
};
A ReplyConnectIdentity
provides the handles to the decryption and
commitment engine instances for the connected identity, or an error if a failure
occurred.
Arguments
commitmentEngine
:- Reference to the newly connected commitment engine.
decryptionEngine
:- Reference to the newly connected decryption engine.
err
:- An error message if identity connection failed.
RequestDeleteIdentity
¶
type RequestDeleteIdentity :=
mkRequestDeleteIdentity@{
externalIdentity : EngineID;
backend : Backend;
};
A RequestDeleteIdentity
instructs the Identity Management Engine to delete an
existing identity using the specified backend.
Arguments
externalIdentity
:- The external identity to delete.
backend
:- The backend to use for deletion.
ReplyDeleteIdentity
¶
type ReplyDeleteIdentity :=
mkReplyDeleteIdentity@{
err : Option String;
};
A ReplyDeleteIdentity
provides the response from an attempt to delete an
identity.
Arguments
err
:- An error message if identity deletion failed.
IdentityManagementMsg
¶
type IdentityManagementMsg :=
| MsgIdentityManagementGenerateIdentityRequest RequestGenerateIdentity
| MsgIdentityManagementGenerateIdentityReply ReplyGenerateIdentity
| MsgIdentityManagementConnectIdentityRequest RequestConnectIdentity
| MsgIdentityManagementConnectIdentityReply ReplyConnectIdentity
| MsgIdentityManagementDeleteIdentityRequest RequestDeleteIdentity
| MsgIdentityManagementDeleteIdentityReply ReplyDeleteIdentity;