1#ifndef crypto_aead_chacha20poly1305_H 2#define crypto_aead_chacha20poly1305_H 3 4#if 0 5#include <stddef.h> 6#endif 7#include "export.h" 8 9#ifdef __cplusplus 10# ifdef __GNUC__ 11# pragma GCC diagnostic ignored "-Wlong-long" 12# endif 13extern "C" { 14#endif 15 16/* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */ 17 18#define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U 19SODIUM_EXPORT 20size_t crypto_aead_chacha20poly1305_ietf_keybytes(void); 21 22#define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U 23SODIUM_EXPORT 24size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void); 25 26#define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U 27 28SODIUM_EXPORT 29size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void); 30 31#define crypto_aead_chacha20poly1305_ietf_ABYTES 16U 32SODIUM_EXPORT 33size_t crypto_aead_chacha20poly1305_ietf_abytes(void); 34 35#define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \ 36 SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \ 37 (64ULL * (1ULL << 32) - 64ULL) - crypto_aead_chacha20poly1305_ietf_ABYTES) 38SODIUM_EXPORT 39size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void); 40 41SODIUM_EXPORT 42int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c, 43 unsigned long long *clen_p, 44 const unsigned char *m, 45 unsigned long long mlen, 46 const unsigned char *ad, 47 unsigned long long adlen, 48 const unsigned char *nsec, 49 const unsigned char *npub, 50 const unsigned char *k); 51 52SODIUM_EXPORT 53int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m, 54 unsigned long long *mlen_p, 55 unsigned char *nsec, 56 const unsigned char *c, 57 unsigned long long clen, 58 const unsigned char *ad, 59 unsigned long long adlen, 60 const unsigned char *npub, 61 const unsigned char *k) 62 __attribute__ ((warn_unused_result)); 63 64SODIUM_EXPORT 65int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c, 66 unsigned char *mac, 67 unsigned long long *maclen_p, 68 const unsigned char *m, 69 unsigned long long mlen, 70 const unsigned char *ad, 71 unsigned long long adlen, 72 const unsigned char *nsec, 73 const unsigned char *npub, 74 const unsigned char *k); 75 76SODIUM_EXPORT 77int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m, 78 unsigned char *nsec, 79 const unsigned char *c, 80 unsigned long long clen, 81 const unsigned char *mac, 82 const unsigned char *ad, 83 unsigned long long adlen, 84 const unsigned char *npub, 85 const unsigned char *k) 86 __attribute__ ((warn_unused_result)); 87 88SODIUM_EXPORT 89void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]); 90 91/* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */ 92 93#define crypto_aead_chacha20poly1305_KEYBYTES 32U 94SODIUM_EXPORT 95size_t crypto_aead_chacha20poly1305_keybytes(void); 96 97#define crypto_aead_chacha20poly1305_NSECBYTES 0U 98SODIUM_EXPORT 99size_t crypto_aead_chacha20poly1305_nsecbytes(void); 100 101#define crypto_aead_chacha20poly1305_NPUBBYTES 8U 102SODIUM_EXPORT 103size_t crypto_aead_chacha20poly1305_npubbytes(void); 104 105#define crypto_aead_chacha20poly1305_ABYTES 16U 106SODIUM_EXPORT 107size_t crypto_aead_chacha20poly1305_abytes(void); 108 109#define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \ 110 (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES) 111SODIUM_EXPORT 112size_t crypto_aead_chacha20poly1305_messagebytes_max(void); 113 114SODIUM_EXPORT 115int crypto_aead_chacha20poly1305_encrypt(unsigned char *c, 116 unsigned long long *clen_p, 117 const unsigned char *m, 118 unsigned long long mlen, 119 const unsigned char *ad, 120 unsigned long long adlen, 121 const unsigned char *nsec, 122 const unsigned char *npub, 123 const unsigned char *k); 124 125SODIUM_EXPORT 126int crypto_aead_chacha20poly1305_decrypt(unsigned char *m, 127 unsigned long long *mlen_p, 128 unsigned char *nsec, 129 const unsigned char *c, 130 unsigned long long clen, 131 const unsigned char *ad, 132 unsigned long long adlen, 133 const unsigned char *npub, 134 const unsigned char *k) 135 __attribute__ ((warn_unused_result)); 136 137SODIUM_EXPORT 138int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c, 139 unsigned char *mac, 140 unsigned long long *maclen_p, 141 const unsigned char *m, 142 unsigned long long mlen, 143 const unsigned char *ad, 144 unsigned long long adlen, 145 const unsigned char *nsec, 146 const unsigned char *npub, 147 const unsigned char *k); 148 149SODIUM_EXPORT 150int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m, 151 unsigned char *nsec, 152 const unsigned char *c, 153 unsigned long long clen, 154 const unsigned char *mac, 155 const unsigned char *ad, 156 unsigned long long adlen, 157 const unsigned char *npub, 158 const unsigned char *k) 159 __attribute__ ((warn_unused_result)); 160 161SODIUM_EXPORT 162void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]); 163 164/* Aliases */ 165 166#define crypto_aead_chacha20poly1305_IETF_KEYBYTES crypto_aead_chacha20poly1305_ietf_KEYBYTES 167#define crypto_aead_chacha20poly1305_IETF_NSECBYTES crypto_aead_chacha20poly1305_ietf_NSECBYTES 168#define crypto_aead_chacha20poly1305_IETF_NPUBBYTES crypto_aead_chacha20poly1305_ietf_NPUBBYTES 169#define crypto_aead_chacha20poly1305_IETF_ABYTES crypto_aead_chacha20poly1305_ietf_ABYTES 170#define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX 171 172#ifdef __cplusplus 173} 174#endif 175 176#endif 177#ifndef crypto_aead_chacha20poly1305_H 178#define crypto_aead_chacha20poly1305_H 179 180#if 0 181#include <stddef.h> 182#endif 183#include "export.h" 184 185#ifdef __cplusplus 186# ifdef __GNUC__ 187# pragma GCC diagnostic ignored "-Wlong-long" 188# endif 189extern "C" { 190#endif 191 192/* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */ 193 194#define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U 195SODIUM_EXPORT 196size_t crypto_aead_chacha20poly1305_ietf_keybytes(void); 197 198#define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U 199SODIUM_EXPORT 200size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void); 201 202#define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U 203 204SODIUM_EXPORT 205size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void); 206 207#define crypto_aead_chacha20poly1305_ietf_ABYTES 16U 208SODIUM_EXPORT 209size_t crypto_aead_chacha20poly1305_ietf_abytes(void); 210 211#define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \ 212 SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \ 213 (64ULL * (1ULL << 32) - 64ULL) - crypto_aead_chacha20poly1305_ietf_ABYTES) 214SODIUM_EXPORT 215size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void); 216 217SODIUM_EXPORT 218int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c, 219 unsigned long long *clen_p, 220 const unsigned char *m, 221 unsigned long long mlen, 222 const unsigned char *ad, 223 unsigned long long adlen, 224 const unsigned char *nsec, 225 const unsigned char *npub, 226 const unsigned char *k); 227 228SODIUM_EXPORT 229int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m, 230 unsigned long long *mlen_p, 231 unsigned char *nsec, 232 const unsigned char *c, 233 unsigned long long clen, 234 const unsigned char *ad, 235 unsigned long long adlen, 236 const unsigned char *npub, 237 const unsigned char *k) 238 __attribute__ ((warn_unused_result)); 239 240SODIUM_EXPORT 241int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c, 242 unsigned char *mac, 243 unsigned long long *maclen_p, 244 const unsigned char *m, 245 unsigned long long mlen, 246 const unsigned char *ad, 247 unsigned long long adlen, 248 const unsigned char *nsec, 249 const unsigned char *npub, 250 const unsigned char *k); 251 252SODIUM_EXPORT 253int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m, 254 unsigned char *nsec, 255 const unsigned char *c, 256 unsigned long long clen, 257 const unsigned char *mac, 258 const unsigned char *ad, 259 unsigned long long adlen, 260 const unsigned char *npub, 261 const unsigned char *k) 262 __attribute__ ((warn_unused_result)); 263 264SODIUM_EXPORT 265void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]); 266 267/* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */ 268 269#define crypto_aead_chacha20poly1305_KEYBYTES 32U 270SODIUM_EXPORT 271size_t crypto_aead_chacha20poly1305_keybytes(void); 272 273#define crypto_aead_chacha20poly1305_NSECBYTES 0U 274SODIUM_EXPORT 275size_t crypto_aead_chacha20poly1305_nsecbytes(void); 276 277#define crypto_aead_chacha20poly1305_NPUBBYTES 8U 278SODIUM_EXPORT 279size_t crypto_aead_chacha20poly1305_npubbytes(void); 280 281#define crypto_aead_chacha20poly1305_ABYTES 16U 282SODIUM_EXPORT 283size_t crypto_aead_chacha20poly1305_abytes(void); 284 285#define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \ 286 (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES) 287SODIUM_EXPORT 288size_t crypto_aead_chacha20poly1305_messagebytes_max(void); 289 290SODIUM_EXPORT 291int crypto_aead_chacha20poly1305_encrypt(unsigned char *c, 292 unsigned long long *clen_p, 293 const unsigned char *m, 294 unsigned long long mlen, 295 const unsigned char *ad, 296 unsigned long long adlen, 297 const unsigned char *nsec, 298 const unsigned char *npub, 299 const unsigned char *k); 300 301SODIUM_EXPORT 302int crypto_aead_chacha20poly1305_decrypt(unsigned char *m, 303 unsigned long long *mlen_p, 304 unsigned char *nsec, 305 const unsigned char *c, 306 unsigned long long clen, 307 const unsigned char *ad, 308 unsigned long long adlen, 309 const unsigned char *npub, 310 const unsigned char *k) 311 __attribute__ ((warn_unused_result)); 312 313SODIUM_EXPORT 314int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c, 315 unsigned char *mac, 316 unsigned long long *maclen_p, 317 const unsigned char *m, 318 unsigned long long mlen, 319 const unsigned char *ad, 320 unsigned long long adlen, 321 const unsigned char *nsec, 322 const unsigned char *npub, 323 const unsigned char *k); 324 325SODIUM_EXPORT 326int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m, 327 unsigned char *nsec, 328 const unsigned char *c, 329 unsigned long long clen, 330 const unsigned char *mac, 331 const unsigned char *ad, 332 unsigned long long adlen, 333 const unsigned char *npub, 334 const unsigned char *k) 335 __attribute__ ((warn_unused_result)); 336 337SODIUM_EXPORT 338void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]); 339 340/* Aliases */ 341 342#define crypto_aead_chacha20poly1305_IETF_KEYBYTES crypto_aead_chacha20poly1305_ietf_KEYBYTES 343#define crypto_aead_chacha20poly1305_IETF_NSECBYTES crypto_aead_chacha20poly1305_ietf_NSECBYTES 344#define crypto_aead_chacha20poly1305_IETF_NPUBBYTES crypto_aead_chacha20poly1305_ietf_NPUBBYTES 345#define crypto_aead_chacha20poly1305_IETF_ABYTES crypto_aead_chacha20poly1305_ietf_ABYTES 346#define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX 347 348#ifdef __cplusplus 349} 350#endif 351 352#endif 353#ifndef crypto_aead_chacha20poly1305_H 354#define crypto_aead_chacha20poly1305_H 355 356#if 0 357#include <stddef.h> 358#endif 359#include "export.h" 360 361#ifdef __cplusplus 362# ifdef __GNUC__ 363# pragma GCC diagnostic ignored "-Wlong-long" 364# endif 365extern "C" { 366#endif 367 368/* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */ 369 370#define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U 371SODIUM_EXPORT 372size_t crypto_aead_chacha20poly1305_ietf_keybytes(void); 373 374#define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U 375SODIUM_EXPORT 376size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void); 377 378#define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U 379 380SODIUM_EXPORT 381size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void); 382 383#define crypto_aead_chacha20poly1305_ietf_ABYTES 16U 384SODIUM_EXPORT 385size_t crypto_aead_chacha20poly1305_ietf_abytes(void); 386 387#define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \ 388 SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \ 389 (64ULL * (1ULL << 32) - 64ULL) - crypto_aead_chacha20poly1305_ietf_ABYTES) 390SODIUM_EXPORT 391size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void); 392 393SODIUM_EXPORT 394int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c, 395 unsigned long long *clen_p, 396 const unsigned char *m, 397 unsigned long long mlen, 398 const unsigned char *ad, 399 unsigned long long adlen, 400 const unsigned char *nsec, 401 const unsigned char *npub, 402 const unsigned char *k); 403 404SODIUM_EXPORT 405int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m, 406 unsigned long long *mlen_p, 407 unsigned char *nsec, 408 const unsigned char *c, 409 unsigned long long clen, 410 const unsigned char *ad, 411 unsigned long long adlen, 412 const unsigned char *npub, 413 const unsigned char *k) 414 __attribute__ ((warn_unused_result)); 415 416SODIUM_EXPORT 417int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c, 418 unsigned char *mac, 419 unsigned long long *maclen_p, 420 const unsigned char *m, 421 unsigned long long mlen, 422 const unsigned char *ad, 423 unsigned long long adlen, 424 const unsigned char *nsec, 425 const unsigned char *npub, 426 const unsigned char *k); 427 428SODIUM_EXPORT 429int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m, 430 unsigned char *nsec, 431 const unsigned char *c, 432 unsigned long long clen, 433 const unsigned char *mac, 434 const unsigned char *ad, 435 unsigned long long adlen, 436 const unsigned char *npub, 437 const unsigned char *k) 438 __attribute__ ((warn_unused_result)); 439 440SODIUM_EXPORT 441void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]); 442 443/* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */ 444 445#define crypto_aead_chacha20poly1305_KEYBYTES 32U 446SODIUM_EXPORT 447size_t crypto_aead_chacha20poly1305_keybytes(void); 448 449#define crypto_aead_chacha20poly1305_NSECBYTES 0U 450SODIUM_EXPORT 451size_t crypto_aead_chacha20poly1305_nsecbytes(void); 452 453#define crypto_aead_chacha20poly1305_NPUBBYTES 8U 454SODIUM_EXPORT 455size_t crypto_aead_chacha20poly1305_npubbytes(void); 456 457#define crypto_aead_chacha20poly1305_ABYTES 16U 458SODIUM_EXPORT 459size_t crypto_aead_chacha20poly1305_abytes(void); 460 461#define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \ 462 (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES) 463SODIUM_EXPORT 464size_t crypto_aead_chacha20poly1305_messagebytes_max(void); 465 466SODIUM_EXPORT 467int crypto_aead_chacha20poly1305_encrypt(unsigned char *c, 468 unsigned long long *clen_p, 469 const unsigned char *m, 470 unsigned long long mlen, 471 const unsigned char *ad, 472 unsigned long long adlen, 473 const unsigned char *nsec, 474 const unsigned char *npub, 475 const unsigned char *k); 476 477SODIUM_EXPORT 478int crypto_aead_chacha20poly1305_decrypt(unsigned char *m, 479 unsigned long long *mlen_p, 480 unsigned char *nsec, 481 const unsigned char *c, 482 unsigned long long clen, 483 const unsigned char *ad, 484 unsigned long long adlen, 485 const unsigned char *npub, 486 const unsigned char *k) 487 __attribute__ ((warn_unused_result)); 488 489SODIUM_EXPORT 490int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c, 491 unsigned char *mac, 492 unsigned long long *maclen_p, 493 const unsigned char *m, 494 unsigned long long mlen, 495 const unsigned char *ad, 496 unsigned long long adlen, 497 const unsigned char *nsec, 498 const unsigned char *npub, 499 const unsigned char *k); 500 501SODIUM_EXPORT 502int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m, 503 unsigned char *nsec, 504 const unsigned char *c, 505 unsigned long long clen, 506 const unsigned char *mac, 507 const unsigned char *ad, 508 unsigned long long adlen, 509 const unsigned char *npub, 510 const unsigned char *k) 511 __attribute__ ((warn_unused_result)); 512 513SODIUM_EXPORT 514void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]); 515 516/* Aliases */ 517 518#define crypto_aead_chacha20poly1305_IETF_KEYBYTES crypto_aead_chacha20poly1305_ietf_KEYBYTES 519#define crypto_aead_chacha20poly1305_IETF_NSECBYTES crypto_aead_chacha20poly1305_ietf_NSECBYTES 520#define crypto_aead_chacha20poly1305_IETF_NPUBBYTES crypto_aead_chacha20poly1305_ietf_NPUBBYTES 521#define crypto_aead_chacha20poly1305_IETF_ABYTES crypto_aead_chacha20poly1305_ietf_ABYTES 522#define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX 523 524#ifdef __cplusplus 525} 526#endif 527 528#endif 529#ifndef crypto_aead_chacha20poly1305_H 530#define crypto_aead_chacha20poly1305_H 531 532#if 0 533#include <stddef.h> 534#endif 535#include "export.h" 536 537#ifdef __cplusplus 538# ifdef __GNUC__ 539# pragma GCC diagnostic ignored "-Wlong-long" 540# endif 541extern "C" { 542#endif 543 544/* -- IETF ChaCha20-Poly1305 construction with a 96-bit nonce and a 32-bit internal counter -- */ 545 546#define crypto_aead_chacha20poly1305_ietf_KEYBYTES 32U 547SODIUM_EXPORT 548size_t crypto_aead_chacha20poly1305_ietf_keybytes(void); 549 550#define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U 551SODIUM_EXPORT 552size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void); 553 554#define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U 555 556SODIUM_EXPORT 557size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void); 558 559#define crypto_aead_chacha20poly1305_ietf_ABYTES 16U 560SODIUM_EXPORT 561size_t crypto_aead_chacha20poly1305_ietf_abytes(void); 562 563#define crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX \ 564 SODIUM_MIN(SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ietf_ABYTES, \ 565 (64ULL * (1ULL << 32) - 64ULL) - crypto_aead_chacha20poly1305_ietf_ABYTES) 566SODIUM_EXPORT 567size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void); 568 569SODIUM_EXPORT 570int crypto_aead_chacha20poly1305_ietf_encrypt(unsigned char *c, 571 unsigned long long *clen_p, 572 const unsigned char *m, 573 unsigned long long mlen, 574 const unsigned char *ad, 575 unsigned long long adlen, 576 const unsigned char *nsec, 577 const unsigned char *npub, 578 const unsigned char *k); 579 580SODIUM_EXPORT 581int crypto_aead_chacha20poly1305_ietf_decrypt(unsigned char *m, 582 unsigned long long *mlen_p, 583 unsigned char *nsec, 584 const unsigned char *c, 585 unsigned long long clen, 586 const unsigned char *ad, 587 unsigned long long adlen, 588 const unsigned char *npub, 589 const unsigned char *k) 590 __attribute__ ((warn_unused_result)); 591 592SODIUM_EXPORT 593int crypto_aead_chacha20poly1305_ietf_encrypt_detached(unsigned char *c, 594 unsigned char *mac, 595 unsigned long long *maclen_p, 596 const unsigned char *m, 597 unsigned long long mlen, 598 const unsigned char *ad, 599 unsigned long long adlen, 600 const unsigned char *nsec, 601 const unsigned char *npub, 602 const unsigned char *k); 603 604SODIUM_EXPORT 605int crypto_aead_chacha20poly1305_ietf_decrypt_detached(unsigned char *m, 606 unsigned char *nsec, 607 const unsigned char *c, 608 unsigned long long clen, 609 const unsigned char *mac, 610 const unsigned char *ad, 611 unsigned long long adlen, 612 const unsigned char *npub, 613 const unsigned char *k) 614 __attribute__ ((warn_unused_result)); 615 616SODIUM_EXPORT 617void crypto_aead_chacha20poly1305_ietf_keygen(unsigned char k[crypto_aead_chacha20poly1305_ietf_KEYBYTES]); 618 619/* -- Original ChaCha20-Poly1305 construction with a 64-bit nonce and a 64-bit internal counter -- */ 620 621#define crypto_aead_chacha20poly1305_KEYBYTES 32U 622SODIUM_EXPORT 623size_t crypto_aead_chacha20poly1305_keybytes(void); 624 625#define crypto_aead_chacha20poly1305_NSECBYTES 0U 626SODIUM_EXPORT 627size_t crypto_aead_chacha20poly1305_nsecbytes(void); 628 629#define crypto_aead_chacha20poly1305_NPUBBYTES 8U 630SODIUM_EXPORT 631size_t crypto_aead_chacha20poly1305_npubbytes(void); 632 633#define crypto_aead_chacha20poly1305_ABYTES 16U 634SODIUM_EXPORT 635size_t crypto_aead_chacha20poly1305_abytes(void); 636 637#define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \ 638 (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES) 639SODIUM_EXPORT 640size_t crypto_aead_chacha20poly1305_messagebytes_max(void); 641 642SODIUM_EXPORT 643int crypto_aead_chacha20poly1305_encrypt(unsigned char *c, 644 unsigned long long *clen_p, 645 const unsigned char *m, 646 unsigned long long mlen, 647 const unsigned char *ad, 648 unsigned long long adlen, 649 const unsigned char *nsec, 650 const unsigned char *npub, 651 const unsigned char *k); 652 653SODIUM_EXPORT 654int crypto_aead_chacha20poly1305_decrypt(unsigned char *m, 655 unsigned long long *mlen_p, 656 unsigned char *nsec, 657 const unsigned char *c, 658 unsigned long long clen, 659 const unsigned char *ad, 660 unsigned long long adlen, 661 const unsigned char *npub, 662 const unsigned char *k) 663 __attribute__ ((warn_unused_result)); 664 665SODIUM_EXPORT 666int crypto_aead_chacha20poly1305_encrypt_detached(unsigned char *c, 667 unsigned char *mac, 668 unsigned long long *maclen_p, 669 const unsigned char *m, 670 unsigned long long mlen, 671 const unsigned char *ad, 672 unsigned long long adlen, 673 const unsigned char *nsec, 674 const unsigned char *npub, 675 const unsigned char *k); 676 677SODIUM_EXPORT 678int crypto_aead_chacha20poly1305_decrypt_detached(unsigned char *m, 679 unsigned char *nsec, 680 const unsigned char *c, 681 unsigned long long clen, 682 const unsigned char *mac, 683 const unsigned char *ad, 684 unsigned long long adlen, 685 const unsigned char *npub, 686 const unsigned char *k) 687 __attribute__ ((warn_unused_result)); 688 689SODIUM_EXPORT 690void crypto_aead_chacha20poly1305_keygen(unsigned char k[crypto_aead_chacha20poly1305_KEYBYTES]); 691 692/* Aliases */ 693 694#define crypto_aead_chacha20poly1305_IETF_KEYBYTES crypto_aead_chacha20poly1305_ietf_KEYBYTES 695#define crypto_aead_chacha20poly1305_IETF_NSECBYTES crypto_aead_chacha20poly1305_ietf_NSECBYTES 696#define crypto_aead_chacha20poly1305_IETF_NPUBBYTES crypto_aead_chacha20poly1305_ietf_NPUBBYTES 697#define crypto_aead_chacha20poly1305_IETF_ABYTES crypto_aead_chacha20poly1305_ietf_ABYTES 698#define crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX 699 700#ifdef __cplusplus 701} 702#endif 703 704#endif 705