/* * Copyright (c) 2025, mikiubo * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include namespace Crypto::Hash { enum class SHAKEKind { CSHAKE128, CSHAKE256 }; class SHAKE { AK_MAKE_NONCOPYABLE(SHAKE); public: explicit SHAKE(SHAKEKind); ~SHAKE() = default; ErrorOr digest( ReadonlyBytes data, u32 length, Optional customization, Optional function_name) const; private: EVP_MD const* m_md; }; }