Darwin has arc4random(), too
This commit is contained in:
parent
b28992de71
commit
6ddb05d996
@ -171,3 +171,5 @@ pub const pthread_attr_t = extern struct {
|
||||
__sig: c_long,
|
||||
__opaque: [56]u8,
|
||||
};
|
||||
|
||||
pub extern "c" fn arc4random_buf(buf: [*]u8, len: usize) void;
|
||||
|
@ -164,17 +164,17 @@ pub fn getrandom(buffer: []u8) GetRandomError!void {
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (builtin.os.tag == .netbsd or builtin.os.tag == .openbsd) {
|
||||
system.arc4random_buf(buffer.ptr, buffer.len);
|
||||
return;
|
||||
}
|
||||
if (builtin.os.tag == .wasi) {
|
||||
switch (wasi.random_get(buffer.ptr, buffer.len)) {
|
||||
switch (builtin.os.tag) {
|
||||
.netbsd, .openbsd, .macos, .ios, .tvos, .watchos => {
|
||||
system.arc4random_buf(buffer.ptr, buffer.len);
|
||||
return;
|
||||
},
|
||||
.wasi => switch (wasi.random_get(buffer.ptr, buffer.len)) {
|
||||
0 => return,
|
||||
else => |err| return unexpectedErrno(err),
|
||||
}
|
||||
},
|
||||
else => return getRandomBytesDevURandom(buffer),
|
||||
}
|
||||
return getRandomBytesDevURandom(buffer);
|
||||
}
|
||||
|
||||
fn getRandomBytesDevURandom(buf: []u8) !void {
|
||||
|
Loading…
x
Reference in New Issue
Block a user