--- Prosody IM v0.4
--- Copyright (C) 2008-2009 Matthew Wild
--- Copyright (C) 2008-2009 Waqas Hussain
+-- Prosody IM
+-- Copyright (C) 2008-2010 Matthew Wild
+-- Copyright (C) 2008-2010 Waqas Hussain
--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
return sha1(x..os_clock()..tostring({}), true);
end
+local buffer = new_random(uniq_time());
+local function _seed(x)
+ buffer = new_random(buffer..x);
+end
+local function get_nibbles(n)
+ if #buffer < n then _seed(uniq_time()); end
+ local r = buffer:sub(0, n);
+ buffer = buffer:sub(n+1);
+ return r;
+end
+local function get_twobits()
+ return ("%x"):format(get_nibbles(1):byte() % 4 + 8);
+end
+
function generate()
- return new_random(uniq_time());
+ -- generate RFC 4122 complaint UUIDs (version 4 - random)
+ return get_nibbles(8).."-"..get_nibbles(4).."-4"..get_nibbles(3).."-"..(get_twobits())..get_nibbles(3).."-"..get_nibbles(12);
end
+seed = _seed;
return _M;