Overview
This proposal is for a protocol apps could use to register and look up services in a directory.
Motivation
The most straightforward way to support onioncat is with a service directory.
This is similar to a proposal Sponge had a while back on IRC. I don't think he wrote it up, but his idea was to put it in the netDb. I'm not in favor of that, but the discussion of the best method of accessing the directory (netDb lookups, DNS-over-i2p, HTTP, hosts.txt, etc.) I will leave for another day.
I could probably hack this up pretty quickly using HTTP and the collection of perl scripts I use for the add key form.
Specification
Here's how an app would interface with the directory:
- REGISTER
- DestKey
- List of Protocol/Service pairs:
- Protocol (optional, default: HTTP)
- Service (optional, default: website)
- ID (optional, default: none)
- Hostname (optional)
- Expiration (default: 1 day? 0 for delete)
- Sig (using privkey for dest)
Returns: success or failure
Updates allowed
- LOOKUP
- Hash or key (optional). ONE of:
- 80-bit partial hash
- 256-bit full hash
- full destkey
- Protocol/service pair (optional)
Returns: success, failure, or (for 80-bit) collision. If success, returns signed descriptor above.
- Hash or key (optional). ONE of: