luat_crypto_air101.c 786 B

12345678910111213141516171819202122232425262728293031323334
  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 tls_crypto_random_bytes_range(unsigned char *out, u32 len, u32 range);
  13. int luat_crypto_trng(char* buff, size_t len) {
  14. #define TMP_LEN (8)
  15. char tmp[TMP_LEN];
  16. tls_crypto_random_init(tls_os_get_time(), CRYPTO_RNG_SWITCH_32);
  17. vTaskDelay(1);
  18. tls_crypto_random_bytes_range(tmp, TMP_LEN, 255);
  19. tls_crypto_random_stop();
  20. extern int random_get_bytes(void *buf, size_t len);
  21. random_get_bytes(buff, len);
  22. for (size_t i = 0; i < len; i++)
  23. {
  24. buff[i] ^= tmp[i % TMP_LEN];
  25. }
  26. return 0;
  27. }