-
Notifications
You must be signed in to change notification settings - Fork 751
/
Copy pathCurveTests.cs
100 lines (84 loc) · 3.35 KB
/
CurveTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
using System.Text;
using NetMQ.Sockets;
using Xunit;
#if NETFRAMEWORK
using ZeroMQ;
#endif
namespace NetMQ.Tests
{
public class CurveTests
{
[Fact]
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);
}
}
#if NETFRAMEWORK
[Fact]
public void WithLibzmqClient()
{
using (var ctx = new ZContext())
using (var client = ZSocket.Create(ctx, ZSocketType.DEALER))
using (var server = new DealerSocket())
{
var serverPair = new NetMQCertificate();
server.Options.CurveServer = true;
server.Options.CurveCertificate = serverPair;
server.Bind($"tcp://127.0.0.1:55367");
var clientCert = new ZCert();
client.CurveSecretKey = clientCert.SecretKey;
client.CurvePublicKey = clientCert.PublicKey;
client.CurveServerKey = serverPair.PublicKey;
client.Connect("tcp://127.0.0.1:55367");
client.SendBytes(Encoding.ASCII.GetBytes("Hello"), 0, 5);
var hello = server.ReceiveFrameString();
Assert.Equal("Hello", hello);
server.SendFrame("Hello");
var frame = client.ReceiveFrame();
Assert.Equal("Hello", frame.ReadString());
}
}
[Fact]
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());
}
}
#endif
}
}