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

rdobuilder 775784
#define TEST_NAME "scalarmult_ristretto255"
rdobuilder 775784
#include "cmptest.h"
rdobuilder 775784
rdobuilder 775784
#define B_HEX "e2f2ae0a6abc4e71a884a961c500515f58e30b6aa582dd8db6a65945e08d2d76"
rdobuilder 775784
rdobuilder 775784
int
rdobuilder 775784
main(void)
rdobuilder 775784
{
rdobuilder 775784
    unsigned char *b =
rdobuilder 775784
        (unsigned char *) sodium_malloc(crypto_scalarmult_ristretto255_BYTES);
rdobuilder 775784
    unsigned char *n =
rdobuilder 775784
        (unsigned char *) sodium_malloc(crypto_scalarmult_ristretto255_SCALARBYTES);
rdobuilder 775784
    unsigned char *p =
rdobuilder 775784
        (unsigned char *) sodium_malloc(crypto_scalarmult_ristretto255_BYTES);
rdobuilder 775784
    unsigned char *p2 =
rdobuilder 775784
        (unsigned char *) sodium_malloc(crypto_scalarmult_ristretto255_BYTES);
rdobuilder 775784
    char          *hex =
rdobuilder 775784
        (char *) sodium_malloc(2 * crypto_scalarmult_ristretto255_BYTES + 1);
rdobuilder 775784
    int            i;
rdobuilder 775784
rdobuilder 775784
    sodium_hex2bin(b, crypto_scalarmult_ristretto255_BYTES,
rdobuilder 775784
                   B_HEX, sizeof B_HEX - (size_t) 1U, NULL, NULL, NULL);
rdobuilder 775784
    memset(n, 0, crypto_scalarmult_ristretto255_SCALARBYTES);
rdobuilder 775784
    for (i = 0; i < 16; i++) {
rdobuilder 775784
        crypto_scalarmult_ristretto255_base(p, n);
rdobuilder 775784
        if (crypto_scalarmult_ristretto255(p2, n, b) != 0) {
rdobuilder 775784
            printf("crypto_scalarmult_ristretto255(%d) != 0\n", i);
rdobuilder 775784
        }
rdobuilder 775784
        sodium_bin2hex(hex, 2 * crypto_scalarmult_ristretto255_BYTES + 1,
rdobuilder 775784
                       p, crypto_scalarmult_ristretto255_BYTES);
rdobuilder 775784
        printf("%s\n", hex);
rdobuilder 775784
        assert(memcmp(p, p2, crypto_scalarmult_ristretto255_BYTES) == 0);
rdobuilder 775784
        sodium_increment(n, crypto_scalarmult_ristretto255_SCALARBYTES);
rdobuilder 775784
    }
rdobuilder 775784
rdobuilder 775784
    memset(p, 0xfe, crypto_scalarmult_ristretto255_BYTES);
rdobuilder 775784
    assert(crypto_scalarmult_ristretto255(guard_page, n, p) == -1);
rdobuilder 775784
rdobuilder 775784
    sodium_free(hex);
rdobuilder 775784
    sodium_free(p2);
rdobuilder 775784
    sodium_free(p);
rdobuilder 775784
    sodium_free(n);
rdobuilder 775784
    sodium_free(b);
rdobuilder 775784
rdobuilder 775784
    assert(crypto_scalarmult_ristretto255_BYTES == crypto_scalarmult_ristretto255_bytes());
rdobuilder 775784
    assert(crypto_scalarmult_ristretto255_SCALARBYTES == crypto_scalarmult_ristretto255_scalarbytes());
rdobuilder 775784
rdobuilder 775784
    printf("OK\n");
rdobuilder 775784
rdobuilder 775784
    return 0;
rdobuilder 775784
}