11std::vector<std::byte> applyIce(std::span<const std::byte> data, std::string_view code,
bool encrypt) {
13 ice.set(
reinterpret_cast<const unsigned char*
>(code.data()));
15 const auto* in =
reinterpret_cast<const unsigned char*
>(data.data());
17 std::vector<std::byte> outVec(data.size());
18 auto* out =
reinterpret_cast<unsigned char*
>(outVec.data());
20 auto bytesLeft = data.size();
21 while (bytesLeft >= IceKey::blockSize()) {
27 bytesLeft -= IceKey::blockSize();
28 in += IceKey::blockSize();
29 out += IceKey::blockSize();
32 std::memcpy(out, in, bytesLeft);
40std::vector<std::byte>
VICE::encrypt(std::span<const std::byte> data, std::string_view code) {
41 return ::applyIce(data, code,
true);
44std::vector<std::byte>
VICE::decrypt(std::span<const std::byte> data, std::string_view code) {
45 return ::applyIce(data, code,
false);
std::vector< std::byte > decrypt(std::span< const std::byte > data, std::string_view code=KnownCodes::DEFAULT)
std::vector< std::byte > encrypt(std::span< const std::byte > data, std::string_view code=KnownCodes::DEFAULT)