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) => stringBuilds the info string for deriving a Handle from an Identity.
Readonlysubhandle: (handleName: string, subName: string) => stringBuilds the info string for deriving a SubHandle from a Handle.
Readonlyp2pChannelV2: "me2em/p2p-channel/v2"Info 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) => stringBuilds 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).
Readonlychannel: (revision?: number) => stringBuilds 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.
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).