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

rdobuilder 775784
rdobuilder 775784
#define TEST_NAME "scalarmult"
rdobuilder 775784
#include "cmptest.h"
rdobuilder 775784
rdobuilder 775784
static const unsigned char alicesk[crypto_scalarmult_BYTES] = {
rdobuilder 775784
    0x77, 0x07, 0x6d, 0x0a, 0x73, 0x18, 0xa5, 0x7d, 0x3c, 0x16, 0xc1,
rdobuilder 775784
    0x72, 0x51, 0xb2, 0x66, 0x45, 0xdf, 0x4c, 0x2f, 0x87, 0xeb, 0xc0,
rdobuilder 775784
    0x99, 0x2a, 0xb1, 0x77, 0xfb, 0xa5, 0x1d, 0xb9, 0x2c, 0x2a
rdobuilder 775784
};
rdobuilder 775784
rdobuilder 775784
static const unsigned char bobsk[crypto_scalarmult_BYTES] = {
rdobuilder 775784
    0x5d, 0xab, 0x08, 0x7e, 0x62, 0x4a, 0x8a, 0x4b, 0x79, 0xe1, 0x7f,
rdobuilder 775784
    0x8b, 0x83, 0x80, 0x0e, 0xe6, 0x6f, 0x3b, 0xb1, 0x29, 0x26, 0x18,
rdobuilder 775784
    0xb6, 0xfd, 0x1c, 0x2f, 0x8b, 0x27, 0xff, 0x88, 0xe0, 0xeb
rdobuilder 775784
};
rdobuilder 775784
rdobuilder 775784
static const unsigned char small_order_p[crypto_scalarmult_BYTES] = {
rdobuilder 775784
    0xe0, 0xeb, 0x7a, 0x7c, 0x3b, 0x41, 0xb8, 0xae, 0x16, 0x56, 0xe3,
rdobuilder 775784
    0xfa, 0xf1, 0x9f, 0xc4, 0x6a, 0xda, 0x09, 0x8d, 0xeb, 0x9c, 0x32,
rdobuilder 775784
    0xb1, 0xfd, 0x86, 0x62, 0x05, 0x16, 0x5f, 0x49, 0xb8, 0x00
rdobuilder 775784
};
rdobuilder 775784
rdobuilder 775784
static char hex[crypto_scalarmult_BYTES * 2 + 1];
rdobuilder 775784
rdobuilder 775784
int
rdobuilder 775784
main(void)
rdobuilder 775784
{
rdobuilder 775784
    unsigned char *alicepk =
rdobuilder 775784
        (unsigned char *) sodium_malloc(crypto_scalarmult_BYTES);
rdobuilder 775784
    unsigned char *bobpk =
rdobuilder 775784
        (unsigned char *) sodium_malloc(crypto_scalarmult_BYTES);
rdobuilder 775784
    unsigned char *k = (unsigned char *) sodium_malloc(crypto_scalarmult_BYTES);
rdobuilder 775784
    int            ret;
rdobuilder 775784
rdobuilder 775784
    assert(alicepk != NULL && bobpk != NULL && k != NULL);
rdobuilder 775784
rdobuilder 775784
    crypto_scalarmult_base(alicepk, alicesk);
rdobuilder 775784
    sodium_bin2hex(hex, sizeof hex, alicepk, crypto_scalarmult_BYTES);
rdobuilder 775784
    printf("%s\n", hex);
rdobuilder 775784
rdobuilder 775784
    crypto_scalarmult_base(bobpk, bobsk);
rdobuilder 775784
    sodium_bin2hex(hex, sizeof hex, bobpk, crypto_scalarmult_BYTES);
rdobuilder 775784
    printf("%s\n", hex);
rdobuilder 775784
rdobuilder 775784
    ret = crypto_scalarmult(k, alicesk, bobpk);
rdobuilder 775784
    assert(ret == 0);
rdobuilder 775784
    sodium_bin2hex(hex, sizeof hex, k, crypto_scalarmult_BYTES);
rdobuilder 775784
    printf("%s\n", hex);
rdobuilder 775784
rdobuilder 775784
    ret = crypto_scalarmult(k, bobsk, alicepk);
rdobuilder 775784
    assert(ret == 0);
rdobuilder 775784
    sodium_bin2hex(hex, sizeof hex, k, crypto_scalarmult_BYTES);
rdobuilder 775784
    printf("%s\n", hex);
rdobuilder 775784
rdobuilder 775784
    ret = crypto_scalarmult(k, bobsk, small_order_p);
rdobuilder 775784
    assert(ret == -1);
rdobuilder 775784
rdobuilder 775784
    sodium_free(bobpk);
rdobuilder 775784
    sodium_free(alicepk);
rdobuilder 775784
    sodium_free(k);
rdobuilder 775784
rdobuilder 775784
    assert(crypto_scalarmult_bytes() > 0U);
rdobuilder 775784
    assert(crypto_scalarmult_scalarbytes() > 0U);
rdobuilder 775784
    assert(strcmp(crypto_scalarmult_primitive(), "curve25519") == 0);
rdobuilder 775784
    assert(crypto_scalarmult_bytes() == crypto_scalarmult_curve25519_bytes());
rdobuilder 775784
    assert(crypto_scalarmult_scalarbytes() ==
rdobuilder 775784
           crypto_scalarmult_curve25519_scalarbytes());
rdobuilder 775784
    assert(crypto_scalarmult_bytes() == crypto_scalarmult_scalarbytes());
rdobuilder 775784
rdobuilder 775784
    return 0;
rdobuilder 775784
}