5export module crypto.sha256.core;
6import zxfoundation.base.types;
12namespace crypto::sha256 {
15 constexpr auto SHA256_DIGEST_SIZE = 32U;
28 auto sha256_init(sha256_ctx& ctx) ->
void;
34 auto sha256_update(sha256_ctx& ctx, std::span<
const u8> data)
35 -> std::expected<
void, lib::kernel_error>;
41 auto sha256_final(sha256_ctx& ctx, std::span<u8, SHA256_DIGEST_SIZE> out)
42 -> std::expected<
void, lib::kernel_error>;
45 [[nodiscard]]
auto sha256_hash(std::span<
const u8> data, std::span<u8, SHA256_DIGEST_SIZE> out)
46 -> std::expected<
void, lib::kernel_error>;
48 [[nodiscard]]
auto sha256_verify(std::span<
const u8> data,
49 std::span<
const u8, SHA256_DIGEST_SIZE> expected)
50 -> std::expected<
void, lib::kernel_error>;