Replace Math.random with crypto.getRandomValues for _system_number

This commit is contained in:
Damian Tarnawski
2023-10-27 12:06:35 +02:00
parent 8b2f62000a
commit 49da19e013
3 changed files with 6 additions and 5 deletions

View File

@@ -6,7 +6,7 @@ foreign odin_env {
env_rand_bytes :: proc "contextless" (buf: []byte) ---
}
_MAX_PER_CALL_BYTES :: 65536
_MAX_PER_CALL_BYTES :: 65536 // 64kiB
_rand_bytes :: proc(dst: []byte) {
dst := dst

View File

@@ -2,11 +2,13 @@ package rand
foreign import "odin_env"
foreign odin_env {
@(link_name = "rand")
rand_f64 :: proc "contextless" () -> f64 ---
@(link_name = "rand_bytes")
env_rand_bytes :: proc "contextless" (buf: []byte) ---
}
@(require_results)
_system_random :: proc() -> u64 {
return u64(rand_f64() * 0x1fffffffffffff)
buf: [8]u8
env_rand_bytes(buf[:])
return transmute(u64)buf
}

View File

@@ -1350,7 +1350,6 @@ function odinSetupDefaultImports(wasmMemoryInterface, consoleElement) {
exp: Math.exp,
ldexp: (x, exp) => x * Math.pow(2, exp),
rand: Math.random,
rand_bytes: (ptr, len) => {
const view = new Uint8Array(wasmMemoryInterface.memory.buffer, ptr, len)
crypto.getRandomValues(view)