diff options
| author | Eugen Wissner <belka@caraus.de> | 2018-02-22 05:25:59 +0100 |
|---|---|---|
| committer | Eugen Wissner <belka@caraus.de> | 2018-02-22 05:25:59 +0100 |
| commit | af942116e4acc5424c5e9883eb8173904f0b84df (patch) | |
| tree | b931f7410e89f3f1601c66b46eeaf22f0f02f033 /source | |
| parent | 9876d9245c76056e190a12c9ed471f047e57a37e (diff) | |
| parent | 7ee4af9e79f294033eaa51a2a272606e1630ffcc (diff) | |
| download | tanya-af942116e4acc5424c5e9883eb8173904f0b84df.tar.gz | |
Merge remote-tracking branch 'n8sh/getrandom-syscall'
Fix #18.
Diffstat (limited to 'source')
| -rw-r--r-- | source/tanya/math/random.d | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/source/tanya/math/random.d b/source/tanya/math/random.d index 6978f8d..79399c1 100644 --- a/source/tanya/math/random.d +++ b/source/tanya/math/random.d @@ -117,7 +117,8 @@ else version (Solaris) version (linux) { - extern (C) long syscall(long number, ...) nothrow @system @nogc; + import core.stdc.config : c_long; + extern (C) c_long syscall(c_long number, ...) nothrow @system @nogc; /** * Uses getrandom system call. @@ -158,7 +159,8 @@ version (linux) do { // int getrandom(void *buf, size_t buflen, unsigned int flags); - auto length = syscall(318, output.ptr, output.length, 0); + import mir.linux._asm.unistd : NR_getrandom; + auto length = syscall(NR_getrandom, output.ptr, output.length, 0); Nullable!ubyte ret; if (length >= 0) @@ -169,16 +171,13 @@ version (linux) } } - version (X86_64) + @nogc @system unittest { - private unittest - { - auto entropy = defaultAllocator.make!Entropy(); - ubyte[blockSize] output; - output = entropy.random; + auto entropy = defaultAllocator.make!Entropy(); + ubyte[blockSize] output; + output = entropy.random; - defaultAllocator.dispose(entropy); - } + defaultAllocator.dispose(entropy); } } else version (SecureARC4Random) |
