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 :=
  | GenerateIdentityRequest RequestGenerateIdentity
  | GenerateIdentityReply ReplyGenerateIdentity
  | ConnectIdentityRequest RequestConnectIdentity
  | ConnectIdentityReply ReplyConnectIdentity
  | DeleteIdentityRequest RequestDeleteIdentity
  | DeleteIdentityReply 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: ReplyGenerateIdentityConnecting 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: ReplyConnectIdentityDeleting 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: ReplyDeleteIdentityMessage 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 :=
  mkReplyConnectIdentity@{
    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 :=
  | GenerateIdentityRequest RequestGenerateIdentity
  | GenerateIdentityReply ReplyGenerateIdentity
  | ConnectIdentityRequest RequestConnectIdentity
  | ConnectIdentityReply ReplyConnectIdentity
  | DeleteIdentityRequest RequestDeleteIdentity
  | DeleteIdentityReply ReplyDeleteIdentity;