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
| MsgIdentityManagementGenerateIdentityResponse ResponseGenerateIdentity
| MsgIdentityManagementConnectIdentityRequest RequestConnectIdentity
| MsgIdentityManagementConnectIdentityResponse ResponseConnectIdentity
| MsgIdentityManagementDeleteIdentityRequest RequestDeleteIdentity
| MsgIdentityManagementDeleteIdentityResponse ResponseDeleteIdentity;
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: ResponseGenerateIdentity
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: ResponseConnectIdentity
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: ResponseDeleteIdentity
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).
ResponseGenerateIdentity
¶
type ResponseGenerateIdentity :=
mkResponseGenerateIdentity@{
commitmentEngine : Option EngineID;
decryptionEngine : Option EngineID;
externalIdentity : EngineID;
err : Option String;
};
A ResponseGenerateIdentity
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).
ResponseConnectIdentity
¶
type ResponseConnectIdentity :=
mkConnectIdentityResponse@{
commitmentEngine : Option EngineID;
decryptionEngine : Option EngineID;
err : Option String;
};
A ResponseConnectIdentity
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.
ResponseDeleteIdentity
¶
type ResponseDeleteIdentity :=
mkResponseDeleteIdentity@{
err : Option String;
};
A ResponseDeleteIdentity
provides the response from an attempt to delete an
identity.
Arguments
err
:- An error message if identity deletion failed.
IdentityManagementMsg
¶
type IdentityManagementMsg :=
| MsgIdentityManagementGenerateIdentityRequest RequestGenerateIdentity
| MsgIdentityManagementGenerateIdentityResponse ResponseGenerateIdentity
| MsgIdentityManagementConnectIdentityRequest RequestConnectIdentity
| MsgIdentityManagementConnectIdentityResponse ResponseConnectIdentity
| MsgIdentityManagementDeleteIdentityRequest RequestDeleteIdentity
| MsgIdentityManagementDeleteIdentityResponse ResponseDeleteIdentity;