Skip to content
Juvix imports

module arch.node.engines.identity_management_messages;

import prelude open;
import arch.node.types.identities open;

Identity Management Messages

Message interface

MsgIdentityManagementGenerateIdentityRequest 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).

MsgIdentityManagementResponse 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.

MsgIdentityManagementConnectIdentityRequest 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).

MsgIdentityManagementConnectIdentityResponse 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.

MsgIdentityManagementDeleteIdentityRequest 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.

MsgIdentityManagementDeleteIdentityResponse 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;

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
Generating an identity

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
Connecting to an existing identity

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
Deleting an identity

Engine Components