Skip to content

Commit b741abe

Browse files
committed
加密功能初步可用。
1 parent 54f1d51 commit b741abe

File tree

2 files changed

+25
-11
lines changed

2 files changed

+25
-11
lines changed

Quick.Protocol/QpChannel_Recv.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,10 @@ private async Task ReadRecvPipeAsync(PipeReader recvReader, CancellationToken to
218218
packageTotalLength = PACKAGE_TOTAL_LENGTH_LENGTH;
219219

220220
//开始解密
221+
var encryptedBuffer = packageBuffer.Slice(PACKAGE_TOTAL_LENGTH_LENGTH).ToArray();
222+
var retBuffer = dec.TransformFinalBlock(encryptedBuffer, 0, encryptedBuffer.Length);
223+
packageTotalLength += retBuffer.Length;
224+
/*
221225
var encryptedBuffer = packageBuffer.Slice(PACKAGE_TOTAL_LENGTH_LENGTH);
222226
var inLength = 0;
223227
while (encryptedBuffer.Length > 0)
@@ -240,7 +244,7 @@ private async Task ReadRecvPipeAsync(PipeReader recvReader, CancellationToken to
240244
var finnalInLength = 0;
241245
if (inLength == dec.InputBlockSize)
242246
{
243-
encryptBuffer1[0] = (byte)enc.InputBlockSize;
247+
decryptBuffer1[0] = (byte)dec.InputBlockSize;
244248
finnalInLength = 1;
245249
}
246250
var finalData = dec.TransformFinalBlock(decryptBuffer1, 0, finnalInLength);
@@ -253,11 +257,14 @@ private async Task ReadRecvPipeAsync(PipeReader recvReader, CancellationToken to
253257
}
254258
_ = decryptPipe.Writer.FlushAsync();
255259
ret = await decryptPipe.Reader.ReadAtLeastAsync(packageTotalLength, token).ConfigureAwait(false);
260+
*/
256261
//解密完成,释放缓存
257-
currentReader.AdvanceTo(packageBuffer.End);
262+
currentReader?.AdvanceTo(packageBuffer.End);
258263

259-
packageBuffer = ret.Buffer;
260-
currentReader = decryptPipe.Reader;
264+
//packageBuffer = ret.Buffer;
265+
packageBuffer = new ReadOnlySequence<byte>(new byte[PACKAGE_TOTAL_LENGTH_LENGTH].Concat(retBuffer).ToArray());
266+
267+
currentReader = null;//decryptPipe.Reader;
261268
}
262269

263270
//如果设置了压缩
@@ -292,7 +299,7 @@ private async Task ReadRecvPipeAsync(PipeReader recvReader, CancellationToken to
292299
});
293300
ret = await decompressPipe.Reader.ReadAtLeastAsync(packageTotalLength, token).ConfigureAwait(false);
294301
//解压完成,释放缓存
295-
currentReader.AdvanceTo(packageBuffer.End);
302+
currentReader?.AdvanceTo(packageBuffer.End);
296303
packageBuffer = ret.Buffer;
297304
currentReader = decompressPipe.Reader;
298305
}
@@ -312,7 +319,7 @@ private async Task ReadRecvPipeAsync(PipeReader recvReader, CancellationToken to
312319
BitConverter.ToString(packageBuffer.ToArray())
313320
: LogUtils.NOT_SHOW_CONTENT_MESSAGE);
314321
HandlePackage(packageType, packageBuffer);
315-
currentReader.AdvanceTo(packageBuffer.End);
322+
currentReader?.AdvanceTo(packageBuffer.End);
316323
}
317324
}
318325
catch (Exception ex)

Quick.Protocol/QpChannel_Send.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@ private async Task writePackageBuffer(PipeReader currentReader, QpPackageType pa
6767
packageTotalLength = Convert.ToInt32(outStream.Length);
6868
_ = writeCompressPipe.Writer.FlushAsync();
6969
}
70-
currentReader.AdvanceTo(packageBodyBuffer.End);
70+
//压缩完成,释放资源
71+
currentReader?.AdvanceTo(packageBodyBuffer.End);
7172

7273
readRet = await writeCompressPipe.Reader.ReadAtLeastAsync(packageTotalLength).ConfigureAwait(false);
7374

@@ -93,6 +94,7 @@ private async Task writePackageBuffer(PipeReader currentReader, QpPackageType pa
9394
encryptBuffer2 = new byte[enc.OutputBlockSize];
9495
}
9596
//开始加密
97+
/*
9698
var toEncryptedBuffer = packageBodyBuffer;
9799
var inLength = 0;
98100
while (toEncryptedBuffer.Length > 0)
@@ -129,15 +131,20 @@ private async Task writePackageBuffer(PipeReader currentReader, QpPackageType pa
129131
_ = encryptPipe.Writer.FlushAsync();
130132
131133
readRet = await encryptPipe.Reader.ReadAtLeastAsync(packageTotalLength).ConfigureAwait(false);
132-
currentReader.AdvanceTo(packageBodyBuffer.End);
134+
*/
135+
var ret = enc.TransformFinalBlock(packageBodyBuffer.ToArray(), 0, (int)packageBodyBuffer.Length);
136+
//加密完成,释放资源
137+
currentReader?.AdvanceTo(packageBodyBuffer.End);
138+
139+
packageBodyBuffer = new ReadOnlySequence<byte>(ret);
140+
packageTotalLength = ret.Length;
133141

134-
packageBodyBuffer = readRet.Buffer;
135142
//包总长度
136143
packageTotalLength += PACKAGE_TOTAL_LENGTH_LENGTH;
137144
//准备包头
138145
writePackageTotalLengthToBuffer(sendHeadBuffer, 0, packageTotalLength);
139146
packageHeadMemory = new Memory<byte>(sendHeadBuffer, 0, PACKAGE_TOTAL_LENGTH_LENGTH);
140-
currentReader = encryptPipe.Reader;
147+
currentReader = null;
141148
}
142149
catch (Exception ex)
143150
{
@@ -185,7 +192,7 @@ await writeTask
185192
LogUtils.LogContent ?
186193
BitConverter.ToString(packageHeadMemory.ToArray().Concat(packageBodyBuffer.ToArray()).ToArray())
187194
: LogUtils.NOT_SHOW_CONTENT_MESSAGE);
188-
currentReader.AdvanceTo(packageBodyBuffer.End);
195+
currentReader?.AdvanceTo(packageBodyBuffer.End);
189196
await stream.FlushAsync().ConfigureAwait(false);
190197
}
191198

0 commit comments

Comments
 (0)