zeromq / netmq

A 100% native C# implementation of ZeroMQ for .NET
Other
2.94k stars 742 forks source link

Curve implementation #842

Closed somdoron closed 3 years ago

somdoron commented 4 years ago

ZMTP3 and the Null Mechanism is implemented as part of #843, supporting Curve is a matter of implementing the Curve mechanism classes.

.Net port of libsodium: https://www.nuget.org/packages/dlech.Chaos.NaCl/ https://github.com/dlech/Chaos.NaCl https://github.com/drr00t/tweetnacl-cs/

ZMTP3 and Curve RFC: https://rfc.zeromq.org/spec:37/ZMTP/ https://rfc.zeromq.org/spec:25/ZMTP-CURVE/

Curve mechanism classes that need to be ported: https://github.com/zeromq/libzmq/blob/v4.3.2/src/curve_mechanism_base.cpp https://github.com/zeromq/libzmq/blob/v4.3.2/src/curve_mechanism_base.hpp https://github.com/zeromq/libzmq/blob/v4.3.2/src/curve_client_tools.hpp https://github.com/zeromq/libzmq/blob/v4.3.2/src/curve_client.hpp https://github.com/zeromq/libzmq/blob/v4.3.2/src/curve_client.cpp https://github.com/zeromq/libzmq/blob/v4.3.2/src/curve_server.cpp https://github.com/zeromq/libzmq/blob/v4.3.2/src/curve_server.hpp

We would also need to port the following socket options:

To hook curve mechanism with the StreamEngine, create the relevant mechanism classes here: https://github.com/somdoron/netmq/blob/ZMTP3/src/NetMQ/Core/Transports/StreamEngine.cs#L861

Optional

z85 encoding of certificates

I recommend to port czmq cert & certstore classs as well. https://rfc.zeromq.org/spec:32/Z85/ https://github.com/zeromq/libzmq/blob/be200896756df1273289abb0e5f5a2d86ead92b4/src/zmq_utils.cpp#L101 https://github.com/zeromq/czmq/blob/master/src/zcert.c https://github.com/zeromq/czmq/blob/master/src/zcertstore.c

ZAP - authentication protocol

https://rfc.zeromq.org/spec:27/ZAP/ https://github.com/zeromq/libzmq/blob/v4.3.2/src/zap_client.hpp https://github.com/zeromq/libzmq/blob/v4.3.2/src/zap_client.cpp https://github.com/zeromq/czmq/blob/63c27c834aa415efb82717cb705b776e245a0952/src/zauth.c

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had activity for 365 days. It will be closed if no further activity occurs within 56 days. Thank you for your contributions.