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 제외.
30 lines
1.1 KiB
C
30 lines
1.1 KiB
C
/* =============================================================================
|
|
* transport.h - 바이트 스트림 전송 추상화 (TLS/평문 공용)
|
|
*
|
|
* httpapi.c 는 이 인터페이스만 사용한다. 실제 구현:
|
|
* tls_mbedtls.c : mbedTLS over LwIP socket (운영, HTTPS)
|
|
* (테스트) : 메모리/루프백 스텁
|
|
* ===========================================================================*/
|
|
#ifndef TRANSPORT_H
|
|
#define TRANSPORT_H
|
|
|
|
#include <stdint.h>
|
|
#include <stddef.h>
|
|
|
|
typedef struct transport_s {
|
|
void *ctx;
|
|
|
|
/* host:port 연결(+ TLS 핸드셰이크). 0 성공, 음수 실패. */
|
|
int (*connect)(void *ctx, const char *host, uint16_t port, uint32_t timeout_ms);
|
|
|
|
/* buf[0..len) 전체 전송. 전송한 바이트 수(>0) 또는 음수 실패. */
|
|
int (*send)(void *ctx, const uint8_t *buf, size_t len, uint32_t timeout_ms);
|
|
|
|
/* 최대 cap 바이트 수신. 읽은 바이트 수(>0), 0=연결 종료, 음수=오류. */
|
|
int (*recv)(void *ctx, uint8_t *buf, size_t cap, uint32_t timeout_ms);
|
|
|
|
/* 연결 종료/정리 */
|
|
void (*close)(void *ctx);
|
|
} transport_t;
|
|
|
|
#endif /* TRANSPORT_H */
|