The C-side wrapper (flare/tls/ffi/openssl_wrapper.cpp) exports
flare_hmac_sha256 and flare_hmac_sha256_verify; the latter
uses CRYPTO_memcmp so the verify path is constant-time. Both
are reached through an OwnedDLHandle against
libflare_tls.so (resolved by the same helper TLS uses).
This module is the only path through which flare touches HMAC; the
flare.http.session layer composes hmac_sha256 +
base64url_* into SignedCookie / Session /
SessionStore.
Base64 URL-safe (RFC 4648 paragraph 5)
base64url_encode produces no padding; base64url_decode
accepts both padded and unpadded inputs. The alphabet is
A-Z a-z 0-9 - _. Cookie bodies must avoid ; / , / =;
the no-padding URL-safe variant is the canonical choice (matches
JSON Web Signature compact serialisation).