From: George Spelvin <linux@horizon.com>
To: nhorman@tuxdriver.com, linux-crypto@vger.kernel.org
Cc: smueller@chronox.de, herbert@gondor.apana.org.au, linux@horizon.com
Subject: [PATCH v2 00/25] Multiple changes to crypto/ansi_cprng.c
Date: Sun, 7 Dec 2014 07:26:08 -0500 [thread overview]
Message-ID: <cover.1417951990.git.linux@horizon.com> (raw)
This is a reworked version of my earlier patch series, based on feedback
from Neil Horman and Stephan Mueller. Thank you both very much!
It's mostly the same content as before, but I've tried to improve comments
and commit messages to address questions, to reorder the patches to put
the questionable stuff at the end, and I've also (at Neil's prodding)
made some larger scale changes.
I've added appropriate const qualifiers to the RNG API, and also const
declarations to all of the self-tests in testmgr.h. (That's a very
large but simple patch.)
The significant code improvement is the addition of what I call the
"stutter test" to testmgr. This reads from the RNG in irregular chunks
and verifies that the output matches that produced by a more regular
pattern. This should prevent any recurrence of CVE-2013-4345.
(It itself passed an important test by detecting a bug in my code!)
Dropped change:
* Neil said he wanted deterministic to remain the default, so I dropped
the patch that changed the default seedsize.
Pending issues:
* Neil would like me to post the results of the NIST and FIPS test
vectors. The current code doesn't print anything on a successful
test; I need to know what result format is wanted.
* Stephan says he has the FIPS test vectors referred to above and
will send them to me when he finds them.
* Is non-deterministic mode (last three patches) wanted?
George Spelvin (25):
crypto: ansi_cprng - unroll _get_more_prng_bytes
crypto: ansi_cprng - Additional _get_more_prng_bytes cleanup
crypto: ansi_cprng - Use %phN rather than print_hex_dump for debug
crypto: ansi_cprng - Make debug output more like NIST test vectors
crypto: ansi_cprng - Eliminate ctx->I and ctx->last_rand_data
crypto: ansi_cprng - Make cont_test a bool
crypto: ansi_cprng - Shrink context some more
crypto: ansi_cprng - Don't call reset_prng_context from cprng_init
crypto: ansi_cprng - Make length types consistent
crypto: ansi_cprng - Use u8 data types consistently internally
crypto: ansi_cprng - Eliminate unused PRNG_FIXED_SIZE flag
crypto: ansi_cprng - Get rid of rdata buffer in fips_cprng_reset
crypto: Add appropriate consts to RNG API
crypto: tcrypt - Add const qualifiers all over the test code.
crypto: testmgr - Merge seed arrays in struct cprng_testvec
crypto: testmgr - Report failure on zero-length crypto_rng_get_bytes
crypto: testmgr - Don't crash if CPRNG test result is large
crypto: testmgr - Add CPRNG stutter test.
crypto: ansi_cprng - simplify get_prng_bytes
crypto: ansi_cprng - simplify xor_vectors() to xor_block()
crypto: ansi_cprng - Rename rand_data_valid more sensibly
crypto: ansi_cprng - Tweak comments
crypto: ansi_cprng - Introduce a "union cipherblock"
crypto: ansi_cprng - Introduce non-deterministic mode
crypto: ansi_cprng - If non-deterministic, don't buffer old output
crypto/ansi_cprng.c | 369 ++++++++++++++++--------------------
crypto/krng.c | 2 +-
crypto/rng.c | 3 +-
crypto/tcrypt.c | 46 ++---
crypto/tcrypt.h | 30 +--
crypto/testmgr.c | 190 +++++++++++++------
crypto/testmgr.h | 502 ++++++++++++++++++++++++-------------------------
include/crypto/rng.h | 2 +-
include/linux/crypto.h | 6 +-
9 files changed, 587 insertions(+), 563 deletions(-)
--
2.1.3
next reply other threads:[~2014-12-07 12:26 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-07 12:26 George Spelvin [this message]
2014-12-07 12:26 ` [PATCH v2 01/25] crypto: ansi_cprng - unroll _get_more_prng_bytes George Spelvin
2014-12-07 12:26 ` [PATCH v2 02/25] crypto: ansi_cprng - Additional _get_more_prng_bytes cleanup George Spelvin
2014-12-07 12:26 ` [PATCH v2 03/25] crypto: ansi_cprng - Use %phN rather than print_hex_dump for debug George Spelvin
2014-12-07 12:26 ` [PATCH v2 04/25] crypto: ansi_cprng - Make debug output more like NIST test vectors George Spelvin
2014-12-07 12:26 ` [PATCH v2 05/25] crypto: ansi_cprng - Eliminate ctx->I and ctx->last_rand_data George Spelvin
2014-12-14 11:50 ` Stephan Mueller
2014-12-14 19:22 ` George Spelvin
2014-12-07 12:26 ` [PATCH v2 06/25] crypto: ansi_cprng - Make cont_test a bool George Spelvin
2014-12-07 12:26 ` [PATCH v2 07/25] crypto: ansi_cprng - Shrink context some more George Spelvin
2014-12-07 12:26 ` [PATCH v2 08/25] crypto: ansi_cprng - Don't call reset_prng_context from cprng_init George Spelvin
2014-12-07 12:26 ` [PATCH v2 09/25] crypto: ansi_cprng - Make length types consistent George Spelvin
2014-12-07 12:26 ` [PATCH v2 10/25] crypto: ansi_cprng - Use u8 data types consistently internally George Spelvin
2014-12-07 12:26 ` [PATCH v2 11/25] crypto: ansi_cprng - Eliminate unused PRNG_FIXED_SIZE flag George Spelvin
2014-12-07 12:26 ` [PATCH v2 12/25] crypto: ansi_cprng - Get rid of rdata buffer in fips_cprng_reset George Spelvin
2014-12-07 12:26 ` [PATCH v2 13/25] crypto: Add appropriate consts to RNG API George Spelvin
2014-12-14 11:39 ` Stephan Mueller
2014-12-07 12:26 ` [PATCH v2 14/25] crypto: tcrypt - Add const qualifiers all over the test code George Spelvin
2014-12-07 12:26 ` [PATCH v2 15/25] crypto: testmgr - Merge seed arrays in struct cprng_testvec George Spelvin
2014-12-07 12:26 ` [PATCH v2 16/25] crypto: testmgr - Report failure on zero-length crypto_rng_get_bytes George Spelvin
2014-12-07 12:26 ` [PATCH v2 17/25] crypto: testmgr - Don't crash if CPRNG test result is large George Spelvin
2014-12-07 12:26 ` [PATCH v2 18/25] crypto: testmgr - Add CPRNG stutter test George Spelvin
2014-12-07 12:26 ` [PATCH v2 19/25] crypto: ansi_cprng - simplify get_prng_bytes George Spelvin
2014-12-07 12:26 ` [PATCH v2 20/25] crypto: ansi_cprng - simplify xor_vectors() to xor_block() George Spelvin
2014-12-07 12:26 ` [PATCH v2 21/25] crypto: ansi_cprng - Rename rand_data_valid more sensibly George Spelvin
2014-12-07 12:26 ` [PATCH v2 22/25] crypto: ansi_cprng - Tweak comments George Spelvin
2014-12-07 12:26 ` [PATCH v2 23/25] crypto: ansi_cprng - Introduce a "union cipherblock" George Spelvin
2014-12-07 12:26 ` [PATCH v2 24/25] crypto: ansi_cprng - Introduce non-deterministic mode George Spelvin
2014-12-07 12:26 ` [PATCH v2 25/25] crypto: ansi_cprng - If non-deterministic, don't buffer old output George Spelvin
2014-12-07 22:49 ` George Spelvin
2014-12-08 14:22 ` Neil Horman
2014-12-08 16:43 ` George Spelvin
2014-12-08 18:07 ` Neil Horman
2014-12-08 20:34 ` George Spelvin
2014-12-14 12:06 ` [PATCH v2 00/25] Multiple changes to crypto/ansi_cprng.c Stephan Mueller
2014-12-14 19:47 ` George Spelvin
2014-12-15 6:18 ` Stephan Mueller
2014-12-14 20:37 ` George Spelvin
2014-12-15 6:14 ` Stephan Mueller
2014-12-15 8:42 ` George Spelvin
2014-12-15 8:50 ` Stephan Mueller
2014-12-15 10:45 ` George Spelvin
2014-12-15 11:08 ` Stephan Mueller
2014-12-15 5:53 ` George Spelvin
2014-12-15 6:27 ` Stephan Mueller
2014-12-15 8:28 ` George Spelvin
2014-12-15 8:56 ` Stephan Mueller
2014-12-15 10:21 ` George Spelvin
2014-12-15 10:46 ` Stephan Mueller
2014-12-15 11:32 ` Neil Horman
2014-12-15 22:01 ` George Spelvin
2014-12-16 7:22 ` Stephan Mueller
2014-12-16 11:32 ` Neil Horman
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=cover.1417951990.git.linux@horizon.com \
--to=linux@horizon.com \
--cc=herbert@gondor.apana.org.au \
--cc=linux-crypto@vger.kernel.org \
--cc=nhorman@tuxdriver.com \
--cc=smueller@chronox.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.