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

rdobuilder 775784
rdobuilder 775784
#define TEST_NAME "box"
rdobuilder 775784
#include "cmptest.h"
rdobuilder 775784
rdobuilder 775784
static const unsigned char alicesk[32] = {
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 bobpk[32] = {
rdobuilder 775784
    0xde, 0x9e, 0xdb, 0x7d, 0x7b, 0x7d, 0xc1, 0xb4, 0xd3, 0x5b, 0x61,
rdobuilder 775784
    0xc2, 0xec, 0xe4, 0x35, 0x37, 0x3f, 0x83, 0x43, 0xc8, 0x5b, 0x78,
rdobuilder 775784
    0x67, 0x4d, 0xad, 0xfc, 0x7e, 0x14, 0x6f, 0x88, 0x2b, 0x4f
rdobuilder 775784
};
rdobuilder 775784
rdobuilder 775784
static const unsigned char small_order_p[crypto_box_PUBLICKEYBYTES] = {
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 const unsigned char nonce[24] = { 0x69, 0x69, 0x6e, 0xe9, 0x55, 0xb6,
rdobuilder 775784
                                         0x2b, 0x73, 0xcd, 0x62, 0xbd, 0xa8,
rdobuilder 775784
                                         0x75, 0xfc, 0x73, 0xd6, 0x82, 0x19,
rdobuilder 775784
                                         0xe0, 0x03, 0x6b, 0x7a, 0x0b, 0x37 };
rdobuilder 775784
rdobuilder 775784
/* API requires first 32 bytes to be 0 */
rdobuilder 775784
static const unsigned char m[163] = {
rdobuilder 775784
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
rdobuilder 775784
    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
rdobuilder 775784
    0,    0,    0,    0,    0,    0,    0,    0,    0xbe, 0x07, 0x5f, 0xc5,
rdobuilder 775784
    0x3c, 0x81, 0xf2, 0xd5, 0xcf, 0x14, 0x13, 0x16, 0xeb, 0xeb, 0x0c, 0x7b,
rdobuilder 775784
    0x52, 0x28, 0xc5, 0x2a, 0x4c, 0x62, 0xcb, 0xd4, 0x4b, 0x66, 0x84, 0x9b,
rdobuilder 775784
    0x64, 0x24, 0x4f, 0xfc, 0xe5, 0xec, 0xba, 0xaf, 0x33, 0xbd, 0x75, 0x1a,
rdobuilder 775784
    0x1a, 0xc7, 0x28, 0xd4, 0x5e, 0x6c, 0x61, 0x29, 0x6c, 0xdc, 0x3c, 0x01,
rdobuilder 775784
    0x23, 0x35, 0x61, 0xf4, 0x1d, 0xb6, 0x6c, 0xce, 0x31, 0x4a, 0xdb, 0x31,
rdobuilder 775784
    0x0e, 0x3b, 0xe8, 0x25, 0x0c, 0x46, 0xf0, 0x6d, 0xce, 0xea, 0x3a, 0x7f,
rdobuilder 775784
    0xa1, 0x34, 0x80, 0x57, 0xe2, 0xf6, 0x55, 0x6a, 0xd6, 0xb1, 0x31, 0x8a,
rdobuilder 775784
    0x02, 0x4a, 0x83, 0x8f, 0x21, 0xaf, 0x1f, 0xde, 0x04, 0x89, 0x77, 0xeb,
rdobuilder 775784
    0x48, 0xf5, 0x9f, 0xfd, 0x49, 0x24, 0xca, 0x1c, 0x60, 0x90, 0x2e, 0x52,
rdobuilder 775784
    0xf0, 0xa0, 0x89, 0xbc, 0x76, 0x89, 0x70, 0x40, 0xe0, 0x82, 0xf9, 0x37,
rdobuilder 775784
    0x76, 0x38, 0x48, 0x64, 0x5e, 0x07, 0x05
rdobuilder 775784
};
rdobuilder 775784
rdobuilder 775784
static unsigned char c[163];
rdobuilder 775784
rdobuilder 775784
int
rdobuilder 775784
main(void)
rdobuilder 775784
{
rdobuilder 775784
    unsigned char k[crypto_box_BEFORENMBYTES];
rdobuilder 775784
    int           i;
rdobuilder 775784
    int           ret;
rdobuilder 775784
rdobuilder 775784
    ret = crypto_box(c, m, 163, nonce, bobpk, alicesk);
rdobuilder 775784
    assert(ret == 0);
rdobuilder 775784
    for (i = 16; i < 163; ++i) {
rdobuilder 775784
        printf(",0x%02x", (unsigned int) c[i]);
rdobuilder 775784
        if (i % 8 == 7)
rdobuilder 775784
            printf("\n");
rdobuilder 775784
    }
rdobuilder 775784
    printf("\n");
rdobuilder 775784
rdobuilder 775784
    ret = crypto_box(c, m, 163, nonce, small_order_p, alicesk);
rdobuilder 775784
    assert(ret == -1);
rdobuilder 775784
rdobuilder 775784
    memset(c, 0, sizeof c);
rdobuilder 775784
rdobuilder 775784
    ret = crypto_box_beforenm(k, bobpk, alicesk);
rdobuilder 775784
    assert(ret == 0);
rdobuilder 775784
    crypto_box_afternm(c, m, 163, nonce, k);
rdobuilder 775784
    for (i = 16; i < 163; ++i) {
rdobuilder 775784
        printf(",0x%02x", (unsigned int) c[i]);
rdobuilder 775784
        if (i % 8 == 7)
rdobuilder 775784
            printf("\n");
rdobuilder 775784
    }
rdobuilder 775784
    printf("\n");
rdobuilder 775784
rdobuilder 775784
    ret = crypto_box_beforenm(k, small_order_p, alicesk);
rdobuilder 775784
    assert(ret == -1);
rdobuilder 775784
rdobuilder 775784
    assert(crypto_box_seedbytes() > 0U);
rdobuilder 775784
    assert(crypto_box_publickeybytes() > 0U);
rdobuilder 775784
    assert(crypto_box_secretkeybytes() > 0U);
rdobuilder 775784
    assert(crypto_box_beforenmbytes() > 0U);
rdobuilder 775784
    assert(crypto_box_noncebytes() > 0U);
rdobuilder 775784
    assert(crypto_box_zerobytes() > 0U);
rdobuilder 775784
    assert(crypto_box_boxzerobytes() > 0U);
rdobuilder 775784
    assert(crypto_box_macbytes() > 0U);
rdobuilder 775784
    assert(crypto_box_messagebytes_max() > 0U);
rdobuilder 775784
    assert(strcmp(crypto_box_primitive(), "curve25519xsalsa20poly1305") == 0);
rdobuilder 775784
    assert(crypto_box_curve25519xsalsa20poly1305_seedbytes() ==
rdobuilder 775784
           crypto_box_seedbytes());
rdobuilder 775784
    assert(crypto_box_curve25519xsalsa20poly1305_publickeybytes() ==
rdobuilder 775784
           crypto_box_publickeybytes());
rdobuilder 775784
    assert(crypto_box_curve25519xsalsa20poly1305_secretkeybytes() ==
rdobuilder 775784
           crypto_box_secretkeybytes());
rdobuilder 775784
    assert(crypto_box_curve25519xsalsa20poly1305_beforenmbytes() ==
rdobuilder 775784
           crypto_box_beforenmbytes());
rdobuilder 775784
    assert(crypto_box_curve25519xsalsa20poly1305_noncebytes() ==
rdobuilder 775784
           crypto_box_noncebytes());
rdobuilder 775784
    assert(crypto_box_curve25519xsalsa20poly1305_zerobytes() ==
rdobuilder 775784
           crypto_box_zerobytes());
rdobuilder 775784
    assert(crypto_box_curve25519xsalsa20poly1305_boxzerobytes() ==
rdobuilder 775784
           crypto_box_boxzerobytes());
rdobuilder 775784
    assert(crypto_box_curve25519xsalsa20poly1305_macbytes() ==
rdobuilder 775784
           crypto_box_macbytes());
rdobuilder 775784
    assert(crypto_box_curve25519xsalsa20poly1305_messagebytes_max() ==
rdobuilder 775784
           crypto_box_messagebytes_max());
rdobuilder 775784
rdobuilder 775784
    return 0;
rdobuilder 775784
}