getentropy.c 476 B

123456789101112131415161718192021222324252627282930
  1. /*
  2. * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. */
  6. #include <sys/random.h>
  7. #include <errno.h>
  8. int getentropy(void *buffer, size_t length)
  9. {
  10. ssize_t ret;
  11. if (buffer == NULL) {
  12. errno = EFAULT;
  13. return -1;
  14. }
  15. if (length > 256) {
  16. errno = EIO;
  17. return -1;
  18. }
  19. ret = getrandom(buffer, length, 0);
  20. if (ret == -1) {
  21. return -1;
  22. }
  23. return 0;
  24. }