rand_js.odin 410 B

123456789101112131415161718192021222324
  1. package crypto
  2. foreign import "odin_env"
  3. foreign odin_env {
  4. @(link_name = "rand_bytes")
  5. env_rand_bytes :: proc "contextless" (buf: []byte) ---
  6. }
  7. HAS_RAND_BYTES :: true
  8. @(private)
  9. _MAX_PER_CALL_BYTES :: 65536 // 64kiB
  10. @(private)
  11. _rand_bytes :: proc(dst: []byte) {
  12. dst := dst
  13. for len(dst) > 0 {
  14. to_read := min(len(dst), _MAX_PER_CALL_BYTES)
  15. env_rand_bytes(dst[:to_read])
  16. dst = dst[to_read:]
  17. }
  18. }