namespace Svrnty.CQRS.Altcha.Abstractions; /// /// Server-issued Altcha challenge. Shape matches what the /// altcha widget v3 /// expects from its challengeurl. /// public sealed class AltchaChallenge { /// Hashing algorithm name (e.g. SHA-256). public required string Algorithm { get; init; } /// Hex-encoded hash the client must find a preimage for. public required string Challenge { get; init; } /// Hex-encoded salt (embeds an expiry timestamp). public required string Salt { get; init; } /// /// HMAC-SHA256 of algorithm|challenge|salt|maxnumber using the /// server's signing secret. Lets the verify step trust the issued /// challenge without keeping per-challenge state. /// public required string Signature { get; init; } /// Upper bound of the PoW search space (equals the requested complexity). public required uint MaxNumber { get; init; } }