- fd = open("/dev/urandom", O_RDONLY|O_CLOEXEC|O_NOCTTY);
- if (fd < 0) {
- log_error("Failed to open /dev/urandom: %m");
- return -errno;
- }
-
- k = loop_read(fd, buf, sizeof(buf), false);
- close_nointr_nofail(fd);
-
- if (k != sizeof(buf)) {
- log_error("Failed to read /dev/urandom: %s", strerror(k < 0 ? -k : EIO));
- return k < 0 ? (int) k : -EIO;
+ r = sd_id128_randomize(&buf);
+ if (r < 0) {
+ log_error("Failed to open /dev/urandom: %s", strerror(-r));
+ return r;