mirror of
https://github.com/jedisct1/libsodium.git
synced 2024-12-23 20:15:19 -07:00
Less deterministic crypto_verify_*() tests
This commit is contained in:
parent
65fbe15fa3
commit
1c8e34577f
@ -8,29 +8,72 @@ static unsigned char v64[64], v64x[64];
|
|||||||
|
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
randombytes_buf(v16, sizeof v16);
|
unsigned char *v16, *v16x;
|
||||||
randombytes_buf(v32, sizeof v32);
|
unsigned char *v32, *v32x;
|
||||||
randombytes_buf(v64, sizeof v64);
|
unsigned char *v64, *v64x;
|
||||||
|
uint32_t r;
|
||||||
|
uint8_t o;
|
||||||
|
int i;
|
||||||
|
|
||||||
memcpy(v16x, v16, sizeof v16);
|
v16 = (unsigned char *) sodium_malloc(16);
|
||||||
memcpy(v32x, v32, sizeof v32);
|
v16x = (unsigned char *) sodium_malloc(16);
|
||||||
memcpy(v64x, v64, sizeof v64);
|
v32 = (unsigned char *) sodium_malloc(32);
|
||||||
|
v32x = (unsigned char *) sodium_malloc(32);
|
||||||
|
v64 = (unsigned char *) sodium_malloc(64);
|
||||||
|
v64x = (unsigned char *) sodium_malloc(64);
|
||||||
|
for (i = 0; i < 100000; i++) {
|
||||||
|
randombytes_buf(v16, 16);
|
||||||
|
randombytes_buf(v32, 32);
|
||||||
|
randombytes_buf(v64, 64);
|
||||||
|
|
||||||
printf("%d\n", crypto_verify_16(v16, v16x));
|
memcpy(v16x, v16, 16);
|
||||||
printf("%d\n", crypto_verify_32(v32, v32x));
|
memcpy(v32x, v32, 32);
|
||||||
printf("%d\n", crypto_verify_64(v64, v64x));
|
memcpy(v64x, v64, 64);
|
||||||
|
|
||||||
v16x[randombytes_random() & 15U]++;
|
if (crypto_verify_16(v16, v16x) != 0 ||
|
||||||
v32x[randombytes_random() & 31U]++;
|
crypto_verify_32(v32, v32x) != 0 ||
|
||||||
v64x[randombytes_random() & 63U]++;
|
crypto_verify_64(v64, v64x) != 0 ||
|
||||||
|
sodium_memcmp(v16, v16x, 16) != 0 ||
|
||||||
|
sodium_memcmp(v32, v32x, 32) != 0 ||
|
||||||
|
sodium_memcmp(v64, v64x, 64) != 0) {
|
||||||
|
printf("Failed\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
printf("OK\n");
|
||||||
|
|
||||||
printf("%d\n", crypto_verify_16(v16, v16x));
|
for (i = 0; i < 100000; i++) {
|
||||||
printf("%d\n", crypto_verify_32(v32, v32x));
|
r = randombytes_random();
|
||||||
printf("%d\n", crypto_verify_64(v64, v64x));
|
o = (uint8_t) randombytes_random();
|
||||||
|
if (o == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
v16x[r & 15U] ^= o;
|
||||||
|
v32x[r & 31U] ^= o;
|
||||||
|
v64x[r & 63U] ^= o;
|
||||||
|
if (crypto_verify_16(v16, v16x) != -1 ||
|
||||||
|
crypto_verify_32(v32, v32x) != -1 ||
|
||||||
|
crypto_verify_64(v64, v64x) != -1 ||
|
||||||
|
sodium_memcmp(v16, v16x, 16) != -1 ||
|
||||||
|
sodium_memcmp(v32, v32x, 32) != -1 ||
|
||||||
|
sodium_memcmp(v64, v64x, 64) != -1) {
|
||||||
|
printf("Failed\n");
|
||||||
|
}
|
||||||
|
v16x[r & 15U] ^= o;
|
||||||
|
v32x[r & 31U] ^= o;
|
||||||
|
v64x[r & 63U] ^= o;
|
||||||
|
}
|
||||||
|
printf("OK\n");
|
||||||
|
|
||||||
assert(crypto_verify_16_bytes() == 16U);
|
assert(crypto_verify_16_bytes() == 16U);
|
||||||
assert(crypto_verify_32_bytes() == 32U);
|
assert(crypto_verify_32_bytes() == 32U);
|
||||||
assert(crypto_verify_64_bytes() == 64U);
|
assert(crypto_verify_64_bytes() == 64U);
|
||||||
|
|
||||||
|
sodium_free(v16);
|
||||||
|
sodium_free(v16x);
|
||||||
|
sodium_free(v32);
|
||||||
|
sodium_free(v32x);
|
||||||
|
sodium_free(v64);
|
||||||
|
sodium_free(v64x);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,2 @@
|
|||||||
0
|
OK
|
||||||
0
|
OK
|
||||||
0
|
|
||||||
-1
|
|
||||||
-1
|
|
||||||
-1
|
|
||||||
|
Loading…
Reference in New Issue
Block a user