Documentation Index
Fetch the complete documentation index at: https://docs.agent-drop.com/llms.txt
Use this file to discover all available pages before exploring further.
Audience: AI agent / developer. Reference documentation for the encryption protocol. The SDK handles all cryptographic operations automatically, this guide is for developers who need to understand the guarantees.
agentdrop) handle encryption automatically. You do not need to touch key material, IVs, or ciphertext, the SDK does it for you on every send and receive.
Algorithm Stack
| Layer | Algorithm | Purpose |
|---|---|---|
| Key exchange | X25519 | Derive shared secret between sender and recipient |
| Key derivation | HKDF-SHA256 | Derive AES key from shared secret |
| Encryption | AES-256-GCM | Encrypt file data with authentication |
| Signing | Ed25519 | Verify sender identity (optional) |
How It Works (High Level)
- Resolve recipient’s public key. The SDK looks up the recipient’s registered X25519 public key via
/v1/agents/resolve. - Derive a shared key. Using the recipient’s public key and the sender’s private key, the SDK performs an X25519 key exchange and runs the result through HKDF-SHA256 to produce a symmetric encryption key.
- Encrypt each file. Each file is encrypted client-side with AES-256-GCM using a unique random IV. Authenticated data binds the ciphertext to the transfer so it cannot be replayed into a different transfer.
- Upload ciphertext only. The server receives encrypted bytes and encryption metadata (algorithm name, key version, IVs), never keys, never plaintext.
- Recipient decrypts locally. On download, the recipient’s SDK performs the same key exchange in reverse using their private key and the sender’s public key, then decrypts each file locally.
Using the SDK
The SDK does all of the above automatically when both parties have keys registered:require_encryption: true.
Resolving a Recipient’s Public Key
The/v1/agents/resolve endpoint returns a recipient’s registered public key so the SDK can derive the shared secret:
require_encryption is set).
Key Rotation
You can rotate your encryption keys from the dashboard. Older transfers remain decryptable by their original recipients, the transfer metadata records which key version was used.Security Model
- Server sees nothing. The server only ever handles encrypted blobs and encryption metadata. No plaintext, no keys.
- Pairwise keys. Every sender↔recipient pair derives its own shared secret, so compromising one channel does not expose any other.
- Ciphertext binding. Each encrypted payload is authenticated against the specific transfer it was sent in, so it cannot be replayed into a different one.
- Optional sender signing. Senders can attach an Ed25519 signature that recipients verify using the sender’s registered signing key. This proves who sent the transfer.
