Skip to main content

Module m4a_link

Module m4a_link 

Source
Expand description

Delivery of keystore-signed letters into the real m4a (the mail4agent messenger that holds the rooms and the human/agent accounts). There is no second messenger for sessions: a session’s letter is posted by that session’s own m4a account.

  • The session’s m4a account is proven by the session’s keystore key (m4a key-proof login, m4a-key-login-v1), so the key never leaves the keystore and there is no password.
  • The first letter enrolls the account: an admin invite for the session’s nick from the m4a product server, then m4a-key-enroll-v1 signed by the same key.
  • Letters go as a 1:1 room (is_direct) with the recipient, reused afterwards.
  • M4aLink::deliver_e2e sends end-to-end encrypted (Olm/Megolm) through the m4a client engine; its vault master key and identity key are rooted in the keystore, per session.

Configuration (env, no defaults that name a deployment): HATCHERY_M4A_PRODUCT_URL (http base of the m4a product server) and HATCHERY_M4A_ADMIN_TOKEN_VAR (NAME of the env var that holds the product admin bearer).

Structs§

LinkError
M4aLink

Constants§

ADMIN_TOKEN_VAR_ENV
PRODUCT_URL_ENV

Functions§

b64
enroll_message
key_id_of
login_message

Type Aliases§

ExternalSign
Signs a key-proof statement as the session, inside the keystore (never exported).