ConstReadonlyidentity: "me2em/identity/v1/root"Info string for deriving the root Identity key from the seed.
Constant value: "me2em/identity/v1/root".
Readonlyhandle: ((name: string) => string)Builds the info string for deriving a Handle from an Identity.
The Handle name (will be normalized).
The info string, e.g. "me2em/handle/v1/station-001".
Readonlysubhandle: ((handleName: string, subName: string) => string)Builds the info string for deriving a SubHandle from a Handle.
The parent Handle name (will be normalized).
The SubHandle name (will be normalized).
The info string, e.g. "me2em/subhandle/v1/station-001/connector-1".
Readonlyp2pInfo string for peer-to-peer channel key derivation. v2 binds both peers' public keys into the derivation, preventing unknown key-share attacks. The peer keys are appended in sorted order so both parties derive the identical string.
Readonlypassword: ((revision?: number) => string)Builds the info string for password (secret) derivation.
Revision model (PR-8, D3): revision 1 — the initial revision — and
an omitted revision both yield the frozen v1 info string, so the
default derivation is byte-identical to the pre-revision protocol.
Revision N ≥ 2 appends a /rN path segment and derives a secret
that is cryptographically independent of revision 1 for the same
context — the sanctioned rotation path (specs/v1.0.md §3, PLAN-LTS
§4 derivation-freeze rule).
Positive integer revision; default 1.
The info string, e.g. "me2em/secret/v1" or "me2em/secret/v1/r2".
Readonlychannel: ((revision?: number) => string)Builds the info string for channel-key derivation.
Same revision model as DERIVATION_PATHS.password: revision
1/omitted yields the frozen "me2em/channel/v1"; revision
N ≥ 2 yields "me2em/channel/v1/rN" — an independent key for
rotating a compromised channel without changing the context.
Positive integer revision; default 1.
The info string, e.g. "me2em/channel/v1" or "me2em/channel/v1/r2".
Deterministic derivation paths for the Me2eM protocol.
All HKDF info strings used to derive Identity, Handle, and SubHandle keys are centralized here. This guarantees that:
Identity.deriveHandle(name)andHandle.deriveSubHandle(subName)produce the same key asIdentity.deriveSubHandle(name, subName).