From 84844cdb66b9f4c9ce4f6f7ef50d4b0858f89b1b Mon Sep 17 00:00:00 2001 From: Savely Krendelhoff Date: Fri, 22 Aug 2025 18:06:52 +0700 Subject: [PATCH] Add challenge verifier --- internal/pow/verifier.go | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 internal/pow/verifier.go diff --git a/internal/pow/verifier.go b/internal/pow/verifier.go new file mode 100644 index 0000000..d9a2018 --- /dev/null +++ b/internal/pow/verifier.go @@ -0,0 +1,28 @@ +package pow + +// Verifier handles validation of PoW challenges +type Verifier struct { + config *Config +} + +// NewVerifier creates a new challenge verifier +func NewVerifier(config *Config) *Verifier { + return &Verifier{ + config: config, + } +} + +// VerifyChallenge validates challenge authenticity and expiration +func (v *Verifier) VerifyChallenge(challenge *Challenge) error { + // Check expiration first (cheap operation) + if challenge.IsExpired(v.config.ChallengeTTL) { + return ErrExpiredChallenge + } + + // Check HMAC signature (expensive operation) + if err := challenge.VerifyHMAC(v.config.HMACSecret); err != nil { + return err + } + + return nil +}