20
20
# # | :--- | ----: |
21
21
# # | Windows | `BCryptGenRandom`_ |
22
22
# # | Linux | `getrandom`_ |
23
- # # | MacOSX | `getentropy`_ |
23
+ # # | MacOSX | `SecRandomCopyBytes`_ |
24
24
# # | iOS | `SecRandomCopyBytes`_ |
25
25
# # | OpenBSD | `getentropy openbsd`_ |
26
26
# # | FreeBSD | `getrandom freebsd`_ |
@@ -66,7 +66,7 @@ when defined(nimPreviewSlimSystem):
66
66
import std/ assertions
67
67
68
68
const
69
- batchImplOS = defined (freebsd) or defined (openbsd) or defined (zephyr) or ( defined (macosx) and not defined (ios))
69
+ batchImplOS = defined (freebsd) or defined (openbsd) or defined (zephyr)
70
70
batchSize {.used .} = 256
71
71
72
72
when batchImplOS:
@@ -231,8 +231,8 @@ elif defined(freebsd):
231
231
proc getRandomImpl (p: pointer , size: int ): int {.inline .} =
232
232
result = getrandom (p, csize_t (size), 0 )
233
233
234
- elif defined (ios):
235
- {.passL : " -framework Security" .}
234
+ elif defined (ios) or defined (macosx) :
235
+ {.passl : " -framework Security" .}
236
236
237
237
const errSecSuccess = 0 # # No error.
238
238
@@ -254,19 +254,6 @@ elif defined(ios):
254
254
255
255
result = secRandomCopyBytes (nil , csize_t (size), addr dest[0 ])
256
256
257
- elif defined (macosx):
258
- const sysrandomHeader = """ #include <Availability.h>
259
- #include <sys/random.h>
260
- """
261
-
262
- proc getentropy (p: pointer , size: csize_t ): cint {.importc : " getentropy" , header : sysrandomHeader.}
263
- # getentropy() fills a buffer with random data, which can be used as input
264
- # for process-context pseudorandom generators like arc4random(3).
265
- # The maximum buffer size permitted is 256 bytes.
266
-
267
- proc getRandomImpl (p: pointer , size: int ): int {.inline .} =
268
- result = getentropy (p, csize_t (size)).int
269
-
270
257
else :
271
258
template urandomImpl (result: var int , dest: var openArray [byte ]) =
272
259
let size = dest.len
0 commit comments