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