/* * LITLS -- CSPRNG via Linux getrandom(2) + secure utilities */ #include "litls.h" #include #include int litls_random_bytes(uint8_t *buf, size_t len) { while (len > 0) { ssize_t n = getrandom(buf, len, 0); if (n < 0) return -1; buf += n; len -= (size_t)n; } return 0; } void litls_secure_zero(void *buf, size_t len) { explicit_bzero(buf, len); } int litls_secure_memcmp(const uint8_t *a, const uint8_t *b, size_t len) { volatile uint8_t diff = 0; for (size_t i = 0; i < len; i++) diff |= a[i] ^ b[i]; return (int)diff; }