#pragma once // Objects for encrypting/decrypting // // created on 2023-04-04 #include "data.h" enum encryptor { ENCRYPT_NONE = 0, ENCRYPT_BASE64, ENCRYPT_AES, ENCRYPT_ZIP, }; enum encrypt_cmd { ENCRYPT_CMD_NONE = 0, ENCRYPT_CMD_XOR_PID, // cmd ^= pack_id ENCRYPT_CMD_ADD_PID, // cmd += pack_id ENCRYPT_CMD_SUB_PID, // cmd -= pack_id }; // Function: encrypting & decrypting packet // // Parameters: packet - pointer to the base packet // // data - cipher/plain data // // size - [in]: bytes of source 'data'; // // cmd_type - member 'cmd' encrypting method // // type - payload encrypting method // // enc_data - encrypting data for payload encrypting method // // Return: 'cmd' returned on origin packet, and returning value is for payload only. nullptr on failure // // NOTE: nullptr also returned if data was nullptr or size was ZERO // dyn_mem_ptr packet_encrypt(dyn_mem_ptr packet, uint32_t cmd_type = ENCRYPT_CMD_NONE, uint32_t type = ENCRYPT_NONE, uint8_t enc_data = 0); dyn_mem_ptr packet_decrypt(dyn_mem_ptr packet);