Home | History | Annotate | Line # | Download | only in default
      1 
      2 #define TEST_NAME "generichash3"
      3 #include "cmptest.h"
      4 
      5 int
      6 main(void)
      7 {
      8 #define MAXLEN 64
      9     crypto_generichash_blake2b_state st;
     10     unsigned char salt[crypto_generichash_blake2b_SALTBYTES]
     11         = { '5', 'b', '6', 'b', '4', '1', 'e', 'd',
     12             '9', 'b', '3', '4', '3', 'f', 'e', '0' };
     13     unsigned char personal[crypto_generichash_blake2b_PERSONALBYTES]
     14         = { '5', '1', '2', '6', 'f', 'b', '2', 'a',
     15             '3', '7', '4', '0', '0', 'd', '2', 'a' };
     16     unsigned char in[MAXLEN];
     17     unsigned char out[crypto_generichash_blake2b_BYTES_MAX];
     18     unsigned char k[crypto_generichash_blake2b_KEYBYTES_MAX];
     19     size_t        h;
     20     size_t        i;
     21     size_t        j;
     22 
     23     assert(crypto_generichash_blake2b_statebytes() >= sizeof st);
     24     for (h = 0; h < crypto_generichash_blake2b_KEYBYTES_MAX; ++h) {
     25         k[h] = (unsigned char) h;
     26     }
     27 
     28     for (i = 0; i < MAXLEN; ++i) {
     29         in[i] = (unsigned char) i;
     30         crypto_generichash_blake2b_init_salt_personal(
     31             &st, k, 1 + i % crypto_generichash_blake2b_KEYBYTES_MAX,
     32             1 + i % crypto_generichash_blake2b_BYTES_MAX, salt, personal);
     33         crypto_generichash_blake2b_update(&st, in, (unsigned long long) i);
     34         crypto_generichash_blake2b_final(
     35             &st, out, 1 + i % crypto_generichash_blake2b_BYTES_MAX);
     36         for (j = 0; j < 1 + i % crypto_generichash_blake2b_BYTES_MAX; ++j) {
     37             printf("%02x", (unsigned int) out[j]);
     38         }
     39         printf("\n");
     40     }
     41 
     42     memset(out, 0, sizeof out);
     43     crypto_generichash_blake2b_init_salt_personal(
     44         &st, k, 0U, crypto_generichash_blake2b_BYTES_MAX, salt, personal);
     45     crypto_generichash_blake2b_update(&st, in, MAXLEN);
     46     crypto_generichash_blake2b_final(&st, out,
     47                                      crypto_generichash_blake2b_BYTES_MAX);
     48     for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
     49         printf("%02x", (unsigned int) out[j]);
     50     }
     51     printf("\n");
     52 
     53     memset(out, 0, sizeof out);
     54     crypto_generichash_blake2b_init_salt_personal(
     55         &st, NULL, 1U, crypto_generichash_blake2b_BYTES_MAX, salt, personal);
     56     crypto_generichash_blake2b_update(&st, in, MAXLEN);
     57     crypto_generichash_blake2b_final(&st, out,
     58                                      crypto_generichash_blake2b_BYTES_MAX);
     59     for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
     60         printf("%02x", (unsigned int) out[j]);
     61     }
     62     printf("\n");
     63 
     64     memset(out, 0, sizeof out);
     65     crypto_generichash_blake2b_init_salt_personal(
     66         &st, k, crypto_generichash_blake2b_KEYBYTES_MAX,
     67     crypto_generichash_blake2b_BYTES_MAX, NULL, personal);
     68     crypto_generichash_blake2b_update(&st, in, MAXLEN);
     69     crypto_generichash_blake2b_final(&st, out,
     70                                      crypto_generichash_blake2b_BYTES_MAX);
     71     for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
     72         printf("%02x", (unsigned int) out[j]);
     73     }
     74     printf("\n");
     75 
     76     memset(out, 0, sizeof out);
     77     crypto_generichash_blake2b_init_salt_personal(
     78         &st, k, crypto_generichash_blake2b_KEYBYTES_MAX,
     79         crypto_generichash_blake2b_BYTES_MAX, salt, NULL);
     80     crypto_generichash_blake2b_update(&st, in, MAXLEN);
     81     crypto_generichash_blake2b_final(
     82         &st, out, crypto_generichash_blake2b_BYTES_MAX);
     83     for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
     84         printf("%02x", (unsigned int) out[j]);
     85     }
     86     printf("\n");
     87 
     88     memset(out, 0, sizeof out);
     89     crypto_generichash_blake2b_salt_personal(
     90         out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN,
     91         k, 0U, salt, personal);
     92     for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
     93         printf("%02x", (unsigned int) out[j]);
     94     }
     95     printf("\n");
     96 
     97     memset(out, 0, sizeof out);
     98     crypto_generichash_blake2b_salt_personal(
     99         out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN,
    100         NULL, 0U, salt, personal);
    101     for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
    102         printf("%02x", (unsigned int) out[j]);
    103     }
    104     printf("\n");
    105 
    106     memset(out, 0, sizeof out);
    107     crypto_generichash_blake2b_salt_personal(
    108         out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN,
    109         k, crypto_generichash_blake2b_KEYBYTES_MAX, salt, personal);
    110     for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
    111         printf("%02x", (unsigned int) out[j]);
    112     }
    113     printf("\n");
    114 
    115     memset(out, 0, sizeof out);
    116     crypto_generichash_blake2b_salt_personal(
    117         out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN,
    118         k, crypto_generichash_blake2b_KEYBYTES_MAX, NULL, personal);
    119     for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
    120         printf("%02x", (unsigned int) out[j]);
    121     }
    122     printf("\n");
    123 
    124     memset(out, 0, sizeof out);
    125     crypto_generichash_blake2b_salt_personal(
    126         out, crypto_generichash_blake2b_BYTES_MAX, in, MAXLEN,
    127         k, crypto_generichash_blake2b_KEYBYTES_MAX, salt, NULL);
    128     for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
    129         printf("%02x", (unsigned int) out[j]);
    130     }
    131     printf("\n");
    132 
    133     assert(crypto_generichash_blake2b_salt_personal
    134            (NULL, 0,
    135             in, (unsigned long long) sizeof in,
    136             k, sizeof k, NULL, NULL) == -1);
    137     assert(crypto_generichash_blake2b_salt_personal
    138            (NULL, crypto_generichash_BYTES_MAX + 1,
    139             in, (unsigned long long) sizeof in,
    140             k, sizeof k, NULL, NULL) == -1);
    141     assert(crypto_generichash_blake2b_salt_personal
    142            (NULL, (unsigned long long) sizeof in,
    143             in, (unsigned long long) sizeof in,
    144             k, crypto_generichash_KEYBYTES_MAX + 1, NULL, NULL) == -1);
    145 
    146     crypto_generichash_blake2b_init_salt_personal(&st, NULL, 0U, crypto_generichash_BYTES,
    147                                                   NULL, personal);
    148     crypto_generichash_blake2b_update(&st, in, MAXLEN);
    149     crypto_generichash_blake2b_final(&st, out, crypto_generichash_blake2b_BYTES_MAX);
    150     for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
    151         printf("%02x", (unsigned int) out[j]);
    152     }
    153     printf("\n");
    154 
    155     crypto_generichash_blake2b_init_salt_personal(&st, NULL, 0U, crypto_generichash_BYTES,
    156                                                   salt, NULL);
    157     crypto_generichash_blake2b_update(&st, in, MAXLEN);
    158     crypto_generichash_blake2b_final(&st, out, crypto_generichash_blake2b_BYTES_MAX);
    159     for (j = 0; j < crypto_generichash_blake2b_BYTES_MAX; ++j) {
    160         printf("%02x", (unsigned int) out[j]);
    161     }
    162     printf("\n");
    163 
    164     assert(crypto_generichash_blake2b_init_salt_personal
    165            (&st, k, sizeof k, 0, NULL, NULL) == -1);
    166     assert(crypto_generichash_blake2b_init_salt_personal
    167            (&st, k, sizeof k, crypto_generichash_blake2b_BYTES_MAX + 1, NULL, NULL) == -1);
    168     assert(crypto_generichash_blake2b_init_salt_personal
    169            (&st, k, crypto_generichash_blake2b_KEYBYTES_MAX + 1, sizeof out, NULL, NULL) == -1);
    170 
    171     assert(crypto_generichash_blake2b_init_salt_personal(&st, k, sizeof k, crypto_generichash_BYTES,
    172                                                          NULL, personal) == 0);
    173     assert(crypto_generichash_blake2b_init_salt_personal(&st, k, sizeof k, crypto_generichash_BYTES,
    174                                                          salt, NULL) == 0);
    175     return 0;
    176 }
    177