aboutsummaryrefslogtreecommitdiff
path: root/core/sys/darwin/Security/SecRandom.odin
blob: 0527baca1f8de2b5b713ec22c650e921009d3fc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package Security

import CF "core:sys/darwin/CoreFoundation"

foreign import Security "system:Security.framework"

// A reference to a random number generator.
RandomRef :: distinct rawptr

@(link_prefix="Sec", default_calling_convention="c")
foreign Security {
	// Default random ref for /dev/random. Synonym for nil.
	@(link_name="kSecRandomDefault") kSecRandomDefault: RandomRef

	// Generates an array of cryptographically secure random bytes.
	RandomCopyBytes :: proc(rnd: RandomRef = kSecRandomDefault, count: uint, bytes: [^]byte) -> errSec ---

	CopyErrorMessageString :: proc(status: errSec, reserved: rawptr = nil) -> CF.String ---
}