// firmware/src/hmac.h #pragma once #include #ifdef NATIVE_TEST #include using HString = std::string; #else #include using HString = String; #endif // Returns lowercase hex-encoded HMAC-SHA256 signature. // Message signed: device_id + ":" + timestamp_str + ":" + hex(sha256(body)) HString hmac_sign(const HString& secret_hex, const HString& device_id, uint32_t timestamp, const HString& body);