Mercurial > prosody-hg
view util/uuid.lua @ 14216:2ec517d8d43e
net.unbound: Enable DNSSEC by default with option for turning off
You know what they say about opt-in security.
Enabling DNSSEC in libunbound without a way to turn it off would likely
be a problem for those whose DNS resolvers do not support, or outright
block DNSSEC. The merge algorithm already in place here doesn't have a
way to unset something, so instead a simpler boolean setting is
introduced, similar to some existing ones like use_ipv6/4 and use_dane.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 07 Jun 2026 20:32:55 +0200 |
| parents | dab1a4002cb5 |
| children |
line wrap: on
line source
-- 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. -- local random = require "prosody.util.random"; local random_bytes = random.bytes; local time = require "prosody.util.time"; local hex = require "prosody.util.hex".encode; local m_ceil = math.ceil; local m_floor = math.floor; local function get_nibbles(n) return hex(random_bytes(m_ceil(n/2))):sub(1, n); end local function get_twobits() return ("%x"):format(random_bytes(1):byte() % 4 + 8); end local function generate() -- 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 local function generate_v7() -- Sortable based on time and random -- https://datatracker.ietf.org/doc/html/rfc9562#name-uuid-version-7 local unix_ts_ms = m_floor(time.now()*1000); local unix_ts_ms_a = m_floor(unix_ts_ms / 0x10000); local unix_ts_ms_b = unix_ts_ms % 0x10000; return ("%08x-%04x-7%3s-%1s%3s-%12s"):format(unix_ts_ms_a, unix_ts_ms_b, get_nibbles(3), get_twobits(), get_nibbles(3), get_nibbles(12)); end return { v4 = generate; v7 = generate_v7; get_nibbles=get_nibbles; generate = generate ; -- COMPAT seed = random.seed; };
