#ifndef SHANNONCONNECTION_H #define SHANNONCONNECTION_H #include #include #include #include #include #include "Packet.h" #include "PlainConnection.h" #include "Shannon.h" #include #include "Utils.h" #include "Logger.h" #define MAC_SIZE 4 namespace cspot { class ShannonConnection { private: std::unique_ptr sendCipher; std::unique_ptr recvCipher; uint32_t sendNonce = 0; uint32_t recvNonce = 0; std::vector cipherPacket(uint8_t cmd, std::vector& data); std::mutex writeMutex; std::mutex readMutex; public: ShannonConnection(); ~ShannonConnection(); void wrapConnection(std::shared_ptr conn, std::vector& sendKey, std::vector& recvKey); void sendPacket(uint8_t cmd, std::vector& data); std::shared_ptr conn; Packet recvPacket(); }; } // namespace cspot #endif