提交 a24c1e22 编写于 作者: P Pauli 提交者: Richard Levitte

Update the internal siphash tests to use the framework's output.

Reviewed-by: NMatt Caswell <matt@openssl.org>
Reviewed-by: NRichard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/3212)
上级 026aebb3
...@@ -212,18 +212,6 @@ static TESTDATA tests[] = { ...@@ -212,18 +212,6 @@ static TESTDATA tests[] = {
{ 63, { 16, { 0x51, 0x50, 0xd1, 0x77, 0x2f, 0x50, 0x83, 0x4a, 0x50, 0x3e, 0x06, 0x9a, 0x97, 0x3f, 0xbd, 0x7c, } } } { 63, { 16, { 0x51, 0x50, 0xd1, 0x77, 0x2f, 0x50, 0x83, 0x4a, 0x50, 0x3e, 0x06, 0x9a, 0x97, 0x3f, 0xbd, 0x7c, } } }
}; };
static void hex_out(BIO *b, char *prefix, int width, unsigned char* data, size_t n)
{
/*
* this could be modified to handle multiple lines, but as it is
* used here, this only displays up to 16 bytes
*/
BIO_printf(b, "%s", prefix);
BIO_hex_string(b, 0, width, data, n);
BIO_printf(b, "\n");
}
static int test_siphash(int idx) static int test_siphash(int idx)
{ {
SIPHASH siphash; SIPHASH siphash;
...@@ -237,10 +225,13 @@ static int test_siphash(int idx) ...@@ -237,10 +225,13 @@ static int test_siphash(int idx)
size_t i; size_t i;
if (expectedlen != SIPHASH_MIN_DIGEST_SIZE && if (expectedlen != SIPHASH_MIN_DIGEST_SIZE &&
expectedlen != SIPHASH_MAX_DIGEST_SIZE) expectedlen != SIPHASH_MAX_DIGEST_SIZE) {
TEST_info("size %" OSSLzu " vs %d and %d", expectedlen,
SIPHASH_MIN_DIGEST_SIZE, SIPHASH_MAX_DIGEST_SIZE);
return 0; return 0;
}
if (inlen > sizeof(in)) if (!TEST_int_le(inlen, sizeof(in)))
return 0; return 0;
/* key and in data are 00 01 02 ... */ /* key and in data are 00 01 02 ... */
...@@ -250,39 +241,23 @@ static int test_siphash(int idx) ...@@ -250,39 +241,23 @@ static int test_siphash(int idx)
for (i = 0; i < inlen; i++) for (i = 0; i < inlen; i++)
in[i] = i; in[i] = i;
if (!SipHash_Init(&siphash, key, expectedlen, 0, 0)) { if (!TEST_true(SipHash_Init(&siphash, key, expectedlen, 0, 0)))
BIO_printf(b_stderr, "SipHash_Init failed\n");
return 0; return 0;
}
SipHash_Update(&siphash, in, inlen); SipHash_Update(&siphash, in, inlen);
if (!SipHash_Final(&siphash, out, expectedlen)) { if (!TEST_true(SipHash_Final(&siphash, out, expectedlen))
BIO_printf(b_stderr, "SipHash_Final failed\n"); || !TEST_mem_eq(out, expectedlen, expected, expectedlen))
return 0; return 0;
}
if (memcmp(out, expected, expectedlen) != 0) {
BIO_printf(b_stderr, "SipHash test #%d failed.\n", idx);
hex_out(b_stderr, "got: ", 16, out, expectedlen);
hex_out(b_stderr, "expected: ", 16, expected, expectedlen);
return 0;
}
if (inlen > 16) { if (inlen > 16) {
if (!SipHash_Init(&siphash, key, expectedlen, 0, 0)) { if (!TEST_true(SipHash_Init(&siphash, key, expectedlen, 0, 0)))
BIO_printf(b_stderr, "SipHash_Init failed\n");
return 0; return 0;
}
SipHash_Update(&siphash, in, 1); SipHash_Update(&siphash, in, 1);
SipHash_Update(&siphash, in+1, inlen-1); SipHash_Update(&siphash, in+1, inlen-1);
if (!SipHash_Final(&siphash, out, expectedlen)) { if (!TEST_true(SipHash_Final(&siphash, out, expectedlen)))
BIO_printf(b_stderr, "SipHash_Final failed\n");
return 0; return 0;
}
if (memcmp(out, expected, expectedlen) != 0) { if (!TEST_mem_eq(out, expectedlen, expected, expectedlen)) {
BIO_printf(b_stderr, "SipHash test #%d/1+(N-1) failed.\n", idx); TEST_info("SipHash test #%d/1+(N-1) failed.", idx);
hex_out(b_stderr, "got: ", 16, out, expectedlen);
hex_out(b_stderr, "expected: ", 16, expected, expectedlen);
return 0; return 0;
} }
} }
...@@ -290,41 +265,29 @@ static int test_siphash(int idx) ...@@ -290,41 +265,29 @@ static int test_siphash(int idx)
if (inlen > 32) { if (inlen > 32) {
size_t half = inlen / 2; size_t half = inlen / 2;
if (!SipHash_Init(&siphash, key, expectedlen, 0, 0)) { if (!TEST_true(SipHash_Init(&siphash, key, expectedlen, 0, 0)))
BIO_printf(b_stderr, "SipHash_Init failed\n");
return 0; return 0;
}
SipHash_Update(&siphash, in, half); SipHash_Update(&siphash, in, half);
SipHash_Update(&siphash, in+half, inlen-half); SipHash_Update(&siphash, in+half, inlen-half);
if (!SipHash_Final(&siphash, out, expectedlen)) { if (!TEST_true(SipHash_Final(&siphash, out, expectedlen)))
BIO_printf(b_stderr, "SipHash_Final failed\n");
return 0; return 0;
}
if (memcmp(out, expected, expectedlen) != 0) { if (!TEST_mem_eq(out, expectedlen, expected, expectedlen)) {
BIO_printf(b_stderr, "SipHash test #%d/2 failed.\n", idx); TEST_info("SipHash test #%d/2 failed.", idx);
hex_out(b_stderr, "got: ", 16, out, expectedlen);
hex_out(b_stderr, "expected: ", 16, expected, expectedlen);
return 0; return 0;
} }
for (half = 16; half < inlen; half += 16) { for (half = 16; half < inlen; half += 16) {
if (!SipHash_Init(&siphash, key, expectedlen, 0, 0)) { if (!TEST_true(SipHash_Init(&siphash, key, expectedlen, 0, 0)))
BIO_printf(b_stderr, "SipHash_Init failed\n");
return 0; return 0;
}
SipHash_Update(&siphash, in, half); SipHash_Update(&siphash, in, half);
SipHash_Update(&siphash, in+half, inlen-half); SipHash_Update(&siphash, in+half, inlen-half);
if (!SipHash_Final(&siphash, out, expectedlen)) { if (!TEST_true(SipHash_Final(&siphash, out, expectedlen)))
BIO_printf(b_stderr, "SipHash_Final failed\n");
return 0; return 0;
}
if (memcmp(out, expected, expectedlen) != 0) { if (!TEST_mem_eq(out, expectedlen, expected, expectedlen)) {
BIO_printf(b_stderr, "SipHash test #%d/%zu+%zu failed.\n", TEST_info("SipHash test #%d/%" OSSLzu "+%" OSSLzu " failed.",
idx, half, inlen-half); idx, half, inlen-half);
hex_out(b_stderr, "got: ", 16, out, expectedlen);
hex_out(b_stderr, "expected: ", 16, expected, expectedlen);
return 0; return 0;
} }
} }
...@@ -340,57 +303,23 @@ static int test_siphash_basic(void) ...@@ -340,57 +303,23 @@ static int test_siphash_basic(void)
unsigned char output[SIPHASH_MAX_DIGEST_SIZE]; unsigned char output[SIPHASH_MAX_DIGEST_SIZE];
/* Use invalid hash size */ /* Use invalid hash size */
if (SipHash_Init(&siphash, key, 4, 0, 0)) { return TEST_int_eq(SipHash_Init(&siphash, key, 4, 0, 0), 0)
BIO_printf(b_stderr, "SipHash_Init(output size = 4) should have failed\n"); /* Use hash size = 8 */
return 0; && TEST_true(SipHash_Init(&siphash, key, 8, 0, 0))
} && TEST_true(SipHash_Final(&siphash, output, 8))
&& TEST_int_eq(SipHash_Final(&siphash, output, 16), 0)
/* Use hash size = 8 */
if (!SipHash_Init(&siphash, key, 8, 0, 0)) { /* Use hash size = 16 */
BIO_printf(b_stderr, "SipHash_Init(output size = 8) should have succeeded\n"); && TEST_true(SipHash_Init(&siphash, key, 16, 0, 0))
return 0; && TEST_int_eq(SipHash_Final(&siphash, output, 8), 0)
} && TEST_true(SipHash_Final(&siphash, output, 16))
if (!SipHash_Final(&siphash, output, 8)) {
BIO_printf(b_stderr, "SipHash_Final(output size = 8) should have succeeded\n"); /* Use hash size = 0 (default = 16) */
return 0; && TEST_true(SipHash_Init(&siphash, key, 0, 0, 0))
} && TEST_int_eq(SipHash_Final(&siphash, output, 8), 0)
if (SipHash_Final(&siphash, output, 16)) { && TEST_true(SipHash_Final(&siphash, output, 16));
BIO_printf(b_stderr, "SipHash_Final(output size = 16) should have failed\n");
return 0;
}
/* Use hash size = 16 */
if (!SipHash_Init(&siphash, key, 16, 0, 0)) {
BIO_printf(b_stderr, "SipHash_Init(output size = 16) should have succeeded\n");
return 0;
}
if (SipHash_Final(&siphash, output, 8)) {
BIO_printf(b_stderr, "SipHash_Final(output size = 8) should have failed\n");
return 0;
}
if (!SipHash_Final(&siphash, output, 16)) {
BIO_printf(b_stderr, "SipHash_Final(output size = 16) should have succeeded\n");
return 0;
}
/* Use hash size = 0 (default = 16) */
if (!SipHash_Init(&siphash, key, 0, 0, 0)) {
BIO_printf(b_stderr, "SipHash_Init(output size = 0) should have succeeded\n");
return 0;
}
if (SipHash_Final(&siphash, output, 8)) {
BIO_printf(b_stderr, "SipHash_Final(output size = 8) should have failed\n");
return 0;
}
if (!SipHash_Final(&siphash, output, 16)) {
BIO_printf(b_stderr, "SipHash_Final(output size = 16) should have succeeded\n");
return 0;
}
return 1;
} }
int test_main(int argc, char **argv) int test_main(int argc, char **argv)
{ {
int result = 0; int result = 0;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册