Blame SOURCES/libsodium-1.0.18/test/default/verify1.c

rdobuilder 775784
rdobuilder 775784
#define TEST_NAME "verify1"
rdobuilder 775784
#include "cmptest.h"
rdobuilder 775784
rdobuilder 775784
int
rdobuilder 775784
main(void)
rdobuilder 775784
{
rdobuilder 775784
    unsigned char *v16, *v16x;
rdobuilder 775784
    unsigned char *v32, *v32x;
rdobuilder 775784
    unsigned char *v64, *v64x;
rdobuilder 775784
    uint32_t       r;
rdobuilder 775784
    uint8_t        o;
rdobuilder 775784
    int            i;
rdobuilder 775784
rdobuilder 775784
    v16  = (unsigned char *) sodium_malloc(16);
rdobuilder 775784
    v16x = (unsigned char *) sodium_malloc(16);
rdobuilder 775784
    v32  = (unsigned char *) sodium_malloc(32);
rdobuilder 775784
    v32x = (unsigned char *) sodium_malloc(32);
rdobuilder 775784
    v64  = (unsigned char *) sodium_malloc(64);
rdobuilder 775784
    v64x = (unsigned char *) sodium_malloc(64);
rdobuilder 775784
    for (i = 0; i < 10000; i++) {
rdobuilder 775784
        randombytes_buf(v16, 16);
rdobuilder 775784
        randombytes_buf(v32, 32);
rdobuilder 775784
        randombytes_buf(v64, 64);
rdobuilder 775784
rdobuilder 775784
        memcpy(v16x, v16, 16);
rdobuilder 775784
        memcpy(v32x, v32, 32);
rdobuilder 775784
        memcpy(v64x, v64, 64);
rdobuilder 775784
rdobuilder 775784
        if (crypto_verify_16(v16, v16x) != 0 ||
rdobuilder 775784
            crypto_verify_32(v32, v32x) != 0 ||
rdobuilder 775784
            crypto_verify_64(v64, v64x) != 0 ||
rdobuilder 775784
            sodium_memcmp(v16, v16x, 16) != 0 ||
rdobuilder 775784
            sodium_memcmp(v32, v32x, 32) != 0 ||
rdobuilder 775784
            sodium_memcmp(v64, v64x, 64) != 0) {
rdobuilder 775784
            printf("Failed\n");
rdobuilder 775784
        }
rdobuilder 775784
    }
rdobuilder 775784
    printf("OK\n");
rdobuilder 775784
rdobuilder 775784
    for (i = 0; i < 100000; i++) {
rdobuilder 775784
        r = randombytes_random();
rdobuilder 775784
        o = (uint8_t) randombytes_random();
rdobuilder 775784
        if (o == 0) {
rdobuilder 775784
            continue;
rdobuilder 775784
        }
rdobuilder 775784
        v16x[r & 15U] ^= o;
rdobuilder 775784
        v32x[r & 31U] ^= o;
rdobuilder 775784
        v64x[r & 63U] ^= o;
rdobuilder 775784
        if (crypto_verify_16(v16, v16x) != -1 ||
rdobuilder 775784
            crypto_verify_32(v32, v32x) != -1 ||
rdobuilder 775784
            crypto_verify_64(v64, v64x) != -1 ||
rdobuilder 775784
            sodium_memcmp(v16, v16x, 16) != -1 ||
rdobuilder 775784
            sodium_memcmp(v32, v32x, 32) != -1 ||
rdobuilder 775784
            sodium_memcmp(v64, v64x, 64) != -1) {
rdobuilder 775784
            printf("Failed\n");
rdobuilder 775784
        }
rdobuilder 775784
        v16x[r & 15U] ^= o;
rdobuilder 775784
        v32x[r & 31U] ^= o;
rdobuilder 775784
        v64x[r & 63U] ^= o;
rdobuilder 775784
    }
rdobuilder 775784
    printf("OK\n");
rdobuilder 775784
rdobuilder 775784
    assert(crypto_verify_16_bytes() == 16U);
rdobuilder 775784
    assert(crypto_verify_32_bytes() == 32U);
rdobuilder 775784
    assert(crypto_verify_64_bytes() == 64U);
rdobuilder 775784
rdobuilder 775784
    sodium_free(v16);
rdobuilder 775784
    sodium_free(v16x);
rdobuilder 775784
    sodium_free(v32);
rdobuilder 775784
    sodium_free(v32x);
rdobuilder 775784
    sodium_free(v64);
rdobuilder 775784
    sodium_free(v64x);
rdobuilder 775784
rdobuilder 775784
    return 0;
rdobuilder 775784
}