zeromq/libzmq — pull request #667 by hintjens (2013-09-17 12:16:08+00:00)
Title: Reverted pull request 666

I reverted pull request 666 because it makes the API more complex, not simpler.

Inherently, it's looking for symmetry in Curve security that isn't there. Clients and servers do not have the same API. All nodes have to specify their keypair (which may be permanent from Curve's point of view but not the node's).

Then the client has to specify the server public key and the server has to tell libzmq it's a server. That's it.

I'm all for improving the API but please make it simpler, not more complex. Specifically, avoid inventing or exposing internal concepts that the user does not need to know about. They don't know how Curve works internally. The difference between permanent and transient keys is invisible. The peer's secret key is invisible, so a client can refer just to "server key" without having to say, "permanent server public key".

Finally, I don't see the problem with the previous API. "Symmetry" is not a valid claim here, Curve isn't symmetrical.

The problem I do see is that there's no single API call to configure a client or server. This is how the socket options API works, though.

Sorry if this seems too harsh, but I'm always going to be unkind about things that make the API more complex without solving real problems.