mirror of
https://github.com/odin-lang/Odin.git
synced 2025-12-31 02:12:04 +00:00
24 lines
740 B
Odin
24 lines
740 B
Odin
package crypto
|
|
|
|
import win32 "core:sys/windows"
|
|
import "core:os"
|
|
import "core:fmt"
|
|
|
|
_rand_bytes :: proc(dst: []byte) {
|
|
ret := (os.Errno)(win32.BCryptGenRandom(nil, raw_data(dst), u32(len(dst)), win32.BCRYPT_USE_SYSTEM_PREFERRED_RNG))
|
|
if ret != os.ERROR_NONE {
|
|
switch ret {
|
|
case os.ERROR_INVALID_HANDLE:
|
|
// The handle to the first parameter is invalid.
|
|
// This should not happen here, since we explicitly pass nil to it
|
|
panic("crypto: BCryptGenRandom Invalid handle for hAlgorithm")
|
|
case os.ERROR_INVALID_PARAMETER:
|
|
// One of the parameters was invalid
|
|
panic("crypto: BCryptGenRandom Invalid parameter")
|
|
case:
|
|
// Unknown error
|
|
panic(fmt.tprintf("crypto: BCryptGenRandom failed: %d\n", ret))
|
|
}
|
|
}
|
|
}
|