A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 565 lines 24 kB view raw
1/* LibTomCrypt, modular cryptographic library -- Tom St Denis 2 * 3 * LibTomCrypt is a library that provides various cryptographic 4 * algorithms in a highly modular and flexible manner. 5 * 6 * The library is free for all purposes without any express 7 * guarantee it works. 8 */ 9 10#ifdef LTC_HMAC 11typedef struct Hmac_state { 12 hash_state md; 13 int hash; 14 hash_state hashstate; 15 unsigned char *key; 16} hmac_state; 17 18int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned long keylen); 19int hmac_process(hmac_state *hmac, const unsigned char *in, unsigned long inlen); 20int hmac_done(hmac_state *hmac, unsigned char *out, unsigned long *outlen); 21int hmac_test(void); 22int hmac_memory(int hash, 23 const unsigned char *key, unsigned long keylen, 24 const unsigned char *in, unsigned long inlen, 25 unsigned char *out, unsigned long *outlen); 26int hmac_memory_multi(int hash, 27 const unsigned char *key, unsigned long keylen, 28 unsigned char *out, unsigned long *outlen, 29 const unsigned char *in, unsigned long inlen, ...); 30int hmac_file(int hash, const char *fname, const unsigned char *key, 31 unsigned long keylen, 32 unsigned char *dst, unsigned long *dstlen); 33#endif 34 35#ifdef LTC_OMAC 36 37typedef struct { 38 int cipher_idx, 39 buflen, 40 blklen; 41 unsigned char block[MAXBLOCKSIZE], 42 prev[MAXBLOCKSIZE], 43 Lu[2][MAXBLOCKSIZE]; 44 symmetric_key key; 45} omac_state; 46 47int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned long keylen); 48int omac_process(omac_state *omac, const unsigned char *in, unsigned long inlen); 49int omac_done(omac_state *omac, unsigned char *out, unsigned long *outlen); 50int omac_memory(int cipher, 51 const unsigned char *key, unsigned long keylen, 52 const unsigned char *in, unsigned long inlen, 53 unsigned char *out, unsigned long *outlen); 54int omac_memory_multi(int cipher, 55 const unsigned char *key, unsigned long keylen, 56 unsigned char *out, unsigned long *outlen, 57 const unsigned char *in, unsigned long inlen, ...); 58int omac_file(int cipher, 59 const unsigned char *key, unsigned long keylen, 60 const char *filename, 61 unsigned char *out, unsigned long *outlen); 62int omac_test(void); 63#endif /* LTC_OMAC */ 64 65#ifdef LTC_PMAC 66 67typedef struct { 68 unsigned char Ls[32][MAXBLOCKSIZE], /* L shifted by i bits to the left */ 69 Li[MAXBLOCKSIZE], /* value of Li [current value, we calc from previous recall] */ 70 Lr[MAXBLOCKSIZE], /* L * x^-1 */ 71 block[MAXBLOCKSIZE], /* currently accumulated block */ 72 checksum[MAXBLOCKSIZE]; /* current checksum */ 73 74 symmetric_key key; /* scheduled key for cipher */ 75 unsigned long block_index; /* index # for current block */ 76 int cipher_idx, /* cipher idx */ 77 block_len, /* length of block */ 78 buflen; /* number of bytes in the buffer */ 79} pmac_state; 80 81int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned long keylen); 82int pmac_process(pmac_state *pmac, const unsigned char *in, unsigned long inlen); 83int pmac_done(pmac_state *pmac, unsigned char *out, unsigned long *outlen); 84 85int pmac_memory(int cipher, 86 const unsigned char *key, unsigned long keylen, 87 const unsigned char *msg, unsigned long msglen, 88 unsigned char *out, unsigned long *outlen); 89 90int pmac_memory_multi(int cipher, 91 const unsigned char *key, unsigned long keylen, 92 unsigned char *out, unsigned long *outlen, 93 const unsigned char *in, unsigned long inlen, ...); 94 95int pmac_file(int cipher, 96 const unsigned char *key, unsigned long keylen, 97 const char *filename, 98 unsigned char *out, unsigned long *outlen); 99 100int pmac_test(void); 101 102/* internal functions */ 103int pmac_ntz(unsigned long x); 104void pmac_shift_xor(pmac_state *pmac); 105 106#endif /* PMAC */ 107 108#ifdef LTC_POLY1305 109typedef struct { 110 ulong32 r[5]; 111 ulong32 h[5]; 112 ulong32 pad[4]; 113 unsigned long leftover; 114 unsigned char buffer[16]; 115 int final; 116} poly1305_state; 117 118int poly1305_init(poly1305_state *st, const unsigned char *key, unsigned long keylen); 119int poly1305_process(poly1305_state *st, const unsigned char *in, unsigned long inlen); 120int poly1305_done(poly1305_state *st, unsigned char *mac, unsigned long *maclen); 121int poly1305_memory(const unsigned char *key, unsigned long keylen, const unsigned char *in, unsigned long inlen, unsigned char *mac, unsigned long *maclen); 122int poly1305_memory_multi(const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen, const unsigned char *in, unsigned long inlen, ...); 123int poly1305_file(const char *fname, const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen); 124int poly1305_test(void); 125#endif /* LTC_POLY1305 */ 126 127#ifdef LTC_BLAKE2SMAC 128typedef hash_state blake2smac_state; 129int blake2smac_init(blake2smac_state *st, unsigned long outlen, const unsigned char *key, unsigned long keylen); 130int blake2smac_process(blake2smac_state *st, const unsigned char *in, unsigned long inlen); 131int blake2smac_done(blake2smac_state *st, unsigned char *mac, unsigned long *maclen); 132int blake2smac_memory(const unsigned char *key, unsigned long keylen, const unsigned char *in, unsigned long inlen, unsigned char *mac, unsigned long *maclen); 133int blake2smac_memory_multi(const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen, const unsigned char *in, unsigned long inlen, ...); 134int blake2smac_file(const char *fname, const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen); 135int blake2smac_test(void); 136#endif /* LTC_BLAKE2SMAC */ 137 138#ifdef LTC_BLAKE2BMAC 139typedef hash_state blake2bmac_state; 140int blake2bmac_init(blake2bmac_state *st, unsigned long outlen, const unsigned char *key, unsigned long keylen); 141int blake2bmac_process(blake2bmac_state *st, const unsigned char *in, unsigned long inlen); 142int blake2bmac_done(blake2bmac_state *st, unsigned char *mac, unsigned long *maclen); 143int blake2bmac_memory(const unsigned char *key, unsigned long keylen, const unsigned char *in, unsigned long inlen, unsigned char *mac, unsigned long *maclen); 144int blake2bmac_memory_multi(const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen, const unsigned char *in, unsigned long inlen, ...); 145int blake2bmac_file(const char *fname, const unsigned char *key, unsigned long keylen, unsigned char *mac, unsigned long *maclen); 146int blake2bmac_test(void); 147#endif /* LTC_BLAKE2BMAC */ 148 149#ifdef LTC_EAX_MODE 150 151#if !(defined(LTC_OMAC) && defined(LTC_CTR_MODE)) 152 #error LTC_EAX_MODE requires LTC_OMAC and CTR 153#endif 154 155typedef struct { 156 unsigned char N[MAXBLOCKSIZE]; 157 symmetric_CTR ctr; 158 omac_state headeromac, ctomac; 159} eax_state; 160 161int eax_init(eax_state *eax, int cipher, const unsigned char *key, unsigned long keylen, 162 const unsigned char *nonce, unsigned long noncelen, 163 const unsigned char *header, unsigned long headerlen); 164 165int eax_encrypt(eax_state *eax, const unsigned char *pt, unsigned char *ct, unsigned long length); 166int eax_decrypt(eax_state *eax, const unsigned char *ct, unsigned char *pt, unsigned long length); 167int eax_addheader(eax_state *eax, const unsigned char *header, unsigned long length); 168int eax_done(eax_state *eax, unsigned char *tag, unsigned long *taglen); 169 170int eax_encrypt_authenticate_memory(int cipher, 171 const unsigned char *key, unsigned long keylen, 172 const unsigned char *nonce, unsigned long noncelen, 173 const unsigned char *header, unsigned long headerlen, 174 const unsigned char *pt, unsigned long ptlen, 175 unsigned char *ct, 176 unsigned char *tag, unsigned long *taglen); 177 178int eax_decrypt_verify_memory(int cipher, 179 const unsigned char *key, unsigned long keylen, 180 const unsigned char *nonce, unsigned long noncelen, 181 const unsigned char *header, unsigned long headerlen, 182 const unsigned char *ct, unsigned long ctlen, 183 unsigned char *pt, 184 unsigned char *tag, unsigned long taglen, 185 int *stat); 186 187 int eax_test(void); 188#endif /* EAX MODE */ 189 190#ifdef LTC_OCB_MODE 191typedef struct { 192 unsigned char L[MAXBLOCKSIZE], /* L value */ 193 Ls[32][MAXBLOCKSIZE], /* L shifted by i bits to the left */ 194 Li[MAXBLOCKSIZE], /* value of Li [current value, we calc from previous recall] */ 195 Lr[MAXBLOCKSIZE], /* L * x^-1 */ 196 R[MAXBLOCKSIZE], /* R value */ 197 checksum[MAXBLOCKSIZE]; /* current checksum */ 198 199 symmetric_key key; /* scheduled key for cipher */ 200 unsigned long block_index; /* index # for current block */ 201 int cipher, /* cipher idx */ 202 block_len; /* length of block */ 203} ocb_state; 204 205int ocb_init(ocb_state *ocb, int cipher, 206 const unsigned char *key, unsigned long keylen, const unsigned char *nonce); 207 208int ocb_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned char *ct); 209int ocb_decrypt(ocb_state *ocb, const unsigned char *ct, unsigned char *pt); 210 211int ocb_done_encrypt(ocb_state *ocb, 212 const unsigned char *pt, unsigned long ptlen, 213 unsigned char *ct, 214 unsigned char *tag, unsigned long *taglen); 215 216int ocb_done_decrypt(ocb_state *ocb, 217 const unsigned char *ct, unsigned long ctlen, 218 unsigned char *pt, 219 const unsigned char *tag, unsigned long taglen, int *stat); 220 221int ocb_encrypt_authenticate_memory(int cipher, 222 const unsigned char *key, unsigned long keylen, 223 const unsigned char *nonce, 224 const unsigned char *pt, unsigned long ptlen, 225 unsigned char *ct, 226 unsigned char *tag, unsigned long *taglen); 227 228int ocb_decrypt_verify_memory(int cipher, 229 const unsigned char *key, unsigned long keylen, 230 const unsigned char *nonce, 231 const unsigned char *ct, unsigned long ctlen, 232 unsigned char *pt, 233 const unsigned char *tag, unsigned long taglen, 234 int *stat); 235 236int ocb_test(void); 237 238/* internal functions */ 239void ocb_shift_xor(ocb_state *ocb, unsigned char *Z); 240int ocb_ntz(unsigned long x); 241int s_ocb_done(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen, 242 unsigned char *ct, unsigned char *tag, unsigned long *taglen, int mode); 243 244#endif /* LTC_OCB_MODE */ 245 246#ifdef LTC_OCB3_MODE 247typedef struct { 248 unsigned char Offset_0[MAXBLOCKSIZE], /* Offset_0 value */ 249 Offset_current[MAXBLOCKSIZE], /* Offset_{current_block_index} value */ 250 L_dollar[MAXBLOCKSIZE], /* L_$ value */ 251 L_star[MAXBLOCKSIZE], /* L_* value */ 252 L_[32][MAXBLOCKSIZE], /* L_{i} values */ 253 tag_part[MAXBLOCKSIZE], /* intermediate result of tag calculation */ 254 checksum[MAXBLOCKSIZE]; /* current checksum */ 255 256 /* AAD related members */ 257 unsigned char aSum_current[MAXBLOCKSIZE], /* AAD related helper variable */ 258 aOffset_current[MAXBLOCKSIZE], /* AAD related helper variable */ 259 adata_buffer[MAXBLOCKSIZE]; /* AAD buffer */ 260 int adata_buffer_bytes; /* bytes in AAD buffer */ 261 unsigned long ablock_index; /* index # for current adata (AAD) block */ 262 263 symmetric_key key; /* scheduled key for cipher */ 264 unsigned long block_index; /* index # for current data block */ 265 int cipher, /* cipher idx */ 266 tag_len, /* length of tag */ 267 block_len; /* length of block */ 268} ocb3_state; 269 270int ocb3_init(ocb3_state *ocb, int cipher, 271 const unsigned char *key, unsigned long keylen, 272 const unsigned char *nonce, unsigned long noncelen, 273 unsigned long taglen); 274 275int ocb3_encrypt(ocb3_state *ocb, const unsigned char *pt, unsigned long ptlen, unsigned char *ct); 276int ocb3_decrypt(ocb3_state *ocb, const unsigned char *ct, unsigned long ctlen, unsigned char *pt); 277int ocb3_encrypt_last(ocb3_state *ocb, const unsigned char *pt, unsigned long ptlen, unsigned char *ct); 278int ocb3_decrypt_last(ocb3_state *ocb, const unsigned char *ct, unsigned long ctlen, unsigned char *pt); 279int ocb3_add_aad(ocb3_state *ocb, const unsigned char *aad, unsigned long aadlen); 280int ocb3_done(ocb3_state *ocb, unsigned char *tag, unsigned long *taglen); 281 282int ocb3_encrypt_authenticate_memory(int cipher, 283 const unsigned char *key, unsigned long keylen, 284 const unsigned char *nonce, unsigned long noncelen, 285 const unsigned char *adata, unsigned long adatalen, 286 const unsigned char *pt, unsigned long ptlen, 287 unsigned char *ct, 288 unsigned char *tag, unsigned long *taglen); 289 290int ocb3_decrypt_verify_memory(int cipher, 291 const unsigned char *key, unsigned long keylen, 292 const unsigned char *nonce, unsigned long noncelen, 293 const unsigned char *adata, unsigned long adatalen, 294 const unsigned char *ct, unsigned long ctlen, 295 unsigned char *pt, 296 const unsigned char *tag, unsigned long taglen, 297 int *stat); 298 299int ocb3_test(void); 300 301#ifdef LTC_SOURCE 302/* internal helper functions */ 303int ocb3_int_ntz(unsigned long x); 304void ocb3_int_xor_blocks(unsigned char *out, const unsigned char *block_a, const unsigned char *block_b, unsigned long block_len); 305#endif /* LTC_SOURCE */ 306 307#endif /* LTC_OCB3_MODE */ 308 309#ifdef LTC_CCM_MODE 310 311#define CCM_ENCRYPT LTC_ENCRYPT 312#define CCM_DECRYPT LTC_DECRYPT 313 314typedef struct { 315 symmetric_key K; 316 int cipher, /* which cipher */ 317 taglen, /* length of the tag */ 318 x; /* index in PAD */ 319 320 unsigned long L, /* L value */ 321 ptlen, /* length that will be enc / dec */ 322 current_ptlen, /* current processed length */ 323 aadlen, /* length of the aad */ 324 current_aadlen, /* length of the currently provided add */ 325 noncelen; /* length of the nonce */ 326 327 unsigned char PAD[16], 328 ctr[16], 329 CTRPAD[16], 330 CTRlen; 331} ccm_state; 332 333int ccm_init(ccm_state *ccm, int cipher, 334 const unsigned char *key, int keylen, int ptlen, int taglen, int aad_len); 335 336int ccm_reset(ccm_state *ccm); 337 338int ccm_add_nonce(ccm_state *ccm, 339 const unsigned char *nonce, unsigned long noncelen); 340 341int ccm_add_aad(ccm_state *ccm, 342 const unsigned char *adata, unsigned long adatalen); 343 344int ccm_process(ccm_state *ccm, 345 unsigned char *pt, unsigned long ptlen, 346 unsigned char *ct, 347 int direction); 348 349int ccm_done(ccm_state *ccm, 350 unsigned char *tag, unsigned long *taglen); 351 352int ccm_memory(int cipher, 353 const unsigned char *key, unsigned long keylen, 354 symmetric_key *uskey, 355 const unsigned char *nonce, unsigned long noncelen, 356 const unsigned char *header, unsigned long headerlen, 357 unsigned char *pt, unsigned long ptlen, 358 unsigned char *ct, 359 unsigned char *tag, unsigned long *taglen, 360 int direction); 361 362int ccm_test(void); 363 364#endif /* LTC_CCM_MODE */ 365 366#if defined(LRW_MODE) || defined(LTC_GCM_MODE) 367void gcm_gf_mult(const unsigned char *a, const unsigned char *b, unsigned char *c); 368#endif 369 370 371/* table shared between GCM and LRW */ 372#if defined(LTC_GCM_TABLES) || defined(LTC_LRW_TABLES) || ((defined(LTC_GCM_MODE) || defined(LTC_GCM_MODE)) && defined(LTC_FAST)) 373extern const unsigned char gcm_shift_table[]; 374#endif 375 376#ifdef LTC_GCM_MODE 377 378#define GCM_ENCRYPT LTC_ENCRYPT 379#define GCM_DECRYPT LTC_DECRYPT 380 381#define LTC_GCM_MODE_IV 0 382#define LTC_GCM_MODE_AAD 1 383#define LTC_GCM_MODE_TEXT 2 384 385typedef struct { 386 symmetric_key K; 387 unsigned char H[16], /* multiplier */ 388 X[16], /* accumulator */ 389 Y[16], /* counter */ 390 Y_0[16], /* initial counter */ 391 buf[16]; /* buffer for stuff */ 392 393 int cipher, /* which cipher */ 394 ivmode, /* Which mode is the IV in? */ 395 mode, /* mode the GCM code is in */ 396 buflen; /* length of data in buf */ 397 398 ulong64 totlen, /* 64-bit counter used for IV and AAD */ 399 pttotlen; /* 64-bit counter for the PT */ 400 401#ifdef LTC_GCM_TABLES 402 unsigned char PC[16][256][16] /* 16 tables of 8x128 */ 403#ifdef LTC_GCM_TABLES_SSE2 404__attribute__ ((aligned (16))) 405#endif 406; 407#endif 408} gcm_state; 409 410void gcm_mult_h(gcm_state *gcm, unsigned char *I); 411 412int gcm_init(gcm_state *gcm, int cipher, 413 const unsigned char *key, int keylen); 414 415int gcm_reset(gcm_state *gcm); 416 417int gcm_add_iv(gcm_state *gcm, 418 const unsigned char *IV, unsigned long IVlen); 419 420int gcm_add_aad(gcm_state *gcm, 421 const unsigned char *adata, unsigned long adatalen); 422 423int gcm_process(gcm_state *gcm, 424 unsigned char *pt, unsigned long ptlen, 425 unsigned char *ct, 426 int direction); 427 428int gcm_done(gcm_state *gcm, 429 unsigned char *tag, unsigned long *taglen); 430 431int gcm_memory( int cipher, 432 const unsigned char *key, unsigned long keylen, 433 const unsigned char *IV, unsigned long IVlen, 434 const unsigned char *adata, unsigned long adatalen, 435 unsigned char *pt, unsigned long ptlen, 436 unsigned char *ct, 437 unsigned char *tag, unsigned long *taglen, 438 int direction); 439int gcm_test(void); 440 441#endif /* LTC_GCM_MODE */ 442 443#ifdef LTC_PELICAN 444 445typedef struct pelican_state 446{ 447 symmetric_key K; 448 unsigned char state[16]; 449 int buflen; 450} pelican_state; 451 452int pelican_init(pelican_state *pelmac, const unsigned char *key, unsigned long keylen); 453int pelican_process(pelican_state *pelmac, const unsigned char *in, unsigned long inlen); 454int pelican_done(pelican_state *pelmac, unsigned char *out); 455int pelican_test(void); 456 457int pelican_memory(const unsigned char *key, unsigned long keylen, 458 const unsigned char *in, unsigned long inlen, 459 unsigned char *out); 460 461#endif 462 463#ifdef LTC_XCBC 464 465/* add this to "keylen" to xcbc_init to use a pure three-key XCBC MAC */ 466#define LTC_XCBC_PURE 0x8000UL 467 468typedef struct { 469 unsigned char K[3][MAXBLOCKSIZE], 470 IV[MAXBLOCKSIZE]; 471 472 symmetric_key key; 473 474 int cipher, 475 buflen, 476 blocksize; 477} xcbc_state; 478 479int xcbc_init(xcbc_state *xcbc, int cipher, const unsigned char *key, unsigned long keylen); 480int xcbc_process(xcbc_state *xcbc, const unsigned char *in, unsigned long inlen); 481int xcbc_done(xcbc_state *xcbc, unsigned char *out, unsigned long *outlen); 482int xcbc_memory(int cipher, 483 const unsigned char *key, unsigned long keylen, 484 const unsigned char *in, unsigned long inlen, 485 unsigned char *out, unsigned long *outlen); 486int xcbc_memory_multi(int cipher, 487 const unsigned char *key, unsigned long keylen, 488 unsigned char *out, unsigned long *outlen, 489 const unsigned char *in, unsigned long inlen, ...); 490int xcbc_file(int cipher, 491 const unsigned char *key, unsigned long keylen, 492 const char *filename, 493 unsigned char *out, unsigned long *outlen); 494int xcbc_test(void); 495 496#endif 497 498#ifdef LTC_F9_MODE 499 500typedef struct { 501 unsigned char akey[MAXBLOCKSIZE], 502 ACC[MAXBLOCKSIZE], 503 IV[MAXBLOCKSIZE]; 504 505 symmetric_key key; 506 507 int cipher, 508 buflen, 509 keylen, 510 blocksize; 511} f9_state; 512 513int f9_init(f9_state *f9, int cipher, const unsigned char *key, unsigned long keylen); 514int f9_process(f9_state *f9, const unsigned char *in, unsigned long inlen); 515int f9_done(f9_state *f9, unsigned char *out, unsigned long *outlen); 516int f9_memory(int cipher, 517 const unsigned char *key, unsigned long keylen, 518 const unsigned char *in, unsigned long inlen, 519 unsigned char *out, unsigned long *outlen); 520int f9_memory_multi(int cipher, 521 const unsigned char *key, unsigned long keylen, 522 unsigned char *out, unsigned long *outlen, 523 const unsigned char *in, unsigned long inlen, ...); 524int f9_file(int cipher, 525 const unsigned char *key, unsigned long keylen, 526 const char *filename, 527 unsigned char *out, unsigned long *outlen); 528int f9_test(void); 529 530#endif 531 532#ifdef LTC_CHACHA20POLY1305_MODE 533 534typedef struct { 535 poly1305_state poly; 536 chacha_state chacha; 537 ulong64 aadlen; 538 ulong64 ctlen; 539 int aadflg; 540} chacha20poly1305_state; 541 542#define CHACHA20POLY1305_ENCRYPT LTC_ENCRYPT 543#define CHACHA20POLY1305_DECRYPT LTC_DECRYPT 544 545int chacha20poly1305_init(chacha20poly1305_state *st, const unsigned char *key, unsigned long keylen); 546int chacha20poly1305_setiv(chacha20poly1305_state *st, const unsigned char *iv, unsigned long ivlen); 547int chacha20poly1305_setiv_rfc7905(chacha20poly1305_state *st, const unsigned char *iv, unsigned long ivlen, ulong64 sequence_number); 548int chacha20poly1305_add_aad(chacha20poly1305_state *st, const unsigned char *in, unsigned long inlen); 549int chacha20poly1305_encrypt(chacha20poly1305_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out); 550int chacha20poly1305_decrypt(chacha20poly1305_state *st, const unsigned char *in, unsigned long inlen, unsigned char *out); 551int chacha20poly1305_done(chacha20poly1305_state *st, unsigned char *tag, unsigned long *taglen); 552int chacha20poly1305_memory(const unsigned char *key, unsigned long keylen, 553 const unsigned char *iv, unsigned long ivlen, 554 const unsigned char *aad, unsigned long aadlen, 555 const unsigned char *in, unsigned long inlen, 556 unsigned char *out, 557 unsigned char *tag, unsigned long *taglen, 558 int direction); 559int chacha20poly1305_test(void); 560 561#endif /* LTC_CHACHA20POLY1305_MODE */ 562 563/* ref: HEAD -> master, tag: v1.18.2 */ 564/* git commit: 7e7eb695d581782f04b24dc444cbfde86af59853 */ 565/* commit time: 2018-07-01 22:49:01 +0200 */