diff options
author | Kim Alvefur <zash@zash.se> | 2017-03-31 19:01:42 +0200 |
---|---|---|
committer | Kim Alvefur <zash@zash.se> | 2017-03-31 19:01:42 +0200 |
commit | 6abd0a8f1ad20e719151a4027c8ae5d1d8ba719c (patch) | |
tree | bee3cc0bc75de8d1aa4fb7ea7ca6571c449ac139 /util/id.lua | |
parent | 0646752a74aa5f7f0383000d64cd669474209d22 (diff) | |
parent | 79bc05914a516cf0d005b6adff8b264be907eaa0 (diff) | |
download | prosody-6abd0a8f1ad20e719151a4027c8ae5d1d8ba719c.tar.gz prosody-6abd0a8f1ad20e719151a4027c8ae5d1d8ba719c.zip |
Merge 0.10->trunk
Diffstat (limited to 'util/id.lua')
-rw-r--r-- | util/id.lua | 26 |
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; +} |