/* platform_compat.c - Platform compatibility layer implementation */ #include "platform_compat.h" #include #include #ifdef _WIN32 #include #include #ifndef STATUS_SUCCESS #define STATUS_SUCCESS ((NTSTATUS)0x00000000L) #endif #else #include #include #endif /* * Generate cryptographically secure random bytes * Returns 0 on success, -1 on error */ int random_bytes(uint8_t *buffer, size_t len) { if (!buffer || len == 0) return -1; #ifdef _WIN32 NTSTATUS status = BCryptGenRandom(NULL, buffer, (ULONG)len, BCRYPT_USE_SYSTEM_PREFERRED_RNG); return (status == STATUS_SUCCESS) ? 0 : -1; #else int fd = open("/dev/urandom", O_RDONLY); if (fd < 0) return -1; ssize_t ret = read(fd, buffer, len); close(fd); return (ret == (ssize_t)len) ? 0 : -1; #endif }