Crunch
A Message Definition Language for Getting Things Right
Loading...
Searching...
No Matches
Crunch::IntegrityPolicy Concept Reference

Concept defining the interface for message integrity policies. More...

#include <crunch_integrity.hpp>

Concept definition

template<typename Policy>
concept Crunch::IntegrityPolicy = requires(std::span<const std::byte> data) {
{
std::bool_constant<(Policy::size(), true)>()
} -> std::same_as<std::true_type>;
{ Policy::size() } -> std::same_as<std::size_t>;
{
std::bool_constant<(Policy::calculate(std::span<const std::byte>{}),
true)>()
} -> std::same_as<std::true_type>;
{
Policy::calculate(data)
} -> std::same_as<std::array<std::byte, Policy::size()>>;
}
Concept defining the interface for message integrity policies.
Definition: crunch_integrity.hpp:24

Detailed Description

Concept defining the interface for message integrity policies.

An IntegrityPolicy calculates a checksum or digest appended to serialized messages. Implementations must provide:

  • size(): Returns the checksum size in bytes. Must be constexpr.
  • calculate(data): Computes the checksum for the given byte span. Must be constexpr.