This manual page documents briefly the CurveCP commands.
A traditional UNIX-style server such as ftpd handles just one network connection, reading input from
stdin and writing output to stdout. A "superserver" such as inetd or tcpserver listens for network
connections and starts a separate server process for each connection.
The CurveCP command-line tools have an extra level of modularity. The curvecpserver superserver listens
for network connections. For each connection, curvecpserver starts the curvecpmessage message handler;
curvecpmessage then starts a server such as ftpd. Then ftpd sends a stream of data to curvecpmessage,
which in turn sends messages to curvecpserver, which encrypts and authenticates the messages and sends
them inside network packets. At the same time curvecpclient receives network packets, verifies and
decrypts messages inside the packets, and passes the messages to curvecpmessage; curvecpmessage sends a
stream of data to ftpd. The same curvecpmessage tool is also used by curvecpclient.
curvecpserver and curvecpclient can use programs other than curvecpmessage. Those programs can directly
generate messages in the CurveCP message format without talking to separate tools such as ftpd; or they
can support a completely different protocol that reuses CurveCP's cryptographic layer but transmits
different kinds of messages.