@@ -36,60 +36,51 @@ log_info "----------------------------------------------------------------------
3636log_info " -------------------Starting $TESTNAME Testcase----------------------------"
3737log_info " === Test Initialization ==="
3838
39- log_info " Checking if dependency binary is available "
39+ # Verifying the availability of the dependency binary
4040check_dependencies rngtest dd
4141
4242TMP_BIN=" /tmp/rngtest_input.bin"
4343TMP_OUT=" /tmp/rngtest_output.txt"
4444ENTROPY_MB=10
45- RNG_SOURCE=" /dev/urandom" # Use /dev/random if you want slow but highest entropy
45+ COUNT=1000
46+ PASS_THRESHOLD=997
47+ RNG_SOURCE=" /dev/urandom"
48+ [ -e /dev/hwrng ] && RNG_SOURCE=" /dev/hwrng"
4649
47- log_info " Generating ${ENTROPY_MB} MB entropy input from $RNG_SOURCE using dd... "
50+ log_info " Generating ${ENTROPY_MB} MB entropy input from $RNG_SOURCE "
4851if ! dd if=" $RNG_SOURCE " of=" $TMP_BIN " bs=1M count=" $ENTROPY_MB " status=none 2> /dev/null; then
4952 log_fail " $TESTNAME : Failed to read random data from $RNG_SOURCE "
5053 echo " $TESTNAME FAIL" > " $res_file "
5154 rm -f " $TMP_BIN "
5255 exit 1
5356fi
5457
55- log_info " Running rngtest -c 1000 < $TMP_BIN "
56- if ! rngtest -c 1000 < " $TMP_BIN " > " $TMP_OUT " 2>&1 ; then
57- log_fail " $TESTNAME : rngtest execution failed"
58- echo " $TESTNAME FAIL" > " $res_file "
59- rm -f " $TMP_BIN " " $TMP_OUT "
60- exit 1
61- fi
58+ log_info " Running rngtest -c $COUNT < $TMP_BIN "
59+ rngtest -c " $COUNT " < " $TMP_BIN " > " $TMP_OUT " 2>&1
6260
63- # Check for entropy errors or source drained
64- if grep -q " entropy source drained" " $TMP_OUT " ; then
65- log_fail " rngtest: entropy source drained, input too small"
66- echo " $TESTNAME FAIL" > " $res_file "
67- rm -f " $TMP_BIN " " $TMP_OUT "
68- exit 1
69- fi
70-
71- # Parse FIPS 140-2 successes (robust to output variations)
61+ # Try to extract success count regardless of return code
7262successes=$( awk ' /FIPS 140-2 successes:/ {print $NF}' " $TMP_OUT " | head -n1)
7363
7464if [ -z " $successes " ] || ! echo " $successes " | grep -Eq ' ^[0-9]+$' ; then
75- log_fail " rngtest did not return a valid integer for successes; got: ' $successes ' "
65+ log_fail " rngtest: Could not parse valid success count from output "
7666 echo " $TESTNAME FAIL" > " $res_file "
67+ cat " $TMP_OUT "
7768 rm -f " $TMP_BIN " " $TMP_OUT "
7869 exit 1
7970fi
8071
81- log_info " rngtest: FIPS 140-2 successes = $successes "
82- # You can tune this threshold as needed (10 means <1% fail allowed)
83- if [ " $successes " -ge 10 ]; then
84- log_pass " $TESTNAME : Test Passed ($successes FIPS 140-2 successes)"
72+ log_info " FIPS 140-2 successes: $successes / $COUNT "
73+ percent=$( awk " BEGIN {printf \" %.2f\" , ($successes /$COUNT )*100}" )
74+ log_info " Success ratio: $percent %"
75+
76+ if [ " $successes " -ge " $PASS_THRESHOLD " ]; then
77+ log_pass " $TESTNAME : Test Passed ($successes ≥ $PASS_THRESHOLD successes)"
8578 echo " $TESTNAME PASS" > " $res_file "
8679 rm -f " $TMP_BIN " " $TMP_OUT "
8780 exit 0
8881else
89- log_fail " $TESTNAME : Test Failed ($successes FIPS 140-2 successes)"
82+ log_fail " $TESTNAME : Test Failed ($successes < $PASS_THRESHOLD successes)"
9083 echo " $TESTNAME FAIL" > " $res_file "
9184 rm -f " $TMP_BIN " " $TMP_OUT "
9285 exit 1
9386fi
94-
95- log_info " -------------------Completed $TESTNAME Testcase----------------------------"
0 commit comments