blob: 97e6f133b9de97a58ce913ea739c908518c4c832 (
plain) (
blame)
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
|
using System;
using System.IO;
using System.Threading;
using NUnit.Framework;
using Org.BouncyCastle.Utilities;
using Org.BouncyCastle.Utilities.IO;
namespace Org.BouncyCastle.Tls.Tests
{
[TestFixture]
public class TlsPskProtocolTest
{
[Test]
public void TestClientServer()
{
PipedStream clientPipe = new PipedStream();
PipedStream serverPipe = new PipedStream(clientPipe);
TlsClientProtocol clientProtocol = new TlsClientProtocol(clientPipe);
TlsServerProtocol serverProtocol = new TlsServerProtocol(serverPipe);
MockPskTlsClient client = new MockPskTlsClient(null);
MockPskTlsServer server = new MockPskTlsServer();
Server serverRun = new Server(serverProtocol, server);
Thread serverThread = new Thread(new ThreadStart(serverRun.Run));
serverThread.Start();
clientProtocol.Connect(client);
byte[] data = new byte[1000];
client.Crypto.SecureRandom.NextBytes(data);
Stream output = clientProtocol.Stream;
output.Write(data, 0, data.Length);
byte[] echo = new byte[data.Length];
int count = Streams.ReadFully(clientProtocol.Stream, echo);
Assert.AreEqual(count, data.Length);
Assert.IsTrue(Arrays.AreEqual(data, echo));
output.Close();
serverThread.Join();
}
internal class Server
{
private readonly TlsServerProtocol m_serverProtocol;
private readonly TlsServer m_server;
internal Server(TlsServerProtocol serverProtocol, TlsServer server)
{
this.m_serverProtocol = serverProtocol;
this.m_server = server;
}
public void Run()
{
try
{
m_serverProtocol.Accept(m_server);
Streams.PipeAll(m_serverProtocol.Stream, m_serverProtocol.Stream);
m_serverProtocol.Close();
}
catch (Exception e)
{
}
}
}
}
}
|