// Copyright (c) 2026 Juhapekka Piiroinen // All Rights Reserved. // AmoosedWeb project: https://amoosed.com #pragma once #include "AmoosedWeb/Reader.hpp" namespace amoosed { // OpenSSL implementation of the crypto host boundary for non-Windows builds. // It does not perform network or filesystem I/O. class OpenSslCryptoHost final : public CryptoHost { public: std::unique_ptr new_sha256() override; bool random_bytes(std::uint8_t* output, std::size_t length) override; bool aes256_ctr(const std::array& key, const std::array& counter, const std::vector& input, std::vector& output) override; bool aes256_gcm_open(const std::array& key, const std::array& nonce, const std::vector& aad, const std::vector& ciphertext_and_tag, std::vector& output) override; GcmOpenResult aes256_gcm_open_result(const std::array& key, const std::array& nonce, const std::vector& aad, const std::vector& ciphertext_and_tag, std::vector& output) override; bool aes256_gcm_seal(const std::array& key, const std::array& nonce, const std::vector& aad, const std::vector& plaintext, std::vector& ciphertext_and_tag) override; }; }