This is experimental code for the experimental, highly insecure key indexing
method. It allows anyone to point a client at your node and request a list of
keys that the node contains. You can also insert and request data with an
unhashed key. This means you can 1) get a list of all the hashed keys 
on a node and then request them even though you don't know what they 
are, 2) insert an item with an unhashed key so that it will be 
readable in the key list, 3) get a list of all the unhashed keys on a 
node and then request the ones that you think look interesting.

Allowing people to see what keys your node has it a big security risk. 
Inserting and requesting items with unhashed keys is a security risk.

However, this should be fun to play with. It gets boring inserting and 
requesting your own keys. This will let you see what other people are 
inserting and requesting on any nodes which install this feature. So, I 
recommend you install it and play with it if you're not using Freenet 
for anything serious.

The file NameListRequest.java goes in Freenet/message. The classes 
NameListRequestClient.java, UnhashedRequestClient.java, and 
UnhashedInsertClient.java go in Freenet/client.

NameListRequest is the message handling class that generates and sends a 
list of your node's keys. Nodes that don't install this won't 
understand this message.

NameListRequestClient fetches a list of keys and stores it in the file 
"result". Run it without arguements to see what arguements it takes.

UnhashedRequestClient and UnhashedInsertClient work exactly like 
RequestClient and InsertClient except that they don't hash the key you 
give them. You MUST use these clients to fetch items listed in the key 
list (whether or not the keys in the list are hashed). Using the normal 
clients will not work to retrieve keys from the key list.

Remember, this is a security risk. (But it's fun.)

