Software /
code /
prosody
Annotate
util/random.lua @ 7159:f11d6c9d1c1f
Merge 0.10->trunk
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Thu, 18 Feb 2016 13:24:21 +0000 |
parent | 7114:51cf09bb74eb |
child | 7187:3d2c2f0809ee |
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 |
7114
51cf09bb74eb
util.random: Restore friendlier error from 0.9/util.uuid
Kim Alvefur <zash@zash.se>
parents:
7083
diff
changeset
|
9 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
|
10 |
7083
ac920b0f9eae
util.random: Open /dev/urandom read-only, make seed() a noop
Kim Alvefur <zash@zash.se>
parents:
7050
diff
changeset
|
11 local function seed() |
6376
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
12 end |
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 seed = seed; |
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
26 bytes = bytes; |
bd812a7713ad
util.random: Generic util lib for generating strings of random bytes
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
27 }; |