1234567891011121314151617181920212223242526272829303132 |
- using PCC.App.Networking;
- using System.Security.Cryptography;
- namespace PCC.App.Security;
- public class EncryptedTcpPeer(RSA senderPri, RSA destPub, TcpPeer peer)
- {
- public async Task SendBlockAsync(ReadOnlyMemory<byte> block)
- {
- var eb = RsaUtility.EncryptAndSignature(destPub, block.Span, senderPri);
- await peer.SendBlockAsync(eb);
- }
- public async Task SendBlockAsync(byte[] block)
- {
- var eb = RsaUtility.EncryptAndSignature(destPub, block, senderPri);
- await peer.SendBlockAsync(eb);
- }
- public async Task<byte[]?> RxBlockAsync(CancellationToken? timeOut = null)
- {
- var rx = await peer.RxBlockAsync(timeOut);
- if (rx == null) return null;
- var db = RsaUtility.DecryptAndVerifySignature(senderPri, rx, destPub);
- return db;
- }
- public void Disconnect()
- {
- peer.Disconnect();
- }
- }
|