15bool crypto::decryptAES_CFB(std::span<std::byte> buffer, std::span<const std::byte> key, std::span<const std::byte> iv) {
20 const std::unique_ptr<symmetric_CFB, void(*)(symmetric_CFB*)> cfb{
new symmetric_CFB, [](symmetric_CFB* c) { cfb_done(c);
delete c; }};
21 if (cfb_start(
AES_INDEX,
reinterpret_cast<const unsigned char*
>(iv.data()),
reinterpret_cast<const unsigned char*
>(key.data()),
static_cast<int>(key.size()), 0, cfb.get()) != CRYPT_OK) {
24 const unsigned long bufferLen = buffer.size();
25 return cfb_decrypt(
reinterpret_cast<const unsigned char*
>(buffer.data()),
reinterpret_cast<unsigned char*
>(buffer.data()), bufferLen, cfb.get()) == CRYPT_OK;
28bool crypto::encryptAES_CFB(std::span<std::byte> buffer, std::span<const std::byte> key, std::span<const std::byte> iv) {
33 const std::unique_ptr<symmetric_CFB, void(*)(symmetric_CFB*)> cfb{
new symmetric_CFB, [](symmetric_CFB* c) { cfb_done(c);
delete c; }};
34 if (cfb_start(
AES_INDEX,
reinterpret_cast<const unsigned char*
>(iv.data()),
reinterpret_cast<const unsigned char*
>(key.data()),
static_cast<int>(key.size()), 0, cfb.get()) != CRYPT_OK) {
37 const unsigned long bufferLen = buffer.size();
38 return cfb_encrypt(
reinterpret_cast<const unsigned char*
>(buffer.data()),
reinterpret_cast<unsigned char*
>(buffer.data()), bufferLen, cfb.get()) == CRYPT_OK;