Juvix imports
module arch.node.engines.identity_management_environment;
import prelude open;
import arch.node.types.messages open;
import arch.node.types.crypto open;
import arch.node.types.identities open;
import arch.node.types.engine_environment open;
import arch.node.engines.identity_management_messages open;
import arch.node.types.anoma_message as Anoma open;
import arch.system.identity.identity open hiding {ExternalIdentity};
Identity Management Environment¶
Overview¶
The Identity Management Engine's environment maintains the state necessary for managing identities, including information about connected identities, backends, and capabilities.
Auxiliary Juvix code
axiom genDecryptor : Backend -> Decryptor Backend Plaintext Ciphertext;
axiom genSigner : Backend -> Signer Backend Signable Commitment;
Mailbox states¶
The Identity Management Engine does not require complex mailbox states. We define the mailbox state as Unit.
IdentityManagementMailboxState¶
syntax alias IdentityManagementMailboxState := Unit;
Local state¶
The local state of the Identity Management Engine includes information about the identities it manages.
IdentityInfo¶
type IdentityInfo :=
  mkIdentityInfo@{
    backend : Backend;
    capabilities : Capabilities;
    commitmentEngine : Option EngineID;
    decryptionEngine : Option EngineID;
  };
Arguments
- backend:
- The backend associated with this identity.
- capabilities:
- The capabilities available to this identity.
- commitmentEngine:
- Optional reference to the commitment engine for this identity.
- decryptionEngine:
- Optional reference to the decryption engine for this identity.
IdentityManagementLocalState¶
type IdentityManagementLocalState :=
  mkIdentityManagementLocalState@{
    identities : Map EngineID IdentityInfo;
  };
Arguments
- identities:
- Map of engine IDs to their corresponding identity information.
Timer Handle¶
The Identity Management Engine does not require a timer handle type. Therefore, we define the timer handle type as Unit.
IdentityManagementTimerHandle¶
syntax alias IdentityManagementTimerHandle := Unit;
The Identity Management Environment¶
IdentityManagementEnv¶
IdentityManagementEnv : Type :=
  EngineEnv
    IdentityManagementLocalState
    IdentityManagementMailboxState
    IdentityManagementTimerHandle
    Anoma.Msg;
Instantiation¶
identityManagementEnv : IdentityManagementEnv :=
  mkEngineEnv@{
    localState :=
      mkIdentityManagementLocalState@{
        identities := Map.empty;
      };
    mailboxCluster := Map.empty;
    acquaintances := Set.empty;
    timers := [];
  };