Commitbc3bc393Recorded29 Mar 2026Repositorysigil-lemonsqueezy

Use timing-safe-equal? from (sigil crypto) instead of local copy

Message

Remove local timing-safe-equal? definition from webhook.sgl. The function is now provided by (sigil crypto), which is already imported by this module.

Changed
 src/lemonsqueezy/webhook.sgl | 19 -------------------
 1 file changed, 19 deletions(-)
Diff
src/lemonsqueezy/webhook.sglmodified
@@ -122,25 +122,6 @@
122
(let ((computed (hmac-sha256 secret raw-body)))
123
(timing-safe-equal? computed signature)))
124
−125
;;; Timing-safe string comparison to prevent timing attacks.
−126
;;; Compares every character regardless of mismatches.
−127
;;; Length difference is folded into the result without early return
−128
;;; to avoid leaking length information via timing.
−129
(define (timing-safe-equal? a b)
−130
(let ((len-a (string-length a))
−131
(len-b (string-length b)))
−132
(let ((len (if (> len-a len-b) len-a len-b))
−133
(len-diff (if (= len-a len-b) 0 1)))
−134
(let loop ((i 0) (diff len-diff))
−135
(if (>= i len)
−136
(= diff 0)
−137
(loop (+ i 1)
−138
(+ diff
−139
(if (and (< i len-a) (< i len-b)
−140
(char=? (string-ref a i)
−141
(string-ref b i)))
−142
0 1))))))))
−143
125
;; ---------------------------------------------------------------
126
;; API functions
127
;; ---------------------------------------------------------------