POSA_LEAKSMS/firmware/common/sha256_backend.h
유창욱 90f121e14c chore: import codebase with security hardening
SHT30 온습도 모니터링 시스템 전체 소스(서버 PHP, STM32 펌웨어, SQL, 테스트).
전체 코드리뷰에서 도출된 보안 하드닝 10건 반영:
- 요청 서명 HMAC-SHA256 전환(펌웨어 sig.c/서버 config.php/호스트 패리티 동시)
- 재전송 방어 + 기본 API_KEY fail-closed + 디바이스 문자열 정제(api/sensor_data.php)
- 오프라인 SMS 중복 발송 경합 제거(cron_heartbeat.php, 원자적 선점)
- CSV 수식 주입 방지(monthly_report.php), 감사로그 회전 락(retention_cleanup.php)
- 브루트포스 카운터 원자화(login.php), 예시 TOTP 비밀키 무효화, 마이그레이션 멱등화

_backup/(하드코딩 실 비밀값 포함)·config.local.php·런타임 상태는 .gitignore 제외.
2026-06-20 09:37:40 +09:00

30 lines
1.1 KiB
C

/* =============================================================================
* sha256_backend.h - SHA-256 추상 인터페이스
*
* 서명(sig.c)은 이 인터페이스만 사용한다. 기본 구현은 sha256_sw.c (공개 도메인,
* 자급식)이며, 원하면 mbedTLS 백엔드로 교체할 수 있다(둘 다 동일 다이제스트).
* 자급식 구현 덕분에 TLS 스택 없이도 호스트/ARM 컴파일 게이트에서 검증 가능.
* ===========================================================================*/
#ifndef SHA256_BACKEND_H
#define SHA256_BACKEND_H
#include <stdint.h>
#include <stddef.h>
#define SHA256_DIGEST_LEN 32
typedef struct {
uint32_t state[8];
uint64_t bitlen;
uint8_t buffer[64];
uint32_t buflen;
} sha256_ctx;
void sha256_init(sha256_ctx *ctx);
void sha256_update(sha256_ctx *ctx, const uint8_t *data, size_t len);
void sha256_final(sha256_ctx *ctx, uint8_t out[SHA256_DIGEST_LEN]);
/* 원샷 헬퍼: out = SHA256(data[0..len)) */
void sha256(const uint8_t *data, size_t len, uint8_t out[SHA256_DIGEST_LEN]);
#endif /* SHA256_BACKEND_H */