summaryrefslogtreecommitdiff
path: root/validat3.cpp
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2018-07-29 22:35:36 -0400
committerJeffrey Walton <noloader@gmail.com>2018-07-29 22:35:36 -0400
commitf290746a363a971dc55355fd829eb0f3b936eb8e (patch)
tree13ab1f208402a118d6cf6b50e5c52cb76668e0ad /validat3.cpp
parentbf37ccda6d9301a16012f7ed2c2fa20ee8079048 (diff)
downloadcryptopp-git-f290746a363a971dc55355fd829eb0f3b936eb8e.tar.gz
Remove Coverity worakaround StreamState
Use std::ostringstream instead. Eventually I'd like to see the output stream passed into the function of interest. It will avoid problems on some mobile OSes that don't have standard inputs and outputs.
Diffstat (limited to 'validat3.cpp')
-rw-r--r--validat3.cpp132
1 files changed, 66 insertions, 66 deletions
diff --git a/validat3.cpp b/validat3.cpp
index e393715d..218b08c1 100644
--- a/validat3.cpp
+++ b/validat3.cpp
@@ -1061,6 +1061,9 @@ bool TestMersenne()
bool pass = true, fail = false;
member_ptr<RandomNumberGenerator> rng;
+ std::ostringstream oss;
+ oss << std::setiosflags(std::ios::fixed) << std::setprecision(6);
+
try {rng.reset(new PadlockRNG);}
catch (const PadlockRNG_Err &) {}
if (rng.get())
@@ -1081,37 +1084,37 @@ bool TestMersenne()
fail = !(msr & (1 << 6U));
pass &= !fail;
if (fail)
- std::cout << "FAILED:";
+ oss << "FAILED:";
else
- std::cout << "passed:";
- std::cout << " VIA RNG is activated\n";
+ oss << "passed:";
+ oss << " VIA RNG is activated\n";
// Bit 13 should be unset
fail = !!(msr & (1 << 13U));
pass &= !fail;
if (fail)
- std::cout << "FAILED:";
+ oss << "FAILED:";
else
- std::cout << "passed:";
- std::cout << " von Neumann corrector is activated\n";
+ oss << "passed:";
+ oss << " von Neumann corrector is activated\n";
// Bit 14 should be unset
fail = !!(msr & (1 << 14U));
pass &= !fail;
if (fail)
- std::cout << "FAILED:";
+ oss << "FAILED:";
else
- std::cout << "passed:";
- std::cout << " String filter is deactivated\n";
+ oss << "passed:";
+ oss << " String filter is deactivated\n";
// Bit 12:10 should be unset
fail = !!(msr & (0x7 << 10U));
pass &= !fail;
if (fail)
- std::cout << "FAILED:";
+ oss << "FAILED:";
else
- std::cout << "passed:";
- std::cout << " Bias voltage is unmodified\n";
+ oss << "passed:";
+ oss << " Bias voltage is unmodified\n";
fail = false;
if (t == zero || t == one)
@@ -1119,10 +1122,10 @@ bool TestMersenne()
pass &= !fail;
if (fail)
- std::cout << "FAILED:";
+ oss << "FAILED:";
else
- std::cout << "passed:";
- std::cout << " All 0's or all 1's test\n";
+ oss << "passed:";
+ oss << " All 0's or all 1's test\n";
MeterFilter meter(new Redirector(TheBitBucket()));
Deflator deflator(new Redirector(meter));
@@ -1141,16 +1144,12 @@ bool TestMersenne()
if (mv < 0.98f)
fail = true;
- // Coverity finding, also see http://stackoverflow.com/a/34509163/608639.
- StreamState ss(std::cout);
- std::cout << std::setiosflags(std::ios::fixed) << std::setprecision(6);
-
pass &= !fail;
if (fail)
- std::cout << "FAILED:";
+ oss << "FAILED:";
else
- std::cout << "passed:";
- std::cout << " Maurer Randomness Test returned value " << mv << "\n";
+ oss << "passed:";
+ oss << " Maurer Randomness Test returned value " << mv << "\n";
fail = false;
if (meter.GetTotalBytes() < SIZE)
@@ -1158,10 +1157,10 @@ bool TestMersenne()
pass &= !fail;
if (fail)
- std::cout << "FAILED:";
+ oss << "FAILED:";
else
- std::cout << "passed:";
- std::cout << " " << SIZE << " generated bytes compressed to " << meter.GetTotalBytes() << " bytes by DEFLATE\n";
+ oss << "passed:";
+ oss << " " << SIZE << " generated bytes compressed to " << meter.GetTotalBytes() << " bytes by DEFLATE\n";
try
{
@@ -1175,10 +1174,10 @@ bool TestMersenne()
pass &= !fail;
if (fail)
- std::cout << "FAILED:";
+ oss << "FAILED:";
else
- std::cout << "passed:";
- std::cout << " discarded " << SIZE << " bytes\n";
+ oss << "passed:";
+ oss << " discarded " << SIZE << " bytes\n";
try
{
@@ -1202,14 +1201,15 @@ bool TestMersenne()
pass &= !fail;
if (fail)
- std::cout << "FAILED:";
+ oss << "FAILED:";
else
- std::cout << "passed:";
- std::cout << " GenerateWord32 and Crop\n";
+ oss << "passed:";
+ oss << " GenerateWord32 and Crop\n";
}
else
- std::cout << "Padlock RNG generator not available, skipping test.\n";
+ oss << "Padlock RNG generator not available, skipping test.\n";
+ std::cout << oss.str();
return pass;
}
@@ -1220,6 +1220,9 @@ bool TestRDRAND()
bool pass = true, fail = false;
member_ptr<RandomNumberGenerator> rng;
+ std::ostringstream oss;
+ oss << std::setiosflags(std::ios::fixed) << std::setprecision(6);
+
try {rng.reset(new RDRAND);}
catch (const RDRAND_Err &) {}
if (rng.get())
@@ -1243,16 +1246,12 @@ bool TestRDRAND()
if (mv < 0.98f)
fail = true;
- // Coverity finding, also see http://stackoverflow.com/a/34509163/608639.
- StreamState ss(std::cout);
- std::cout << std::setiosflags(std::ios::fixed) << std::setprecision(6);
-
pass &= !fail;
if (fail)
- std::cout << "FAILED:";
+ oss << "FAILED:";
else
- std::cout << "passed:";
- std::cout << " Maurer Randomness Test returned value " << mv << "\n";
+ oss << "passed:";
+ oss << " Maurer Randomness Test returned value " << mv << "\n";
fail = false;
if (meter.GetTotalBytes() < SIZE)
@@ -1260,10 +1259,10 @@ bool TestRDRAND()
pass &= !fail;
if (fail)
- std::cout << "FAILED:";
+ oss << "FAILED:";
else
- std::cout << "passed:";
- std::cout << " " << SIZE << " generated bytes compressed to " << meter.GetTotalBytes() << " bytes by DEFLATE\n";
+ oss << "passed:";
+ oss << " " << SIZE << " generated bytes compressed to " << meter.GetTotalBytes() << " bytes by DEFLATE\n";
try
{
@@ -1277,10 +1276,10 @@ bool TestRDRAND()
pass &= !fail;
if (fail)
- std::cout << "FAILED:";
+ oss << "FAILED:";
else
- std::cout << "passed:";
- std::cout << " discarded " << SIZE << " bytes\n";
+ oss << "passed:";
+ oss << " discarded " << SIZE << " bytes\n";
try
{
@@ -1304,14 +1303,15 @@ bool TestRDRAND()
pass &= !fail;
if (fail)
- std::cout << "FAILED:";
+ oss << "FAILED:";
else
- std::cout << "passed:";
- std::cout << " GenerateWord32 and Crop\n";
+ oss << "passed:";
+ oss << " GenerateWord32 and Crop\n";
}
else
- std::cout << "RDRAND generator not available, skipping test.\n";
+ oss << "RDRAND generator not available, skipping test.\n";
+ std::cout << oss.str();
return pass;
}
@@ -1322,6 +1322,9 @@ bool TestRDSEED()
bool pass = true, fail = false;
member_ptr<RandomNumberGenerator> rng;
+ std::ostringstream oss;
+ oss << std::setiosflags(std::ios::fixed) << std::setprecision(6);
+
try {rng.reset(new RDSEED);}
catch (const RDSEED_Err &) {}
if (rng.get())
@@ -1345,16 +1348,12 @@ bool TestRDSEED()
if (mv < 0.98f)
fail = true;
- // Coverity finding, also see http://stackoverflow.com/a/34509163/608639.
- StreamState ss(std::cout);
- std::cout << std::setiosflags(std::ios::fixed) << std::setprecision(6);
-
pass &= !fail;
if (fail)
- std::cout << "FAILED:";
+ oss << "FAILED:";
else
- std::cout << "passed:";
- std::cout << " Maurer Randomness Test returned value " << mv << "\n";
+ oss << "passed:";
+ oss << " Maurer Randomness Test returned value " << mv << "\n";
fail = false;
if (meter.GetTotalBytes() < SIZE)
@@ -1362,10 +1361,10 @@ bool TestRDSEED()
pass &= !fail;
if (fail)
- std::cout << "FAILED:";
+ oss << "FAILED:";
else
- std::cout << "passed:";
- std::cout << " " << SIZE << " generated bytes compressed to " << meter.GetTotalBytes() << " bytes by DEFLATE\n";
+ oss << "passed:";
+ oss << " " << SIZE << " generated bytes compressed to " << meter.GetTotalBytes() << " bytes by DEFLATE\n";
try
{
@@ -1379,10 +1378,10 @@ bool TestRDSEED()
pass &= !fail;
if (fail)
- std::cout << "FAILED:";
+ oss << "FAILED:";
else
- std::cout << "passed:";
- std::cout << " discarded " << SIZE << " bytes\n";
+ oss << "passed:";
+ oss << " discarded " << SIZE << " bytes\n";
try
{
@@ -1406,14 +1405,15 @@ bool TestRDSEED()
pass &= !fail;
if (fail)
- std::cout << "FAILED:";
+ oss << "FAILED:";
else
- std::cout << "passed:";
- std::cout << " GenerateWord32 and Crop\n";
+ oss << "passed:";
+ oss << " GenerateWord32 and Crop\n";
}
else
- std::cout << "RDSEED generator not available, skipping test.\n";
+ oss << "RDSEED generator not available, skipping test.\n";
+ std::cout << oss.str();
return pass;
}
#endif