23 #include "../crypto/fipsmodule/rand/internal.h"
24 #include "../crypto/test/file_test.h"
25 #include "../crypto/test/test_util.h"
29 std::string test_type, prediction_resistance, entropy_input_len, nonce_len,
30 personalization_str_len, additional_input_len, returned_bits_len;
31 if (!t->GetInstruction(&test_type,
"AES-256 no df") ||
32 !t->GetInstruction(&prediction_resistance,
"PredictionResistance") ||
33 !t->GetInstruction(&entropy_input_len,
"EntropyInputLen") ||
34 !t->GetInstruction(&nonce_len,
"NonceLen") ||
35 !t->GetInstruction(&personalization_str_len,
36 "PersonalizationStringLen") ||
37 !t->GetInstruction(&additional_input_len,
"AdditionalInputLen") ||
38 !t->GetInstruction(&returned_bits_len,
"ReturnedBitsLen") ||
40 prediction_resistance !=
"False" ||
41 strtoul(entropy_input_len.c_str(),
nullptr, 0) !=
48 std::vector<uint8_t> entropy, nonce, personalization_str, ai1, ai2;
49 if (!t->GetAttribute(&
count,
"COUNT") ||
50 !t->GetBytes(&entropy,
"EntropyInput") ||
51 !t->GetBytes(&nonce,
"Nonce") ||
52 !t->GetBytes(&personalization_str,
"PersonalizationString") ||
53 !t->GetBytes(&ai1,
"AdditionalInput") ||
54 !t->GetBytes(&ai2,
"AdditionalInput/2") ||
55 entropy.size() * 8 != strtoul(entropy_input_len.c_str(),
nullptr, 0) ||
57 personalization_str.size() * 8 !=
58 strtoul(personalization_str_len.c_str(),
nullptr, 0) ||
59 ai1.size() != ai2.size() ||
60 ai1.size() * 8 != strtoul(additional_input_len.c_str(),
nullptr, 0)) {
66 personalization_str.size() > 0 ? personalization_str.data()
68 personalization_str.size());
70 uint64_t out_len = strtoul(returned_bits_len.c_str(),
nullptr, 0);
71 if (out_len == 0 || (out_len & 7) != 0) {
76 std::vector<uint8_t>
out;
80 ai1.size() > 0 ? ai1.data() :
nullptr, ai1.size());
82 ai2.size() > 0 ? ai2.data() :
nullptr, ai2.size());
84 printf(
"%s", t->CurrentTestToString().c_str());
91 fprintf(
stderr,
"usage: %s <test file>\n",
arg);
97 return usage(argv[0]);