Commit 37794691 authored by Ulf Möller's avatar Ulf Möller
Browse files

Use comment from md_rand.c (part 2, as well).

parent 0b5cfe32
Loading
Loading
Loading
Loading
+10 −9
Original line number Original line Diff line number Diff line
@@ -123,19 +123,20 @@ function and xor).
When bytes are extracted from the RNG, the following process is used.
When bytes are extracted from the RNG, the following process is used.
For each group of 8 bytes (or less), we do the following,
For each group of 8 bytes (or less), we do the following,


Input into the hash function, the top 8 bytes from 'md', the byte that
Input into the hash function the top 8 bytes from 'md', the bytes that
are to be overwritten by the random bytes and bytes from the 'state'
are to be overwritten by the random bytes, and bytes from the 'state'
(incrementing looping index).  From this hash function output (which
(incrementing looping index).  From this hash function output (which
is kept in 'md'), the top (upto) 8 bytes are returned to the caller
is kept in 'md'), the top (upto) 8 bytes are returned to the caller
and the bottom (upto) 8 bytes are xored into the 'state'.
and the bottom (upto) 8 bytes are xored into the 'state'.


Finally, after we have finished 'generation' random bytes for the
Finally, after we have finished 'num' random bytes for the caller,
called, 'count' (which is incremented) and 'md' are fed into the hash
'count' (which is incremented) and the local and global 'md' are fed
function and the results are kept in 'md'.  I believe the above
into the hash function and the results are kept in the global 'md'.
addressed points 1 (use of SHA-1), 6 (by hashing into the 'state' the

'old' data from the caller that is about to be overwritten) and 7 (by
I believe the above addressed points 1 (use of SHA-1), 6 (by hashing
not using the 8 bytes given to the caller to update the 'state', but
into the 'state' the 'old' data from the caller that is about to be
they are used to update 'md').
overwritten) and 7 (by not using the 8 bytes given to the caller to
update the 'state', but they are used to update 'md').


So of the points raised, only 2 is not addressed (but see
So of the points raised, only 2 is not addressed (but see
L<RAND_add()>).
L<RAND_add()>).