From: Torsten Duwe <duwe@lst.de>
To: u-boot@lists.denx.de
Subject: [PATCH v2 1/2] lib: uuid: use RNG device if present
Date: Sun, 20 Dec 2020 17:59:59 +0100 [thread overview]
Message-ID: <20201220175949.0eb31154@blackhole.lan> (raw)
In-Reply-To: <CAPnjgZ1payvF8WGp1gFbmiCXxF7MgkcsipWXnwpYrZsthhvtXA@mail.gmail.com>
On Fri, 18 Dec 2020 19:29:12 -0700
Simon Glass <sjg@chromium.org> wrote:
> > - int i;
> > -
> > - srand(get_ticks() + rand());
> > + int i, ret;
> > + struct udevice *devp;
> > + u8 randv = 0;
> > +
> > +#if defined(CONFIG_DM_RNG)
>
> This seems a little backwards to me. The caller should request a RNG
> device, getting either a hardware one or a software one, and then call
> the uclass method to get the uuid.
Strictly speaking, there's no such thing as a "software RNG". The term
"DRBG" was coined for accurateness, "deterministic random bit
generator". The oxymoron "deterministic random" pretty much nails it.
Alternatively, it can be called "pseudo" RNG.
rand() and srand() exactly implement such a mechanism already, with low
coding overhead. U-Boot runs fine with them most of the time, but there
are rare cases where real entropy would be needed. This is what these
two patches are about. In case there's more, I already speculated about
a centralised entity in my response to the v1 cover letter, but for now
these two changes should do.
> > + ret = uclass_get_device(UCLASS_RNG, 0, &devp);
> > + if (ret) {
> > + ret = dm_rng_read(devp, &randv, sizeof(randv));
> > + if (ret < 0)
> > + randv = 0;
> > + }
> > + if (randv)
> > + srand(randv);
> > + else
> > +#endif
> > + srand(get_ticks() + rand());
> >
> > /* Set all fields randomly */
> > for (i = 0; i < 4; i++)
[ rand() usage following here ^ ]
The #ifdefs are already gone in v3.
Torsten
next prev parent reply other threads:[~2020-12-20 16:59 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-12-16 16:28 [PATCH v2 0/2] Use RNG to get random behaviour matthias.bgg at kernel.org
2020-12-16 16:28 ` [PATCH v2 1/2] lib: uuid: use RNG device if present matthias.bgg at kernel.org
2020-12-18 8:37 ` Torsten Duwe
2020-12-18 9:10 ` mbrugger
2020-12-19 2:29 ` Simon Glass
2020-12-20 16:59 ` Torsten Duwe [this message]
2020-12-20 18:17 ` Simon Glass
2020-12-23 10:24 ` Torsten Duwe
2020-12-29 3:32 ` Simon Glass
2021-01-20 11:17 ` Matthias Brugger
2021-01-20 19:50 ` Simon Glass
2021-01-20 19:56 ` Matthias Brugger
2020-12-23 10:09 ` Matthias Brugger
2020-12-16 16:28 ` [PATCH v2 2/2] net: Use NDRNG device in srand_mac() matthias.bgg at kernel.org
2020-12-19 2:29 ` Simon Glass
2020-12-18 8:31 ` [PATCH v2 0/2] Use RNG to get random behaviour Torsten Duwe
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201220175949.0eb31154@blackhole.lan \
--to=duwe@lst.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox