Closed somdoron closed 3 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
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
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
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.
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