StaticverifyVerifies an Ed25519 signature against the provided data and public key.
The signature to verify (Uint8Array).
The original data that was signed (Uint8Array).
The public key to verify against (Uint8Array).
A Promise resolving to true if the signature is valid, false otherwise.
The metadata object associated with this Handle.
Issues an attestation for a derived SubHandle, binding its derived key to the name and grant. Autonomous: requires only this Handle's own key, no Identity and no network.
The child key is derived internally, so the attestation's
subjectId always equals the key produced by
identity.deriveSubHandle(this.name, subName).
Note: this method does not check this Handle's own grant — it may
not have one (Mode 1). Nesting is enforced by verifiers in
Session.verifyAttested (a child grant exceeding the parent's is
rejected with SCOPE_EXCEEDED/TTL_EXCEEDED at level ROOT).
Optionalopts: { OptionalttlOptionalexpiresOptionaljti?: stringOptionalnow?: numberDeterministically derives a secret (e.g., a password or API key) for a specific service context.
The private key never leaves this class, ensuring maximum security.
A unique identifier for the service (e.g., 'google', 'github').
Length of the derived raw bytes (default: 16 bytes ≈ 22 chars base64url).
A URL-safe base64 string suitable for use as a strong password.
Derives a symmetric 256-bit channel key for secure communication between the Identity (controller) and this Handle (device/context).
Both parties can independently compute this key because:
identity.deriveHandle(name).This enables zero-knowledge encrypted channels without key exchange protocols.
Channel identifier for domain separation (e.g., 'drone-001').
Both parties MUST use the same context.
A 32-byte Uint8Array suitable for AES-256-GCM encryption.
Derives a shared secret using ECDH (X25519) for P2P key exchange.
Converts the Ed25519 keypair to X25519 for Diffie-Hellman key agreement, then applies HKDF-SHA256 to produce a clean 32-byte channel key.
The Ed25519 public key of the other party (32 bytes).
A Promise resolving to a 32-byte shared secret suitable for AES-256-GCM.
Returns the SubHandle-specific metadata (constraints).
The SubHandleMetadata object.
Validates session options against this SubHandle's constraints.
Called internally by Session.create before signing. Throws if any constraint is violated:
audience not in allowedAudiencesscope not in allowedScopesttl exceeds maxSessionTtlexpiresAtThe session options to validate.
Represents a context-isolated child Handle in the Me2em hierarchy.
A SubHandle is always derived from a parent Handle and represents a leaf node in the derivation tree (MAX_DEPTH = 2). It inherits all cryptographic capabilities of Handle (signing, key derivation, etc.) but adds:
[handleName, subName]) carried in session tokens.SubHandle is used for polymorphism in Session: both Handle and SubHandle can create and verify sessions, but SubHandle sessions carry the additional
hPathfield for hierarchical auditing.