11std::vector<std::byte> applyIce(std::span<const std::byte> data, std::string_view code,
bool encrypt) {
12 if (code.size() != IceKey::blockSize()) {
17 ice.set(
reinterpret_cast<const unsigned char*
>(code.data()));
19 const auto* in =
reinterpret_cast<const unsigned char*
>(data.data());
21 std::vector<std::byte> outVec(data.size());
22 auto* out =
reinterpret_cast<unsigned char*
>(outVec.data());
24 auto bytesLeft = data.size();
25 while (bytesLeft >= IceKey::blockSize()) {
31 bytesLeft -= IceKey::blockSize();
32 in += IceKey::blockSize();
33 out += IceKey::blockSize();
36 std::memcpy(out, in, bytesLeft);
44std::vector<std::byte>
VICE::encrypt(std::span<const std::byte> data, std::string_view code) {
45 return ::applyIce(data, code,
true);
48std::vector<std::byte>
VICE::decrypt(std::span<const std::byte> data, std::string_view code) {
49 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)