luat_crypto_air101.c 710 B

1234567891011121314151617181920212223242526272829303132
  1. #include "string.h"
  2. #include "wm_include.h"
  3. #include "wm_crypto_hard.h"
  4. #include "aes.h"
  5. #include "wm_osal.h"
  6. #include "luat_base.h"
  7. #include "luat_crypto.h"
  8. #define LUAT_LOG_TAG "crypto"
  9. #include "luat_log.h"
  10. #include "FreeRTOS.h"
  11. #include "task.h"
  12. int luat_crypto_trng(char* buff, size_t len) {
  13. #define TMP_LEN (8)
  14. char tmp[TMP_LEN];
  15. tls_crypto_random_init(tls_os_get_time(), CRYPTO_RNG_SWITCH_32);
  16. vTaskDelay(1);
  17. tls_crypto_random_bytes_range(tmp, TMP_LEN, 255);
  18. tls_crypto_random_stop();
  19. extern int random_get_bytes(void *buf, size_t len);
  20. random_get_bytes(buff, len);
  21. for (size_t i = 0; i < len; i++)
  22. {
  23. buff[i] ^= tmp[i % TMP_LEN];
  24. }
  25. return 0;
  26. }