public void WithLibzmqServer() { using (var ctx = new ZContext()) using (var client = new DealerSocket()) using (var server = ZSocket.Create(ctx, ZSocketType.DEALER)) { var serverCert = new ZCert(); server.CurveServer = true; server.CurveSecretKey = serverCert.SecretKey; server.Bind($"tcp://127.0.0.1:55367"); var clientKeyPair = new NetMQCertificate(); client.Options.CurveCertificate = clientKeyPair; client.Options.CurveServerKey = serverCert.PublicKey; client.Connect("tcp://127.0.0.1:55367"); server.SendBytes(Encoding.ASCII.GetBytes("Hello"), 0, 5); var hello = client.ReceiveFrameString(); Assert.Equal("Hello", hello); client.SendFrame("Hello"); var frame = server.ReceiveFrame(); Assert.Equal("Hello", frame.ReadString()); } }
public void CurveTest() { var serverPair = new NetMQCertificate(); using var server = new DealerSocket(); server.Options.CurveServer = true; server.Options.CurveCertificate = serverPair; server.Bind($"tcp://127.0.0.1:55367"); var clientPair = new NetMQCertificate(); using var client = new DealerSocket(); client.Options.CurveServerKey = serverPair.PublicKey; client.Options.CurveCertificate = clientPair; client.Connect("tcp://127.0.0.1:55367"); for (int i = 0; i < 100; i++) { client.SendFrame("Hello"); var hello = server.ReceiveFrameString(); Assert.Equal("Hello", hello); server.SendFrame("World"); var world = client.ReceiveFrameString(); Assert.Equal("World", world); } }
/// <summary> /// Setup Curve encryption. /// </summary> /// <param name="settings">The encryption settings.</param> /// <param name="socket">The socket for the encryption.</param> public static void SetupSocket(EncryptionSettings settings, NetMQSocket socket) { var certificate = new NetMQCertificate(settings.SecretKey, settings.PublicKey); socket.Options.CurveServer = true; socket.Options.CurveCertificate = certificate; }
static CertificatesManager() { var serverKey = new byte[32]; var rnd = new Random(); rnd.NextBytes(serverKey); _serverCert = NetMQCertificate.CreateFromSecretKey(serverKey); }
static async Task Run(string[] args) { Console.WriteLine("Starting ZMQ Client"); if (args == null || args.Length < 1) { Console.WriteLine(); Console.WriteLine("Usage: ./{0}", AppDomain.CurrentDomain.FriendlyName); Console.WriteLine(); args = new[] { "Hello" }; } var arg = args[0]; Message msg = new() { Data = arg, Id = 1 }; var clientCertificatePair = new NetMQCertificate(); var client = new RequestSocket(); //client.Options.CurveServerCertificate = CertificatesManager.GetServerCertificate(); client.Options.CurveServerKey = CertificatesManager.GetServerCertificate().PublicKey; client.Options.CurveCertificate = clientCertificatePair; client.Connect(@"tcp://localhost:5556"); var bufferedMsg = msg.ToByteArray(); client.SendFrame(bufferedMsg); (byte[], bool)socketMsgResponse; while (true) { socketMsgResponse = await client.ReceiveFrameBytesAsync().ConfigureAwait(false); if (!socketMsgResponse.Item2) { break; } } var receivedMsg = Message.Parser.ParseFrom(socketMsgResponse.Item1); Console.WriteLine("From Server: {0} - {1}", receivedMsg.Id, receivedMsg.Data); Console.WriteLine(); Console.Write("Press any key to exit..."); Console.ReadKey(); } }