aboutsummaryrefslogtreecommitdiff
path: root/core/crypto/rand_js.odin
blob: 72093810e802689d28ba5efb18c5ab13a484154c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package crypto

foreign import "odin_env"
foreign odin_env {
	@(link_name = "rand_bytes")
	env_rand_bytes :: proc "contextless" (buf: []byte) ---
}

HAS_RAND_BYTES :: true

@(private)
_MAX_PER_CALL_BYTES :: 65536 // 64kiB

@(private)
_rand_bytes :: proc(dst: []byte) {
	dst := dst

	for len(dst) > 0 {
		to_read := min(len(dst), _MAX_PER_CALL_BYTES)
		env_rand_bytes(dst[:to_read])

		dst = dst[to_read:]
	}
}