A system for finding application peers and resolving names over mesh-like networks
TODO:
CHALLENGE
requests.[fingerprint].rns
i.e. "c3a6-5e46-7b54-77df-3c4c-9790-4d22-b3ca-5b32-ff66.rns"RIDDLE
request, accepted with OK
CALLBACK
requestSOLVED
replyRIDDLE
arguments: group id, ttl, expiry, reply portRIDDLE
items: checksum/id, riddle public key, author public key, reply public key, riddle dataCALLBACK
arguments: riddle checksum/idCALLBACK
items: answer data, connecion info public keySOLVED
arguments: noneSOLVED
items: encrypted and signed IP/port data
Riddles are sent to peers who are in the correct group
Peers receive the riddle and then forward onto other peers in the group - holding on to the riddle ID and metadata
When a peer is reached that can solve the riddle, it encrypts its answer with the reply public key
and then signes the encrypted answer with the private key derrived from the riddle matching the riddle public key
.
Thet peer then sends a CALLBACK
request to the peer it received the riddle from.
The peer servicing the CALLBACK
request verifies the riddle with the public signature, and if correct forwards the request to the peer it received the riddle from.
The originating peer once receiving and verifying the CALLBACK
request, encrypts its IP/Port information with the connection info public key
and then signs the encrypted data using the author private key
from the riddle. The peer then replys with SOLVED
and the encrypted/signed data.
Intermediate peers verify the SOLVED
reply by verifying the encrypted data against the author public key
of the riddle before passing back the reply.
At any point in the chain, if a peer is not happy it can reply with NOT-ACCEPTED
and codes in the 1xx range.