diff options
author | Pauli <paul.dale@oracle.com> | 2019-05-29 09:54:29 +1000 |
---|---|---|
committer | Pauli <paul.dale@oracle.com> | 2019-05-29 09:54:29 +1000 |
commit | 5d2f3e4a6c3e62677cdf3b33d8b9b08ff7d52dc7 (patch) | |
tree | 36c697b0b6bc6552ff3471e26c8c49bcf5410d9e /test/bn_rand_range.h | |
parent | d4e2d5db621a512eff8a0ab07d3ac44d7122428a (diff) |
Test of uniformity of BN_rand_range output.
Rework the test so that it fails far less often.
A number of independent tests are executed and 5% are expected to fail.
The number of such failures follows a binomial distribution which permits
a statistical test a 0.01% expected failure rate.
There is a command line option to enable the stochastic range checking.
It is off by default.
Reviewed-by: Matt Caswell <matt@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/8830)
Diffstat (limited to 'test/bn_rand_range.h')
-rw-r--r-- | test/bn_rand_range.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/test/bn_rand_range.h b/test/bn_rand_range.h new file mode 100644 index 0000000000..2a63ef7219 --- /dev/null +++ b/test/bn_rand_range.h @@ -0,0 +1,58 @@ +/* + * WARNING: do not edit! + * Generated by statistics/bn_rand_range.py in the OpenSSL tool repository. + * + * Copyright 2019 The OpenSSL Project Authors. All Rights Reserved. + * + * Licensed under the Apache License 2.0 (the "License"). You may not use + * this file except in compliance with the License. You can obtain a copy + * in the file LICENSE in the source distribution or at + * https://www.openssl.org/source/license.html + */ + +static const struct { + unsigned int range; + unsigned int iterations; + double critical; +} rand_range_cases[] = { + { 2, 200, 3.841459 }, + { 3, 300, 5.991465 }, + { 4, 400, 7.814728 }, + { 5, 500, 9.487729 }, + { 6, 600, 11.070498 }, + { 7, 700, 12.591587 }, + { 8, 800, 14.067140 }, + { 9, 900, 15.507313 }, + { 10, 1000, 16.918978 }, + { 11, 1100, 18.307038 }, + { 12, 1200, 19.675138 }, + { 13, 1300, 21.026070 }, + { 14, 1400, 22.362032 }, + { 15, 1500, 23.684791 }, + { 16, 1600, 24.995790 }, + { 17, 1700, 26.296228 }, + { 18, 1800, 27.587112 }, + { 19, 1900, 28.869299 }, + { 20, 2000, 30.143527 }, + { 30, 3000, 42.556968 }, + { 40, 4000, 54.572228 }, + { 50, 5000, 66.338649 }, + { 60, 6000, 77.930524 }, + { 70, 7000, 89.391208 }, + { 80, 8000, 100.748619 }, + { 90, 9000, 112.021986 }, + { 100, 10000, 123.225221 }, + { 1000, 10000, 1073.642651 }, + { 2000, 20000, 2104.128222 }, + { 3000, 30000, 3127.515432 }, + { 4000, 40000, 4147.230012 }, + { 5000, 50000, 5164.598069 }, + { 6000, 60000, 6180.299514 }, + { 7000, 70000, 7194.738181 }, + { 8000, 80000, 8208.177159 }, + { 9000, 90000, 9220.799176 }, + { 10000, 100000, 10232.737266 }, +}; + +static const int binomial_critical = 29; + |