authorgravatar for 124872+jedisct1@users.noreply.github.comFrank Denis <124872+jedisct1@users.noreply.github.com> 2020-10-18 16:28:11+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2020-10-18 18:24:36+02:00
log6ddb05d996ee23af585ad22c8cdb447d4550f2ea
tree9b6a21a6a761be32b5eaf34cac6a18a0e9c96f37
parentb28992de7121802f3074d214d015d8bed66b624e

Darwin has arc4random(), too


2 files changed, 10 insertions(+), 8 deletions(-)

lib/std/c/darwin.zig+2
......@@ -171,3 +171,5 @@ pub const pthread_attr_t = extern struct {
171171 __sig: c_long,
172172 __opaque: [56]u8,
173173};
174
175pub extern "c" fn arc4random_buf(buf: [*]u8, len: usize) void;
lib/std/os.zig+8-8
......@@ -164,17 +164,17 @@ pub fn getrandom(buffer: []u8) GetRandomError!void {
164164 }
165165 return;
166166 }
167 if (builtin.os.tag == .netbsd or builtin.os.tag == .openbsd) {
168 system.arc4random_buf(buffer.ptr, buffer.len);
169 return;
170 }
171 if (builtin.os.tag == .wasi) {
172 switch (wasi.random_get(buffer.ptr, buffer.len)) {
167 switch (builtin.os.tag) {
168 .netbsd, .openbsd, .macos, .ios, .tvos, .watchos => {
169 system.arc4random_buf(buffer.ptr, buffer.len);
170 return;
171 },
172 .wasi => switch (wasi.random_get(buffer.ptr, buffer.len)) {
173173 0 => return,
174174 else => |err| return unexpectedErrno(err),
175 }
175 },
176 else => return getRandomBytesDevURandom(buffer),
176177 }
177 return getRandomBytesDevURandom(buffer);
178178}
179179
180180fn getRandomBytesDevURandom(buf: []u8) !void {