[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] getentropy, getrandom: new modules
From: |
Bruno Haible |
Subject: |
Re: [PATCH] getentropy, getrandom: new modules |
Date: |
Sat, 30 May 2020 14:58:46 +0200 |
User-agent: |
KMail/5.1.3 (Linux/4.4.0-177-generic; KDE/5.18.0; x86_64; ; ) |
There are several problems with this commit:
- It causes a Continuous Integration failure.
- It partially overlaps with the crypto/gc-random module.
- The ChangeLog entry lists files that were not committed.
- It conflicts with the declaration on Solaris 11.3 and newer.
- It adds a new header file, <sys/random.h>, but without the usual
header file tests in C and C++.
Let me start with the ChangeLog entry:
> * modules/getrandom, modules/getrandom-tests:
> * tests/test-getentropy.c, tests/test-getrandom.c:
> New files.
The files modules/getrandom-tests and tests/test-getrandom.c were
not committed. Let me add some.
2020-05-30 Bruno Haible <bruno@clisp.org>
getrandom: Add tests.
* tests/test-getrandom.c: New file.
* modules/getrandom-tests: New file.
============================ tests/test-getrandom.c ============================
/* Test of getting random bytes.
Copyright (C) 2020 Free Software Foundation, Inc.
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 <https://www.gnu.org/licenses/>. */
/* Written by Bruno Haible. */
#include <config.h>
#include <sys/random.h>
#include "signature.h"
SIGNATURE_CHECK (getrandom, ssize_t, (void *, size_t, unsigned int));
#include <errno.h>
#include <string.h>
#include "macros.h"
int
main (void)
{
char buf1[8];
char buf2[8];
char large_buf[100000];
ssize_t ret;
/* Check that different calls produce different results (with a high
probability). */
ret = getrandom (buf1, sizeof (buf1), 0);
if (ret < 0)
ASSERT (errno == ENOSYS);
else
{
ret = getrandom (buf2, sizeof (buf2), 0);
if (ret < 0)
ASSERT (errno == ENOSYS);
else
{
/* It is very unlikely that two calls to getrandom produce the
same results. */
ASSERT (memcmp (buf1, buf2, sizeof (buf1)) != 0);
}
}
/* Likewise with the "truly random" number generator. */
ret = getrandom (buf1, sizeof (buf1), GRND_RANDOM);
if (ret < 0)
ASSERT (errno == ENOSYS);
else
{
ret = getrandom (buf2, sizeof (buf2), GRND_RANDOM);
if (ret < 0)
ASSERT (errno == ENOSYS);
else
{
/* It is very unlikely that two calls to getrandom produce the
same results. */
ASSERT (memcmp (buf1, buf2, sizeof (buf1)) != 0);
}
}
/* Check that GRND_NONBLOCK works. */
ret = getrandom (large_buf, sizeof (large_buf), GRND_RANDOM | GRND_NONBLOCK);
/* It is very unlikely that so many truly random bytes were ready. */
if (ret < 0)
ASSERT (errno == ENOSYS || errno == EAGAIN);
else
ASSERT (ret > 0 && ret < sizeof (large_buf));
return 0;
}
=========================== modules/getrandom-tests ===========================
Files:
tests/test-getrandom.c
tests/signature.h
tests/macros.h
Depends-on:
configure.ac:
Makefile.am:
TESTS += test-getrandom
check_PROGRAMS += test-getrandom
- [PATCH] getentropy, getrandom: new modules, Paul Eggert, 2020/05/25
- Re: [PATCH] getentropy, getrandom: new modules,
Bruno Haible <=
- Re: [PATCH] getentropy, getrandom: new modules, Paul Eggert, 2020/05/30
- Re: getrandom vs. crypto/gc-random, Bruno Haible, 2020/05/31
- Re: getrandom vs. crypto/gc-random, Bruno Haible, 2020/05/31
- Re: getrandom vs. crypto/gc-random, Jeffrey Walton, 2020/05/31
- Re: getrandom vs. crypto/gc-random, Simon Josefsson, 2020/05/31
- Re: getrandom vs. crypto/gc-random, Bruno Haible, 2020/05/31
Re: [PATCH] getentropy, getrandom: new modules, Bruno Haible, 2020/05/30
Re: [PATCH] getentropy, getrandom: new modules, Bruno Haible, 2020/05/30