aboutsummaryrefslogtreecommitdiff
path: root/lib/std/crypto.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-12-18 23:57:46 -0500
committerGitHub <noreply@github.com>2020-12-18 23:57:46 -0500
commit506af7e52e0985b410ea089bf5fa3247ab2377cb (patch)
tree2ec26d70f41a1382b736b606ebfa094ace62573e /lib/std/crypto.zig
parentce65533985caa9e2da567948e36d7d4ba0185005 (diff)
parentf416535768fc30195cad6cd481f73fd1e80082aa (diff)
downloadzig-506af7e52e0985b410ea089bf5fa3247ab2377cb.tar.gz
zig-506af7e52e0985b410ea089bf5fa3247ab2377cb.zip
Merge pull request #7482 from ziglang/tlcsprng
std: introduce a thread-local CSPRNG for general use
Diffstat (limited to 'lib/std/crypto.zig')
-rw-r--r--lib/std/crypto.zig11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/std/crypto.zig b/lib/std/crypto.zig
index 6eb934473f..e3581cde96 100644
--- a/lib/std/crypto.zig
+++ b/lib/std/crypto.zig
@@ -134,8 +134,10 @@ pub const nacl = struct {
pub const utils = @import("crypto/utils.zig");
+/// This is a thread-local, cryptographically secure pseudo random number generator.
+pub const random = &@import("crypto/tlcsprng.zig").interface;
+
const std = @import("std.zig");
-pub const randomBytes = std.os.getrandom;
test "crypto" {
inline for (std.meta.declarations(@This())) |decl| {
@@ -178,6 +180,13 @@ test "crypto" {
_ = @import("crypto/25519/ristretto255.zig");
}
+test "CSPRNG" {
+ const a = random.int(u64);
+ const b = random.int(u64);
+ const c = random.int(u64);
+ std.testing.expect(a ^ b ^ c != 0);
+}
+
test "issue #4532: no index out of bounds" {
const types = [_]type{
hash.Md5,