/* =============================================================================
 * sig.h - raw-body 서명 (STM32 마이그레이션 R1, HMAC-SHA256)
 *
 * 서버 규약(php/config.php:verify_signature_raw):
 *   X-Signature = lowercase_hex( HMAC-SHA256( key=API_KEY, msg=raw_body_bytes ) )
 *
 * 클라이언트는 전송할 본문 바이트 그대로를 서명만 하면 된다. JSON 키 정렬·
 * 부동소수 포맷·슬래시 이스케이프를 재현할 필요가 없다. (키 접두 SHA256 이 아닌
 * HMAC 을 사용해 길이확장 공격에 견딘다.)
 * ===========================================================================*/
#ifndef SIG_H
#define SIG_H

#include <stddef.h>

#define SIG_HEX_LEN 64           /* SHA-256 hex 길이 (NUL 제외) */
#define SIG_HEX_BUFSZ (SIG_HEX_LEN + 1)

/* out_hex 에 sha256(key || body) 의 소문자 hex(+NUL)를 기록한다.
 * out_hex 는 최소 SIG_HEX_BUFSZ 바이트.
 * key 는 NUL 종료 문자열, body 는 임의 바이트열(body_len 길이). */
void sig_raw_body(const char *key, const char *body, size_t body_len,
                  char out_hex[SIG_HEX_BUFSZ]);

#endif /* SIG_H */
