/* Copyright (C) 2020 C. McEnroe * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include #include #include #include typedef unsigned char byte; static const char *uuidGen(void) { byte uuid[16]; arc4random_buf(uuid, sizeof(uuid)); uuid[6] &= 0x0F; uuid[6] |= 0x40; uuid[8] &= 0x3F; uuid[8] |= 0x80; static char str[sizeof("00000000-0000-0000-0000-000000000000")]; snprintf( str, sizeof(str), "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", uuid[0], uuid[1], uuid[2], uuid[3], uuid[4], uuid[5], uuid[6], uuid[7], uuid[8], uuid[9], uuid[10], uuid[11], uuid[12], uuid[13], uuid[14], uuid[15] ); return str; } int main(void) { printf("%s\n", uuidGen()); }