Mercurial > prosody-hg
annotate util/random.lua @ 9659:86c431650dfd
net.websocket.frames: Prefer Lua 5.2 built-in bit module over LuaJIT version
When running on Lua 5.2 this makes sense since bit32 is usually already
loaded. It's sensible to prefer this going forward in case of
incompatibilities between the two variants.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Thu, 29 Nov 2018 16:53:22 +0100 |
| parents | 292f61d9d30a |
| children | 5d2f7144fa12 |
| rev | line source |
|---|---|
|
6376
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 -- Prosody IM |
|
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
2 -- Copyright (C) 2008-2014 Matthew Wild |
|
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 -- Copyright (C) 2008-2014 Waqas Hussain |
|
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 -- |
|
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 -- This project is MIT/X11 licensed. Please see the |
|
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
6 -- COPYING file in the source package for more information. |
|
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
7 -- |
|
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
8 |
|
7187
3d2c2f0809ee
util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
7114
diff
changeset
|
9 local ok, crand = pcall(require, "util.crand"); |
|
3d2c2f0809ee
util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
7114
diff
changeset
|
10 if ok then return crand; end |
|
3d2c2f0809ee
util.crand: C binding to one of OpenSSL, Linux getrandom() or OpenBSD arc4random() CSPRNG
Kim Alvefur <zash@zash.se>
parents:
7114
diff
changeset
|
11 |
|
7114
51cf09bb74eb
util.random: Restore friendlier error from 0.9/util.uuid
Kim Alvefur <zash@zash.se>
parents:
7083
diff
changeset
|
12 local urandom, urandom_err = io.open("/dev/urandom", "r"); |
|
6376
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
13 |
|
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
14 local function bytes(n) |
| 7050 | 15 return urandom:read(n); |
|
6376
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
16 end |
|
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 |
|
7114
51cf09bb74eb
util.random: Restore friendlier error from 0.9/util.uuid
Kim Alvefur <zash@zash.se>
parents:
7083
diff
changeset
|
18 if not urandom then |
|
51cf09bb74eb
util.random: Restore friendlier error from 0.9/util.uuid
Kim Alvefur <zash@zash.se>
parents:
7083
diff
changeset
|
19 function bytes() |
|
51cf09bb74eb
util.random: Restore friendlier error from 0.9/util.uuid
Kim Alvefur <zash@zash.se>
parents:
7083
diff
changeset
|
20 error("Unable to obtain a secure random number generator, please see https://prosody.im/doc/random ("..urandom_err..")"); |
|
51cf09bb74eb
util.random: Restore friendlier error from 0.9/util.uuid
Kim Alvefur <zash@zash.se>
parents:
7083
diff
changeset
|
21 end |
|
51cf09bb74eb
util.random: Restore friendlier error from 0.9/util.uuid
Kim Alvefur <zash@zash.se>
parents:
7083
diff
changeset
|
22 end |
|
51cf09bb74eb
util.random: Restore friendlier error from 0.9/util.uuid
Kim Alvefur <zash@zash.se>
parents:
7083
diff
changeset
|
23 |
|
6376
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
24 return { |
|
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
25 bytes = bytes; |
|
8242
177873dc9cf3
util.random: Add a _source field to match util.crand
Kim Alvefur <zash@zash.se>
parents:
7187
diff
changeset
|
26 _source = "/dev/urandom"; |
|
6376
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 }; |
