Skip to content

Commit

Permalink
Optimize header encryption
Browse files Browse the repository at this point in the history
  • Loading branch information
Aeliux committed Nov 9, 2023
1 parent e9eb246 commit b1a156c
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 29 deletions.
10 changes: 5 additions & 5 deletions src/ZilyClientSide.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class ZilyClientSide : ZilySide
public ZilyClientSide(Stream stream, ILogger logger = null) : base(stream, logger) { }

/// <inheritdoc/>
public override void ParseHeader(ZilyHeader header)
protected override void ParseHeader(ZilyHeader header)
{
switch (header.Flag)
{
Expand All @@ -39,7 +39,7 @@ public override void ParseHeader(ZilyHeader header)
base.ParseHeader(header);
}

public override void ParseResponse(ZilyHeader header)
protected override void ParseResponse(ZilyHeader header)
{
switch (LastRequest)
{
Expand Down Expand Up @@ -81,15 +81,15 @@ public void Connect()
isSecured = true;
Logger.Information("Secure connection established");

okHeader = new ZilyHeader(Encryptor, ZilyHeaderFlag.Ok);
Send(new ZilyHeader(Encryptor, ZilyHeaderFlag.SideIdentifier));
okHeader = CreateHeader(ZilyHeaderFlag.Ok);
Send(CreateHeader(ZilyHeaderFlag.SideIdentifier));

if (Status == ZilySideStatus.Offline)
{
return;
}

WriteCommand(new ZilyHeader(Encryptor, ZilyHeaderFlag.Connected));
WriteCommand(CreateHeader(ZilyHeaderFlag.Connected));
Status = ZilySideStatus.Online;

Logger.Information("Connected to {name}", ServerSide.Name);
Expand Down
8 changes: 4 additions & 4 deletions src/ZilyHeader.cs
Original file line number Diff line number Diff line change
Expand Up @@ -57,11 +57,11 @@ public ZilyHeader(IEncryption encryptor, int flag, string text = null)
Text = text;
}

public ZilyHeader(int flag, string text, byte[] buffer)
public ZilyHeader(int flag, byte[] buffer, string text = null)
{
Flag = flag;
this.text = text;
Buffer = buffer;
this.text = text;

encryptor = Encryption.None;
}
Expand All @@ -75,7 +75,7 @@ public ZilyHeader(int flag, string text, byte[] buffer)
/// <returns>
/// A new instance of the <see cref="ZilyHeader"/>.
/// </returns>
public static ZilyHeader Parse(IEncryption encryptor, Stream stream)
public static ZilyHeader Read(IEncryption encryptor, Stream stream)
{
int flag;
string text = null;
Expand Down Expand Up @@ -103,7 +103,7 @@ public static ZilyHeader Parse(IEncryption encryptor, Stream stream)
}
}

return new ZilyHeader(flag, text, buffer);
return new ZilyHeader(flag, buffer, text);
}

/// <summary>
Expand Down
12 changes: 6 additions & 6 deletions src/ZilyServerSide.cs
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,18 @@ public class ZilyServerSide : ZilySide
public ZilyServerSide(Stream stream, ILogger logger = null) : base(stream, logger)
{
isSecured = true;
okHeader = new ZilyHeader(Encryptor, ZilyHeaderFlag.Ok);
okHeader = CreateHeader(ZilyHeaderFlag.Ok);
}

public override void ParseHeader(ZilyHeader header)
protected override void ParseHeader(ZilyHeader header)
{
switch (header.Flag)
{
case ZilyHeaderFlag.AesKey:
WriteCommand(new ZilyHeader(ZilyHeaderFlag.Ok, null, aesEnncryptor.Key));
WriteCommand(new ZilyHeader(ZilyHeaderFlag.Ok, aesEnncryptor.Key));
break;
case ZilyHeaderFlag.AesIV:
WriteCommand(new ZilyHeader(ZilyHeaderFlag.Ok, null, aesEnncryptor.IV));
WriteCommand(new ZilyHeader(ZilyHeaderFlag.Ok, aesEnncryptor.IV));
break;
default:
base.ParseHeader(header);
Expand All @@ -54,15 +54,15 @@ public void Accept()

while (true)
{
var header = ZilyHeader.Parse(Encryptor, Stream);
var header = ZilyHeader.Read(Encryptor, Stream);
if (!everConnected)
{
Logger.Information("A new client connected to the pipe server");
Logger.Information("Establishing a Zily connection");
everConnected = true;
}

ParseHeader(header);
Parse(header);

if (header.Flag == ZilyHeaderFlag.Connected)
{
Expand Down
40 changes: 27 additions & 13 deletions src/ZilySide.cs
Original file line number Diff line number Diff line change
Expand Up @@ -85,18 +85,27 @@ public ZilySide(Stream stream, ILogger logger = null)
/// <param name="header">
/// The header object.
/// </param>
public virtual void ParseHeader(ZilyHeader header)
public void Parse(ZilyHeader header)
{
Logger.Debug("Parsing {size} byte data with flag {flag} and message \"{text}\"", header.Length, header.Flag, header.Text != null ? header.Text.Replace("\n", "") : "");

if (header.Flag == ZilyHeaderFlag.Ok && LastRequest > 1)
{
ParseResponse(header);
LastRequest = 0;
}
else
{
ParseHeader(header);
}
}

protected virtual void ParseHeader(ZilyHeader header)
{
switch (header.Flag)
{
case ZilyHeaderFlag.Ok:
if (LastRequest > 1)
{
ParseResponse(header);
LastRequest = 0;
}
// Do nothing
break;
case ZilyHeaderFlag.Warn:
Logger.Warning(header.Text);
Expand All @@ -111,7 +120,7 @@ public virtual void ParseHeader(ZilyHeader header)
Status = ZilySideStatus.Offline;
break;
case ZilyHeaderFlag.SideIdentifier:
WriteCommand(new ZilyHeader(Encryptor, ZilyHeaderFlag.Ok, GetIdentifier()));
WriteCommand(CreateHeader(ZilyHeaderFlag.Ok, GetIdentifier()));
break;
case ZilyHeaderFlag.Write:
Console.Write(header.Text);
Expand All @@ -123,11 +132,16 @@ public virtual void ParseHeader(ZilyHeader header)
}
}

public virtual void ParseResponse(ZilyHeader header)
protected virtual void ParseResponse(ZilyHeader header)
{

}

public ZilyHeader CreateHeader(int flag, string text = null)
{
return new ZilyHeader(Encryptor, flag, text);
}

/// <summary>
/// Writes the given <see cref="ZilyHeader"/> to the stream.
/// </summary>
Expand Down Expand Up @@ -169,8 +183,8 @@ public void WriteCommand(ZilyHeader header)
public void Send(ZilyHeader header)
{
WriteCommand(header);
ZilyHeader header2 = ZilyHeader.Parse(Encryptor, Stream);
ParseHeader(header2);
ZilyHeader header2 = ZilyHeader.Read(Encryptor, Stream);
Parse(header2);
}

/// <summary>
Expand Down Expand Up @@ -212,8 +226,8 @@ public void Listen(CancellationToken cancellationToken, bool suppressLogger = tr
{
try
{
var header = ZilyHeader.Parse(Encryptor, Stream);
ParseHeader(header);
var header = ZilyHeader.Read(Encryptor, Stream);
Parse(header);
}
catch (IOException)
{
Expand All @@ -235,7 +249,7 @@ public void Close()
if (Status == ZilySideStatus.Online)
{
Logger.Information("Closing connection");
WriteCommand(new ZilyHeader(Encryptor, ZilyHeaderFlag.Disconnected));
WriteCommand(CreateHeader(ZilyHeaderFlag.Disconnected));
}

Status = ZilySideStatus.Offline;
Expand Down
2 changes: 1 addition & 1 deletion src/ZilyTextWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public override void Write(char value)
/// <inheritdoc/>
public override void Flush()
{
side.Send(new ZilyHeader(side.Encryptor, ZilyHeaderFlag.Write, sb.ToString()));
side.Send(side.CreateHeader(ZilyHeaderFlag.Write, sb.ToString()));
sb.Clear();
}

Expand Down

0 comments on commit b1a156c

Please sign in to comment.