31 std::array<uint8_t, kUUID4Size> b;
33 FILE* f = fopen(
"/dev/urandom",
"rb");
35 fprintf(stderr,
"Failed to open /dev/urandom while generating UUID4.\n");
42 fprintf(stderr,
"Failed to read from /dev/urandom while generating UUID4.\n");
47 b[6] = (b[6] & 0x0F) | 0x40;
48 b[8] = (b[8] & 0x3F) | 0x80;
51 snprintf(buf,
sizeof(buf),
52 "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x",
53 b[0], b[1], b[2], b[3],
54 b[4], b[5], b[6], b[7],
55 b[8], b[9], b[10], b[11],
56 b[12], b[13], b[14], b[15]);
58 return std::string(buf);
constexpr size_t kUUID4Size