Annotate

util-src/crand.c @ 8446:a72898dde1a0

util.crand: Remove unneeded cast
author Kim Alvefur <zash@zash.se>
date Sun, 03 Dec 2017 14:14:35 +0100
parent 8445:2d3a3d12ec87
child 8447:200f4f1b7833
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7187
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 /* Prosody IM
7829
1fb477d19fdd util.crand: Update copyright header
Kim Alvefur <zash@zash.se>
parents: 7826
diff changeset
2 -- Copyright (C) 2008-2017 Matthew Wild
1fb477d19fdd util.crand: Update copyright header
Kim Alvefur <zash@zash.se>
parents: 7826
diff changeset
3 -- Copyright (C) 2008-2017 Waqas Hussain
1fb477d19fdd util.crand: Update copyright header
Kim Alvefur <zash@zash.se>
parents: 7826
diff changeset
4 -- Copyright (C) 2016-2017 Kim Alvefur
7187
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 --
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 -- This project is MIT/X11 licensed. Please see the
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 -- COPYING file in the source package for more information.
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 --
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9 */
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 /*
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12 * crand.c
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 * C PRNG interface
7830
b9910a507250 util.crand: Add comment describing purpose of module
Kim Alvefur <zash@zash.se>
parents: 7829
diff changeset
14 *
b9910a507250 util.crand: Add comment describing purpose of module
Kim Alvefur <zash@zash.se>
parents: 7829
diff changeset
15 * The purpose of this module is to provide access to a PRNG in
b9910a507250 util.crand: Add comment describing purpose of module
Kim Alvefur <zash@zash.se>
parents: 7829
diff changeset
16 * environments without /dev/urandom
b9910a507250 util.crand: Add comment describing purpose of module
Kim Alvefur <zash@zash.se>
parents: 7829
diff changeset
17 *
b9910a507250 util.crand: Add comment describing purpose of module
Kim Alvefur <zash@zash.se>
parents: 7829
diff changeset
18 * Caution! This has not been extensively tested.
b9910a507250 util.crand: Add comment describing purpose of module
Kim Alvefur <zash@zash.se>
parents: 7829
diff changeset
19 *
7187
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 */
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21
7931
b619b85e01aa util.pposix, configure: Move _GNU_SOURCE macro into source files
Kim Alvefur <zash@zash.se>
parents: 7918
diff changeset
22 #define _DEFAULT_SOURCE
b619b85e01aa util.pposix, configure: Move _GNU_SOURCE macro into source files
Kim Alvefur <zash@zash.se>
parents: 7918
diff changeset
23
8422
6eecf82ccd8e util.crand: Always include stdlib to be sure __GLIBC_PREREQ is defined
Kim Alvefur <zash@zash.se>
parents: 8127
diff changeset
24 #include <stdlib.h>
8423
65c82a7d0537 util.crand: Reorder includes so system ones are first
Kim Alvefur <zash@zash.se>
parents: 8422
diff changeset
25 #include <string.h>
65c82a7d0537 util.crand: Reorder includes so system ones are first
Kim Alvefur <zash@zash.se>
parents: 8422
diff changeset
26 #include <errno.h>
8422
6eecf82ccd8e util.crand: Always include stdlib to be sure __GLIBC_PREREQ is defined
Kim Alvefur <zash@zash.se>
parents: 8127
diff changeset
27
7187
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 #include "lualib.h"
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 #include "lauxlib.h"
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 #if defined(WITH_GETRANDOM)
7934
485b9e66fedf util.crand: Only include getrandom shiv with glibc older than 2.25
Kim Alvefur <zash@zash.se>
parents: 7933
diff changeset
32
8127
3e443d6791e6 util.crand: Build with musl/non-glibc (can't have undefined argument-taking macros?)
Kim Alvefur <zash@zash.se>
parents: 7969
diff changeset
33 #ifndef __GLIBC_PREREQ
8425
91c220f43826 util.crand: Add comments about defines
Kim Alvefur <zash@zash.se>
parents: 8424
diff changeset
34 /* Not compiled with glibc at all */
8127
3e443d6791e6 util.crand: Build with musl/non-glibc (can't have undefined argument-taking macros?)
Kim Alvefur <zash@zash.se>
parents: 7969
diff changeset
35 #define __GLIBC_PREREQ(a,b) 0
3e443d6791e6 util.crand: Build with musl/non-glibc (can't have undefined argument-taking macros?)
Kim Alvefur <zash@zash.se>
parents: 7969
diff changeset
36 #endif
3e443d6791e6 util.crand: Build with musl/non-glibc (can't have undefined argument-taking macros?)
Kim Alvefur <zash@zash.se>
parents: 7969
diff changeset
37
7934
485b9e66fedf util.crand: Only include getrandom shiv with glibc older than 2.25
Kim Alvefur <zash@zash.se>
parents: 7933
diff changeset
38 #if ! __GLIBC_PREREQ(2,25)
8425
91c220f43826 util.crand: Add comments about defines
Kim Alvefur <zash@zash.se>
parents: 8424
diff changeset
39 /* Not compiled with a glibc that provides getrandom() */
7187
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
40 #include <unistd.h>
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
41 #include <sys/syscall.h>
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
42
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
43 #ifndef SYS_getrandom
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
44 #error getrandom() requires Linux 3.17 or later
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
45 #endif
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
46
7934
485b9e66fedf util.crand: Only include getrandom shiv with glibc older than 2.25
Kim Alvefur <zash@zash.se>
parents: 7933
diff changeset
47 /* This wasn't present before glibc 2.25 */
7933
c91ec7689424 util.crand: Change argumen names to match some man page
Kim Alvefur <zash@zash.se>
parents: 7932
diff changeset
48 int getrandom(void *buf, size_t buflen, unsigned int flags) {
c91ec7689424 util.crand: Change argumen names to match some man page
Kim Alvefur <zash@zash.se>
parents: 7932
diff changeset
49 return syscall(SYS_getrandom, buf, buflen, flags);
7187
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
50 }
7934
485b9e66fedf util.crand: Only include getrandom shiv with glibc older than 2.25
Kim Alvefur <zash@zash.se>
parents: 7933
diff changeset
51 #else
485b9e66fedf util.crand: Only include getrandom shiv with glibc older than 2.25
Kim Alvefur <zash@zash.se>
parents: 7933
diff changeset
52 #include <sys/random.h>
485b9e66fedf util.crand: Only include getrandom shiv with glibc older than 2.25
Kim Alvefur <zash@zash.se>
parents: 7933
diff changeset
53 #endif
7187
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
54
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
55 #elif defined(WITH_OPENSSL)
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
56 #include <openssl/rand.h>
8422
6eecf82ccd8e util.crand: Always include stdlib to be sure __GLIBC_PREREQ is defined
Kim Alvefur <zash@zash.se>
parents: 8127
diff changeset
57 #elif ! defined(WITH_ARC4RANDOM)
7187
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
58 #error util.crand compiled without a random source
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
59 #endif
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
60
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
61 int Lrandom(lua_State *L) {
8446
a72898dde1a0 util.crand: Remove unneeded cast
Kim Alvefur <zash@zash.se>
parents: 8445
diff changeset
62 const size_t len = luaL_checkinteger(L, 1);
7824
56552733742e util.crand: Let Lua handle allocation, freeing and error handling for buffer
Kim Alvefur <zash@zash.se>
parents: 7823
diff changeset
63 void *buf = lua_newuserdata(L, len);
7187
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
64
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
65 #if defined(WITH_GETRANDOM)
7932
6c5e4f24b51e util.crand: Move comment block
Kim Alvefur <zash@zash.se>
parents: 7931
diff changeset
66 /*
6c5e4f24b51e util.crand: Move comment block
Kim Alvefur <zash@zash.se>
parents: 7931
diff changeset
67 * This acts like a read from /dev/urandom with the exception that it
6c5e4f24b51e util.crand: Move comment block
Kim Alvefur <zash@zash.se>
parents: 7931
diff changeset
68 * *does* block if the entropy pool is not yet initialized.
6c5e4f24b51e util.crand: Move comment block
Kim Alvefur <zash@zash.se>
parents: 7931
diff changeset
69 */
8443
980885ba062c util.crand: Try getrandom() again until buffer is filled
Kim Alvefur <zash@zash.se>
parents: 8425
diff changeset
70 int left = len;
8444
adb079840714 util.crand: Only keep return value of getrandom() as the others don't return partial results
Kim Alvefur <zash@zash.se>
parents: 8443
diff changeset
71 char *p = buf;
8443
980885ba062c util.crand: Try getrandom() again until buffer is filled
Kim Alvefur <zash@zash.se>
parents: 8425
diff changeset
72
980885ba062c util.crand: Try getrandom() again until buffer is filled
Kim Alvefur <zash@zash.se>
parents: 8425
diff changeset
73 do {
8444
adb079840714 util.crand: Only keep return value of getrandom() as the others don't return partial results
Kim Alvefur <zash@zash.se>
parents: 8443
diff changeset
74 int ret = getrandom(p, left, 0);
7187
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
75
8443
980885ba062c util.crand: Try getrandom() again until buffer is filled
Kim Alvefur <zash@zash.se>
parents: 8425
diff changeset
76 if(ret < 0) {
980885ba062c util.crand: Try getrandom() again until buffer is filled
Kim Alvefur <zash@zash.se>
parents: 8425
diff changeset
77 lua_pushstring(L, strerror(errno));
980885ba062c util.crand: Try getrandom() again until buffer is filled
Kim Alvefur <zash@zash.se>
parents: 8425
diff changeset
78 return lua_error(L);
980885ba062c util.crand: Try getrandom() again until buffer is filled
Kim Alvefur <zash@zash.se>
parents: 8425
diff changeset
79 }
980885ba062c util.crand: Try getrandom() again until buffer is filled
Kim Alvefur <zash@zash.se>
parents: 8425
diff changeset
80
8444
adb079840714 util.crand: Only keep return value of getrandom() as the others don't return partial results
Kim Alvefur <zash@zash.se>
parents: 8443
diff changeset
81 p += ret;
8443
980885ba062c util.crand: Try getrandom() again until buffer is filled
Kim Alvefur <zash@zash.se>
parents: 8425
diff changeset
82 left -= ret;
980885ba062c util.crand: Try getrandom() again until buffer is filled
Kim Alvefur <zash@zash.se>
parents: 8425
diff changeset
83 } while(left > 0);
980885ba062c util.crand: Try getrandom() again until buffer is filled
Kim Alvefur <zash@zash.se>
parents: 8425
diff changeset
84
7187
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
85 #elif defined(WITH_ARC4RANDOM)
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
86 arc4random_buf(buf, len);
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
87 #elif defined(WITH_OPENSSL)
8424
b0a267f77d9e util.crand: Apply formatter
Kim Alvefur <zash@zash.se>
parents: 8423
diff changeset
88
7915
e3d3ebd417f4 util.crand: Throw error if OpenSSLs RNG is not seeded
Kim Alvefur <zash@zash.se>
parents: 7832
diff changeset
89 if(!RAND_status()) {
e3d3ebd417f4 util.crand: Throw error if OpenSSLs RNG is not seeded
Kim Alvefur <zash@zash.se>
parents: 7832
diff changeset
90 lua_pushliteral(L, "OpenSSL PRNG not seeded");
7918
12e5a54907b6 util.crand: Clarify that lua_error does not return
Kim Alvefur <zash@zash.se>
parents: 7915
diff changeset
91 return lua_error(L);
7915
e3d3ebd417f4 util.crand: Throw error if OpenSSLs RNG is not seeded
Kim Alvefur <zash@zash.se>
parents: 7832
diff changeset
92 }
e3d3ebd417f4 util.crand: Throw error if OpenSSLs RNG is not seeded
Kim Alvefur <zash@zash.se>
parents: 7832
diff changeset
93
8445
2d3a3d12ec87 util.crand: Silence signedness warning
Kim Alvefur <zash@zash.se>
parents: 8444
diff changeset
94 if(RAND_bytes((unsigned char *)buf, len) != 1) {
7832
d02ef0ae94af util.crand: TODOs
Kim Alvefur <zash@zash.se>
parents: 7831
diff changeset
95 /* TODO ERR_get_error() */
7826
7702ce682427 util.crand: Raise hard errors
Kim Alvefur <zash@zash.se>
parents: 7825
diff changeset
96 lua_pushstring(L, "RAND_bytes() failed");
7702ce682427 util.crand: Raise hard errors
Kim Alvefur <zash@zash.se>
parents: 7825
diff changeset
97 return lua_error(L);
7187
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
98 }
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
99
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
100 #endif
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
101
8444
adb079840714 util.crand: Only keep return value of getrandom() as the others don't return partial results
Kim Alvefur <zash@zash.se>
parents: 8443
diff changeset
102 lua_pushlstring(L, buf, len);
7187
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
103 return 1;
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
104 }
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
105
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
106 int luaopen_util_crand(lua_State *L) {
7818
54669df178c2 util-src: Make C modules assert that the Lua runtime matches what it was compiled for
Kim Alvefur <zash@zash.se>
parents: 7439
diff changeset
107 #if (LUA_VERSION_NUM > 501)
54669df178c2 util-src: Make C modules assert that the Lua runtime matches what it was compiled for
Kim Alvefur <zash@zash.se>
parents: 7439
diff changeset
108 luaL_checkversion(L);
54669df178c2 util-src: Make C modules assert that the Lua runtime matches what it was compiled for
Kim Alvefur <zash@zash.se>
parents: 7439
diff changeset
109 #endif
7915
e3d3ebd417f4 util.crand: Throw error if OpenSSLs RNG is not seeded
Kim Alvefur <zash@zash.se>
parents: 7832
diff changeset
110
7969
1c6a07606309 util-src: Specify size of various tables to be allocated
Kim Alvefur <zash@zash.se>
parents: 7934
diff changeset
111 lua_createtable(L, 0, 2);
7187
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
112 lua_pushcfunction(L, Lrandom);
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
113 lua_setfield(L, -2, "bytes");
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
114
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
115 #if defined(WITH_GETRANDOM)
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
116 lua_pushstring(L, "Linux");
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
117 #elif defined(WITH_ARC4RANDOM)
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
118 lua_pushstring(L, "arc4random()");
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
119 #elif defined(WITH_OPENSSL)
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
120 lua_pushstring(L, "OpenSSL");
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
121 #endif
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
122 lua_setfield(L, -2, "_source");
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
123
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
124 return 1;
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
125 }
3d2c2f0809ee util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
diff changeset
126