[PATCH 5/5] Add arc4random() etc. from OpenBSD 5.8

Corinna Vinschen vinschen@redhat.com
Fri Mar 18 16:25:00 GMT 2016


On Mar 18 15:48, Sebastian Huber wrote:
> 
> 
> On 18/03/16 14:50, Corinna Vinschen wrote:
> >On Mar 18 12:28, Corinna Vinschen wrote:
> >>>On Mar 18 11:49, Sebastian Huber wrote:
> >>>> >According to the OpenBSD man page, "A Replacement Call for Random".  It
> >>>> >offers high quality random numbers derived from input data obtained by
> >>>> >the OpenBSD specific getentropy() system call which is declared in
> >>>> ><unistd.h> and must be implemented for each Newlib port externally.  The
> >>>> >arc4random() functions are used for example in LibreSSL and OpenSSH.
> >>>> >
> >>>> >Cygwin provides currently its own implementation of the arc4random
> >>>> >family.  Maybe it makes sense to use this getentropy() implementation:
> >>>> >
> >>>> >http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/lib/libcrypto/crypto/getentropy_win.c?rev=1.4&content-type=text/x-cvsweb-markup
> >>>
> >>>No, that pulls in a dependency to another DLL which we're trying to avoid.
> >>>Using RtlGenRandom should work though.  I have to test this.
> >All patches applied.  I immediately implemented the changes required for
> >Cygwin.  In the first place that required to add two functions
> >arc4random_stir and arc4random_addrandom to maintain backward
> >compatibility since both OpenBSD functions were already exported by
> >Cygwin.
> 
> My aim with the "newlib/libc/sys/*/include/machine/_arc4random.h" file was
> to avoid #ifdef SYS_XYZ cascades in the generic files. It seems that for
> Cygwin there is no "newlib/libc/sys/cygwin" directory. Would it be possible
> to add this and place a
> "newlib/libc/sys/cygwin/include/machine/_arc4random.h" in it?

That might be possible, but the arc4random.h file does not even have
provisions for redefining _ARC4_LOCK/_ARC4_UNLOCK.  The file defines
them unconditionally.

> I am not sure if we should add the arc4random_stir() and
> arc4random_addrandom() functions, since this may lead configure scripts to
> enable their use. With the getentropy() system call I am not sure if this is
> harmful.

They are required for backward compatiblity.  I also don't understand
why they should be harmful.  Are they harmful on OpenBSD?


Corinna

-- 
Corinna Vinschen
Cygwin Maintainer
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/newlib/attachments/20160318/74a68d38/attachment.sig>


More information about the Newlib mailing list