SecRandom.odin 643 B

12345678910111213141516171819
  1. package Security
  2. import CF "core:sys/darwin/CoreFoundation"
  3. foreign import Security "system:Security.framework"
  4. // A reference to a random number generator.
  5. RandomRef :: distinct rawptr
  6. @(link_prefix="Sec", default_calling_convention="c")
  7. foreign Security {
  8. // Default random ref for /dev/random. Synonym for nil.
  9. @(link_name="kSecRandomDefault") kSecRandomDefault: RandomRef
  10. // Generates an array of cryptographically secure random bytes.
  11. RandomCopyBytes :: proc(rnd: RandomRef = kSecRandomDefault, count: uint, bytes: [^]byte) -> errSec ---
  12. CopyErrorMessageString :: proc(status: errSec, reserved: rawptr = nil) -> CF.String ---
  13. }