/* * This file is part of VoidArchiveTool. * * Copyright (C) 2025 Yanczi * * Void Archive Toolis free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include "DataStruct.h" class EncryptionManager { public: EncryptionManager(); ~EncryptionManager() = default; std::vector encrypt(const std::vector&); std::vector decrypt(const std::vector&); void saveKey(const std::string&, bool); void loadKey(const std::string&); private: std::array key{}; bool keyReady; void generateKeys(); std::string toHex(const unsigned char*, size_t); void saveCppHeadFile(const std::string&); template std::array toArray(const std::vector& vec) { if (vec.size() < N) { throw std::runtime_error("Too small vector to convert to array"); } std::array arr{}; std::memcpy(arr.data(), vec.data(), N); return arr; } };