Annotate

util/random.lua @ 9994:524b8cd76780 0.11

net.server_epoll: Restore wantread flag after pause (fixes #1354) If a chunk of data has been received that is larger than the amount read at a time, then the connection is paused for a short time after which it tries to read some more. If, after that, there is still more data to read, it should do the same thing. However, because the "want read" flag is removed and was restored after the delayed reading, it would not schedule another delayed read.
author Kim Alvefur <zash@zash.se>
date Sat, 04 May 2019 04:23:35 +0200
parent 8243:292f61d9d30a
child 10014:5d2f7144fa12
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
ae044691de0f util.random: Use /dev/urandom
Kim Alvefur <zash@zash.se>
parents: 6421
diff changeset
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 };