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

ca16be
ca16be
#define TEST_NAME "stream2"
ca16be
#include "cmptest.h"
ca16be
ca16be
static const unsigned char secondkey[32] = {
ca16be
    0xdc, 0x90, 0x8d, 0xda, 0x0b, 0x93, 0x44,
ca16be
    0xa9, 0x53, 0x62, 0x9b, 0x73, 0x38, 0x20,
ca16be
    0x77, 0x88, 0x80, 0xf3, 0xce, 0xb4, 0x21,
ca16be
    0xbb, 0x61, 0xb9, 0x1c, 0xbd, 0x4c, 0x3e,
ca16be
    0x66, 0x25, 0x6c, 0xe4
ca16be
};
ca16be
ca16be
static const unsigned char noncesuffix[8] = {
ca16be
    0x82, 0x19, 0xe0, 0x03, 0x6b, 0x7a, 0x0b, 0x37
ca16be
};
ca16be
ca16be
ca16be
ca16be
int
ca16be
main(void)
ca16be
{
ca16be
    unsigned char *output;
ca16be
    char          *hex;
ca16be
    unsigned char  h[32];
ca16be
    size_t         sizeof_hex = 32 * 2 + 1;
ca16be
    size_t         sizeof_output = 4194304;
ca16be
    int            i;
ca16be
ca16be
    output = (unsigned char *) sodium_malloc(sizeof_output);
ca16be
    hex = (char *) sodium_malloc(sizeof_hex);
ca16be
ca16be
    crypto_stream_salsa20(output, sizeof_output, noncesuffix, secondkey);
ca16be
    crypto_hash_sha256(h, output, sizeof_output);
ca16be
    sodium_bin2hex(hex, sizeof_hex, h, sizeof h);
ca16be
    printf("%s\n", hex);
ca16be
ca16be
    assert(sizeof_output > 4000);
ca16be
ca16be
    crypto_stream_salsa20_xor_ic(output, output, 4000, noncesuffix, 0U,
ca16be
                                 secondkey);
ca16be
    for (i = 0; i < 4000; i++) {
ca16be
        assert(output[i] == 0);
ca16be
    }
ca16be
ca16be
    crypto_stream_salsa20_xor_ic(output, output, 4000, noncesuffix, 1U,
ca16be
                                 secondkey);
ca16be
    crypto_hash_sha256(h, output, sizeof_output);
ca16be
    sodium_bin2hex(hex, sizeof_hex, h, sizeof h);
ca16be
    printf("%s\n", hex);
ca16be
ca16be
    sodium_free(hex);
ca16be
    sodium_free(output);
ca16be
ca16be
    assert(crypto_stream_salsa20_keybytes() > 0U);
ca16be
    assert(crypto_stream_salsa20_noncebytes() > 0U);
ca16be
    assert(crypto_stream_salsa20_messagebytes_max() > 0U);
ca16be
ca16be
    return 0;
ca16be
}