1 1.1 riastrad 2 1.1 riastrad #define TEST_NAME "aead_chacha20poly1305" 3 1.1 riastrad #include "cmptest.h" 4 1.1 riastrad 5 1.1 riastrad static int 6 1.1 riastrad tv(void) 7 1.1 riastrad { 8 1.1 riastrad #undef MLEN 9 1.1 riastrad #define MLEN 10U 10 1.1 riastrad #undef ADLEN 11 1.1 riastrad #define ADLEN 10U 12 1.1 riastrad #undef CLEN 13 1.1 riastrad #define CLEN (MLEN + crypto_aead_chacha20poly1305_ABYTES) 14 1.1 riastrad static const unsigned char firstkey[crypto_aead_chacha20poly1305_KEYBYTES] 15 1.1 riastrad = { 0x42, 0x90, 0xbc, 0xb1, 0x54, 0x17, 0x35, 0x31, 0xf3, 0x14, 0xaf, 16 1.1 riastrad 0x57, 0xf3, 0xbe, 0x3b, 0x50, 0x06, 0xda, 0x37, 0x1e, 0xce, 0x27, 17 1.1 riastrad 0x2a, 0xfa, 0x1b, 0x5d, 0xbd, 0xd1, 0x10, 0x0a, 0x10, 0x07 }; 18 1.1 riastrad static const unsigned char m[MLEN] 19 1.1 riastrad = { 0x86, 0xd0, 0x99, 0x74, 0x84, 0x0b, 0xde, 0xd2, 0xa5, 0xca }; 20 1.1 riastrad static const unsigned char nonce[crypto_aead_chacha20poly1305_NPUBBYTES] 21 1.1 riastrad = { 0xcd, 0x7c, 0xf6, 0x7b, 0xe3, 0x9c, 0x79, 0x4a }; 22 1.1 riastrad static const unsigned char ad[ADLEN] 23 1.1 riastrad = { 0x87, 0xe2, 0x29, 0xd4, 0x50, 0x08, 0x45, 0xa0, 0x79, 0xc0 }; 24 1.1 riastrad unsigned char *c = (unsigned char *) sodium_malloc(CLEN); 25 1.1 riastrad unsigned char *detached_c = (unsigned char *) sodium_malloc(MLEN); 26 1.1 riastrad unsigned char *mac = (unsigned char *) sodium_malloc(crypto_aead_chacha20poly1305_ABYTES); 27 1.1 riastrad unsigned char *m2 = (unsigned char *) sodium_malloc(MLEN); 28 1.1 riastrad unsigned long long found_clen; 29 1.1 riastrad unsigned long long found_maclen; 30 1.1 riastrad unsigned long long m2len; 31 1.1 riastrad size_t i; 32 1.1 riastrad 33 1.1 riastrad crypto_aead_chacha20poly1305_encrypt(c, &found_clen, m, MLEN, 34 1.1 riastrad ad, ADLEN, 35 1.1 riastrad NULL, nonce, firstkey); 36 1.1 riastrad if (found_clen != CLEN) { 37 1.1 riastrad printf("found_clen is not properly set\n"); 38 1.1 riastrad } 39 1.1 riastrad for (i = 0U; i < CLEN; ++i) { 40 1.1 riastrad printf(",0x%02x", (unsigned int) c[i]); 41 1.1 riastrad if (i % 8 == 7) { 42 1.1 riastrad printf("\n"); 43 1.1 riastrad } 44 1.1 riastrad } 45 1.1 riastrad printf("\n"); 46 1.1 riastrad crypto_aead_chacha20poly1305_encrypt_detached(detached_c, 47 1.1 riastrad mac, &found_maclen, 48 1.1 riastrad m, MLEN, ad, ADLEN, 49 1.1 riastrad NULL, nonce, firstkey); 50 1.1 riastrad if (found_maclen != crypto_aead_chacha20poly1305_abytes()) { 51 1.1 riastrad printf("found_maclen is not properly set\n"); 52 1.1 riastrad } 53 1.1 riastrad if (memcmp(detached_c, c, MLEN) != 0) { 54 1.1 riastrad printf("detached ciphertext is bogus\n"); 55 1.1 riastrad } 56 1.1 riastrad 57 1.1 riastrad if (crypto_aead_chacha20poly1305_decrypt(m2, &m2len, NULL, c, CLEN, 58 1.1 riastrad ad, ADLEN, 59 1.1 riastrad nonce, firstkey) != 0) { 60 1.1 riastrad printf("crypto_aead_chacha20poly1305_decrypt() failed\n"); 61 1.1 riastrad } 62 1.1 riastrad if (m2len != MLEN) { 63 1.1 riastrad printf("m2len is not properly set\n"); 64 1.1 riastrad } 65 1.1 riastrad if (memcmp(m, m2, MLEN) != 0) { 66 1.1 riastrad printf("m != m2\n"); 67 1.1 riastrad } 68 1.1 riastrad memset(m2, 0, m2len); 69 1.1 riastrad assert(crypto_aead_chacha20poly1305_decrypt_detached(NULL, NULL, 70 1.1 riastrad c, MLEN, mac, 71 1.1 riastrad ad, ADLEN, 72 1.1 riastrad nonce, firstkey) == 0); 73 1.1 riastrad if (crypto_aead_chacha20poly1305_decrypt_detached(m2, NULL, 74 1.1 riastrad c, MLEN, mac, 75 1.1 riastrad ad, ADLEN, 76 1.1 riastrad nonce, firstkey) != 0) { 77 1.1 riastrad printf("crypto_aead_chacha20poly1305_decrypt_detached() failed\n"); 78 1.1 riastrad } 79 1.1 riastrad if (memcmp(m, m2, MLEN) != 0) { 80 1.1 riastrad printf("detached m != m2\n"); 81 1.1 riastrad } 82 1.1 riastrad 83 1.1 riastrad for (i = 0U; i < CLEN; i++) { 84 1.1 riastrad c[i] ^= (i + 1U); 85 1.1 riastrad if (crypto_aead_chacha20poly1305_decrypt(m2, NULL, NULL, c, CLEN, 86 1.1 riastrad ad, ADLEN, nonce, firstkey) 87 1.1 riastrad == 0 || memcmp(m, m2, MLEN) == 0) { 88 1.1 riastrad printf("message can be forged\n"); 89 1.1 riastrad } 90 1.1 riastrad c[i] ^= (i + 1U); 91 1.1 riastrad } 92 1.1 riastrad 93 1.1 riastrad crypto_aead_chacha20poly1305_encrypt(c, &found_clen, m, MLEN, 94 1.1 riastrad NULL, 0U, NULL, nonce, firstkey); 95 1.1 riastrad if (found_clen != CLEN) { 96 1.1 riastrad printf("found_clen is not properly set (adlen=0)\n"); 97 1.1 riastrad } 98 1.1 riastrad for (i = 0U; i < CLEN; ++i) { 99 1.1 riastrad printf(",0x%02x", (unsigned int) c[i]); 100 1.1 riastrad if (i % 8 == 7) { 101 1.1 riastrad printf("\n"); 102 1.1 riastrad } 103 1.1 riastrad } 104 1.1 riastrad printf("\n"); 105 1.1 riastrad 106 1.1 riastrad if (crypto_aead_chacha20poly1305_decrypt(m2, &m2len, NULL, c, CLEN, 107 1.1 riastrad NULL, 0U, nonce, firstkey) != 0) { 108 1.1 riastrad printf("crypto_aead_chacha20poly1305_decrypt() failed (adlen=0)\n"); 109 1.1 riastrad } 110 1.1 riastrad if (m2len != MLEN) { 111 1.1 riastrad printf("m2len is not properly set (adlen=0)\n"); 112 1.1 riastrad } 113 1.1 riastrad if (memcmp(m, m2, MLEN) != 0) { 114 1.1 riastrad printf("m != m2 (adlen=0)\n"); 115 1.1 riastrad } 116 1.1 riastrad m2len = 1; 117 1.1 riastrad if (crypto_aead_chacha20poly1305_decrypt( 118 1.1 riastrad m2, &m2len, NULL, NULL, 119 1.1 riastrad randombytes_uniform(crypto_aead_chacha20poly1305_ABYTES), 120 1.1 riastrad NULL, 0U, nonce, firstkey) != -1) { 121 1.1 riastrad printf("crypto_aead_chacha20poly1305_decrypt() worked with a short " 122 1.1 riastrad "ciphertext\n"); 123 1.1 riastrad } 124 1.1 riastrad if (m2len != 0) { 125 1.1 riastrad printf("Message length should have been set to zero after a failure\n"); 126 1.1 riastrad } 127 1.1 riastrad m2len = 1; 128 1.1 riastrad if (crypto_aead_chacha20poly1305_decrypt(m2, &m2len, NULL, c, 0U, NULL, 0U, 129 1.1 riastrad nonce, firstkey) != -1) { 130 1.1 riastrad printf("crypto_aead_chacha20poly1305_decrypt() worked with an empty " 131 1.1 riastrad "ciphertext\n"); 132 1.1 riastrad } 133 1.1 riastrad if (m2len != 0) { 134 1.1 riastrad printf("Message length should have been set to zero after a failure\n"); 135 1.1 riastrad } 136 1.1 riastrad 137 1.1 riastrad memcpy(c, m, MLEN); 138 1.1 riastrad crypto_aead_chacha20poly1305_encrypt(c, &found_clen, c, MLEN, 139 1.1 riastrad NULL, 0U, NULL, nonce, firstkey); 140 1.1 riastrad if (found_clen != CLEN) { 141 1.1 riastrad printf("found_clen is not properly set (adlen=0)\n"); 142 1.1 riastrad } 143 1.1 riastrad for (i = 0U; i < CLEN; ++i) { 144 1.1 riastrad printf(",0x%02x", (unsigned int) c[i]); 145 1.1 riastrad if (i % 8 == 7) { 146 1.1 riastrad printf("\n"); 147 1.1 riastrad } 148 1.1 riastrad } 149 1.1 riastrad printf("\n"); 150 1.1 riastrad 151 1.1 riastrad if (crypto_aead_chacha20poly1305_decrypt(c, &m2len, NULL, c, CLEN, 152 1.1 riastrad NULL, 0U, nonce, firstkey) != 0) { 153 1.1 riastrad printf("crypto_aead_chacha20poly1305_decrypt() failed (adlen=0)\n"); 154 1.1 riastrad } 155 1.1 riastrad if (m2len != MLEN) { 156 1.1 riastrad printf("m2len is not properly set (adlen=0)\n"); 157 1.1 riastrad } 158 1.1 riastrad if (memcmp(m, c, MLEN) != 0) { 159 1.1 riastrad printf("m != c (adlen=0)\n"); 160 1.1 riastrad } 161 1.1 riastrad 162 1.1 riastrad sodium_free(c); 163 1.1 riastrad sodium_free(detached_c); 164 1.1 riastrad sodium_free(mac); 165 1.1 riastrad sodium_free(m2); 166 1.1 riastrad 167 1.1 riastrad assert(crypto_aead_chacha20poly1305_keybytes() > 0U); 168 1.1 riastrad assert(crypto_aead_chacha20poly1305_npubbytes() > 0U); 169 1.1 riastrad assert(crypto_aead_chacha20poly1305_nsecbytes() == 0U); 170 1.1 riastrad assert(crypto_aead_chacha20poly1305_messagebytes_max() > 0U); 171 1.1 riastrad assert(crypto_aead_chacha20poly1305_messagebytes_max() == crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX); 172 1.1 riastrad assert(crypto_aead_chacha20poly1305_keybytes() == crypto_aead_chacha20poly1305_KEYBYTES); 173 1.1 riastrad assert(crypto_aead_chacha20poly1305_nsecbytes() == crypto_aead_chacha20poly1305_NSECBYTES); 174 1.1 riastrad assert(crypto_aead_chacha20poly1305_npubbytes() == crypto_aead_chacha20poly1305_NPUBBYTES); 175 1.1 riastrad assert(crypto_aead_chacha20poly1305_abytes() == crypto_aead_chacha20poly1305_ABYTES); 176 1.1 riastrad 177 1.1 riastrad return 0; 178 1.1 riastrad } 179 1.1 riastrad 180 1.1 riastrad static int 181 1.1 riastrad tv_ietf(void) 182 1.1 riastrad { 183 1.1 riastrad #undef MLEN 184 1.1 riastrad #define MLEN 114U 185 1.1 riastrad #undef ADLEN 186 1.1 riastrad #define ADLEN 12U 187 1.1 riastrad #undef CLEN 188 1.1 riastrad #define CLEN (MLEN + crypto_aead_chacha20poly1305_ietf_ABYTES) 189 1.1 riastrad static const unsigned char firstkey[crypto_aead_chacha20poly1305_ietf_KEYBYTES] 190 1.1 riastrad = { 191 1.1 riastrad 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 192 1.1 riastrad 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 193 1.1 riastrad 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 194 1.1 riastrad 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f 195 1.1 riastrad }; 196 1.1 riastrad #undef MESSAGE 197 1.1 riastrad #define MESSAGE "Ladies and Gentlemen of the class of '99: If I could offer you " \ 198 1.1 riastrad "only one tip for the future, sunscreen would be it." 199 1.1 riastrad unsigned char *m = (unsigned char *) sodium_malloc(MLEN); 200 1.1 riastrad static const unsigned char nonce[crypto_aead_chacha20poly1305_ietf_NPUBBYTES] 201 1.1 riastrad = { 0x07, 0x00, 0x00, 0x00, 202 1.1 riastrad 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47 }; 203 1.1 riastrad static const unsigned char ad[ADLEN] 204 1.1 riastrad = { 0x50, 0x51, 0x52, 0x53, 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7 }; 205 1.1 riastrad unsigned char *c = (unsigned char *) sodium_malloc(CLEN); 206 1.1 riastrad unsigned char *detached_c = (unsigned char *) sodium_malloc(MLEN); 207 1.1 riastrad unsigned char *mac = (unsigned char *) sodium_malloc(crypto_aead_chacha20poly1305_ietf_ABYTES); 208 1.1 riastrad unsigned char *m2 = (unsigned char *) sodium_malloc(MLEN); 209 1.1 riastrad unsigned long long found_clen; 210 1.1 riastrad unsigned long long found_maclen; 211 1.1 riastrad unsigned long long m2len; 212 1.1 riastrad size_t i; 213 1.1 riastrad 214 1.1 riastrad assert(sizeof MESSAGE - 1U == MLEN); 215 1.1 riastrad memcpy(m, MESSAGE, MLEN); 216 1.1 riastrad crypto_aead_chacha20poly1305_ietf_encrypt(c, &found_clen, m, MLEN, 217 1.1 riastrad ad, ADLEN, 218 1.1 riastrad NULL, nonce, firstkey); 219 1.1 riastrad if (found_clen != MLEN + crypto_aead_chacha20poly1305_ietf_abytes()) { 220 1.1 riastrad printf("found_clen is not properly set\n"); 221 1.1 riastrad } 222 1.1 riastrad for (i = 0U; i < CLEN; ++i) { 223 1.1 riastrad printf(",0x%02x", (unsigned int) c[i]); 224 1.1 riastrad if (i % 8 == 7) { 225 1.1 riastrad printf("\n"); 226 1.1 riastrad } 227 1.1 riastrad } 228 1.1 riastrad printf("\n"); 229 1.1 riastrad crypto_aead_chacha20poly1305_ietf_encrypt_detached(detached_c, 230 1.1 riastrad mac, &found_maclen, 231 1.1 riastrad m, MLEN, 232 1.1 riastrad ad, ADLEN, 233 1.1 riastrad NULL, nonce, firstkey); 234 1.1 riastrad if (found_maclen != crypto_aead_chacha20poly1305_ietf_abytes()) { 235 1.1 riastrad printf("found_maclen is not properly set\n"); 236 1.1 riastrad } 237 1.1 riastrad if (memcmp(detached_c, c, MLEN) != 0) { 238 1.1 riastrad printf("detached ciphertext is bogus\n"); 239 1.1 riastrad } 240 1.1 riastrad 241 1.1 riastrad if (crypto_aead_chacha20poly1305_ietf_decrypt(m2, &m2len, NULL, c, CLEN, ad, 242 1.1 riastrad ADLEN, nonce, firstkey) != 0) { 243 1.1 riastrad printf("crypto_aead_chacha20poly1305_ietf_decrypt() failed\n"); 244 1.1 riastrad } 245 1.1 riastrad if (m2len != MLEN) { 246 1.1 riastrad printf("m2len is not properly set\n"); 247 1.1 riastrad } 248 1.1 riastrad if (memcmp(m, m2, MLEN) != 0) { 249 1.1 riastrad printf("m != m2\n"); 250 1.1 riastrad } 251 1.1 riastrad memset(m2, 0, m2len); 252 1.1 riastrad assert(crypto_aead_chacha20poly1305_ietf_decrypt_detached(NULL, NULL, 253 1.1 riastrad c, MLEN, mac, 254 1.1 riastrad ad, ADLEN, 255 1.1 riastrad nonce, firstkey) == 0); 256 1.1 riastrad if (crypto_aead_chacha20poly1305_ietf_decrypt_detached(m2, NULL, 257 1.1 riastrad c, MLEN, mac, 258 1.1 riastrad ad, ADLEN, 259 1.1 riastrad nonce, firstkey) != 0) { 260 1.1 riastrad printf("crypto_aead_chacha20poly1305_ietf_decrypt_detached() failed\n"); 261 1.1 riastrad } 262 1.1 riastrad if (memcmp(m, m2, MLEN) != 0) { 263 1.1 riastrad printf("detached m != m2\n"); 264 1.1 riastrad } 265 1.1 riastrad 266 1.1 riastrad for (i = 0U; i < CLEN; i++) { 267 1.1 riastrad c[i] ^= (i + 1U); 268 1.1 riastrad if (crypto_aead_chacha20poly1305_ietf_decrypt(m2, NULL, NULL, c, CLEN, 269 1.1 riastrad ad, ADLEN, nonce, firstkey) 270 1.1 riastrad == 0 || memcmp(m, m2, MLEN) == 0) { 271 1.1 riastrad printf("message can be forged\n"); 272 1.1 riastrad } 273 1.1 riastrad c[i] ^= (i + 1U); 274 1.1 riastrad } 275 1.1 riastrad crypto_aead_chacha20poly1305_ietf_encrypt(c, &found_clen, m, MLEN, 276 1.1 riastrad NULL, 0U, NULL, nonce, firstkey); 277 1.1 riastrad if (found_clen != CLEN) { 278 1.1 riastrad printf("clen is not properly set (adlen=0)\n"); 279 1.1 riastrad } 280 1.1 riastrad for (i = 0U; i < CLEN; ++i) { 281 1.1 riastrad printf(",0x%02x", (unsigned int) c[i]); 282 1.1 riastrad if (i % 8 == 7) { 283 1.1 riastrad printf("\n"); 284 1.1 riastrad } 285 1.1 riastrad } 286 1.1 riastrad printf("\n"); 287 1.1 riastrad if (crypto_aead_chacha20poly1305_ietf_decrypt(m2, &m2len, NULL, c, CLEN, 288 1.1 riastrad NULL, 0U, nonce, firstkey) != 0) { 289 1.1 riastrad printf("crypto_aead_chacha20poly1305_ietf_decrypt() failed (adlen=0)\n"); 290 1.1 riastrad } 291 1.1 riastrad if (m2len != MLEN) { 292 1.1 riastrad printf("m2len is not properly set (adlen=0)\n"); 293 1.1 riastrad } 294 1.1 riastrad if (memcmp(m, m2, MLEN) != 0) { 295 1.1 riastrad printf("m != m2 (adlen=0)\n"); 296 1.1 riastrad } 297 1.1 riastrad m2len = 1; 298 1.1 riastrad if (crypto_aead_chacha20poly1305_ietf_decrypt( 299 1.1 riastrad m2, &m2len, NULL, NULL, 300 1.1 riastrad randombytes_uniform(crypto_aead_chacha20poly1305_ietf_ABYTES), 301 1.1 riastrad NULL, 0U, nonce, firstkey) != -1) { 302 1.1 riastrad printf("crypto_aead_chacha20poly1305_ietf_decrypt() worked with a short " 303 1.1 riastrad "ciphertext\n"); 304 1.1 riastrad } 305 1.1 riastrad if (m2len != 0) { 306 1.1 riastrad printf("Message length should have been set to zero after a failure\n"); 307 1.1 riastrad } 308 1.1 riastrad m2len = 1; 309 1.1 riastrad if (crypto_aead_chacha20poly1305_ietf_decrypt(m2, &m2len, NULL, c, 0U, NULL, 0U, 310 1.1 riastrad nonce, firstkey) != -1) { 311 1.1 riastrad printf("crypto_aead_chacha20poly1305_ietf_decrypt() worked with an empty " 312 1.1 riastrad "ciphertext\n"); 313 1.1 riastrad } 314 1.1 riastrad if (m2len != 0) { 315 1.1 riastrad printf("Message length should have been set to zero after a failure\n"); 316 1.1 riastrad } 317 1.1 riastrad 318 1.1 riastrad memcpy(c, m, MLEN); 319 1.1 riastrad crypto_aead_chacha20poly1305_ietf_encrypt(c, &found_clen, c, MLEN, 320 1.1 riastrad NULL, 0U, NULL, nonce, firstkey); 321 1.1 riastrad if (found_clen != CLEN) { 322 1.1 riastrad printf("clen is not properly set (adlen=0)\n"); 323 1.1 riastrad } 324 1.1 riastrad for (i = 0U; i < CLEN; ++i) { 325 1.1 riastrad printf(",0x%02x", (unsigned int) c[i]); 326 1.1 riastrad if (i % 8 == 7) { 327 1.1 riastrad printf("\n"); 328 1.1 riastrad } 329 1.1 riastrad } 330 1.1 riastrad printf("\n"); 331 1.1 riastrad 332 1.1 riastrad if (crypto_aead_chacha20poly1305_ietf_decrypt(c, &m2len, NULL, c, CLEN, 333 1.1 riastrad NULL, 0U, nonce, firstkey) != 0) { 334 1.1 riastrad printf("crypto_aead_chacha20poly1305_ietf_decrypt() failed (adlen=0)\n"); 335 1.1 riastrad } 336 1.1 riastrad if (m2len != MLEN) { 337 1.1 riastrad printf("m2len is not properly set (adlen=0)\n"); 338 1.1 riastrad } 339 1.1 riastrad if (memcmp(m, c, MLEN) != 0) { 340 1.1 riastrad printf("m != c (adlen=0)\n"); 341 1.1 riastrad } 342 1.1 riastrad 343 1.1 riastrad sodium_free(c); 344 1.1 riastrad sodium_free(detached_c); 345 1.1 riastrad sodium_free(mac); 346 1.1 riastrad sodium_free(m2); 347 1.1 riastrad sodium_free(m); 348 1.1 riastrad 349 1.1 riastrad assert(crypto_aead_chacha20poly1305_ietf_keybytes() > 0U); 350 1.1 riastrad assert(crypto_aead_chacha20poly1305_ietf_keybytes() == crypto_aead_chacha20poly1305_keybytes()); 351 1.1 riastrad assert(crypto_aead_chacha20poly1305_ietf_npubbytes() > 0U); 352 1.1 riastrad assert(crypto_aead_chacha20poly1305_ietf_npubbytes() > crypto_aead_chacha20poly1305_npubbytes()); 353 1.1 riastrad assert(crypto_aead_chacha20poly1305_ietf_nsecbytes() == 0U); 354 1.1 riastrad assert(crypto_aead_chacha20poly1305_ietf_nsecbytes() == crypto_aead_chacha20poly1305_nsecbytes()); 355 1.1 riastrad assert(crypto_aead_chacha20poly1305_ietf_messagebytes_max() == crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX); 356 1.1 riastrad assert(crypto_aead_chacha20poly1305_IETF_KEYBYTES == crypto_aead_chacha20poly1305_ietf_KEYBYTES); 357 1.1 riastrad assert(crypto_aead_chacha20poly1305_IETF_NSECBYTES == crypto_aead_chacha20poly1305_ietf_NSECBYTES); 358 1.1 riastrad assert(crypto_aead_chacha20poly1305_IETF_NPUBBYTES == crypto_aead_chacha20poly1305_ietf_NPUBBYTES); 359 1.1 riastrad assert(crypto_aead_chacha20poly1305_IETF_ABYTES == crypto_aead_chacha20poly1305_ietf_ABYTES); 360 1.1 riastrad assert(crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX == crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX); 361 1.1 riastrad 362 1.1 riastrad return 0; 363 1.1 riastrad } 364 1.1 riastrad 365 1.1 riastrad int 366 1.1 riastrad main(void) 367 1.1 riastrad { 368 1.1 riastrad tv(); 369 1.1 riastrad tv_ietf(); 370 1.1 riastrad 371 1.1 riastrad return 0; 372 1.1 riastrad } 373