aboutsummaryrefslogtreecommitdiffstats
path: root/util/id.lua
diff options
context:
space:
mode:
authorKim Alvefur <zash@zash.se>2017-03-31 19:01:42 +0200
committerKim Alvefur <zash@zash.se>2017-03-31 19:01:42 +0200
commit6abd0a8f1ad20e719151a4027c8ae5d1d8ba719c (patch)
treebee3cc0bc75de8d1aa4fb7ea7ca6571c449ac139 /util/id.lua
parent0646752a74aa5f7f0383000d64cd669474209d22 (diff)
parent79bc05914a516cf0d005b6adff8b264be907eaa0 (diff)
downloadprosody-6abd0a8f1ad20e719151a4027c8ae5d1d8ba719c.tar.gz
prosody-6abd0a8f1ad20e719151a4027c8ae5d1d8ba719c.zip
Merge 0.10->trunk
Diffstat (limited to 'util/id.lua')
-rw-r--r--util/id.lua26
1 files changed, 26 insertions, 0 deletions
diff --git a/util/id.lua b/util/id.lua
new file mode 100644
index 00000000..731355fa
--- /dev/null
+++ b/util/id.lua
@@ -0,0 +1,26 @@
+-- Prosody IM
+-- Copyright (C) 2008-2017 Matthew Wild
+-- Copyright (C) 2008-2017 Waqas Hussain
+-- Copyright (C) 2008-2017 Kim Alvefur
+--
+-- This project is MIT/X11 licensed. Please see the
+-- COPYING file in the source package for more information.
+--
+
+local s_gsub = string.gsub;
+local random_bytes = require "util.random".bytes;
+local base64_encode = require "util.encodings".base64.encode;
+
+local b64url = { ["+"] = "-", ["/"] = "_", ["="] = "" };
+local function b64url_random(len)
+ return (s_gsub(base64_encode(random_bytes(len)), "[+/=]", b64url));
+end
+
+return {
+ short = function () return b64url_random(6); end;
+ medium = function () return b64url_random(12); end;
+ long = function () return b64url_random(24); end;
+ custom = function (size)
+ return function () return b64url_random(size); end;
+ end;
+}