xref: /netbsd-src/sys/crypto/sodium/crypto_aead_chacha20poly1305.h (revision a5b568d2b48c11c3ad18eebbe13a39088222eb4b)
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
13 extern "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
19 SODIUM_EXPORT
20 size_t crypto_aead_chacha20poly1305_ietf_keybytes(void);
21 
22 #define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U
23 SODIUM_EXPORT
24 size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void);
25 
26 #define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U
27 
28 SODIUM_EXPORT
29 size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void);
30 
31 #define crypto_aead_chacha20poly1305_ietf_ABYTES 16U
32 SODIUM_EXPORT
33 size_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)
38 SODIUM_EXPORT
39 size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void);
40 
41 SODIUM_EXPORT
42 int 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 
52 SODIUM_EXPORT
53 int 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 
64 SODIUM_EXPORT
65 int 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 
76 SODIUM_EXPORT
77 int 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 
88 SODIUM_EXPORT
89 void 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
94 SODIUM_EXPORT
95 size_t crypto_aead_chacha20poly1305_keybytes(void);
96 
97 #define crypto_aead_chacha20poly1305_NSECBYTES 0U
98 SODIUM_EXPORT
99 size_t crypto_aead_chacha20poly1305_nsecbytes(void);
100 
101 #define crypto_aead_chacha20poly1305_NPUBBYTES 8U
102 SODIUM_EXPORT
103 size_t crypto_aead_chacha20poly1305_npubbytes(void);
104 
105 #define crypto_aead_chacha20poly1305_ABYTES 16U
106 SODIUM_EXPORT
107 size_t crypto_aead_chacha20poly1305_abytes(void);
108 
109 #define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \
110     (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES)
111 SODIUM_EXPORT
112 size_t crypto_aead_chacha20poly1305_messagebytes_max(void);
113 
114 SODIUM_EXPORT
115 int 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 
125 SODIUM_EXPORT
126 int 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 
137 SODIUM_EXPORT
138 int 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 
149 SODIUM_EXPORT
150 int 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 
161 SODIUM_EXPORT
162 void 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
189 extern "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
195 SODIUM_EXPORT
196 size_t crypto_aead_chacha20poly1305_ietf_keybytes(void);
197 
198 #define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U
199 SODIUM_EXPORT
200 size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void);
201 
202 #define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U
203 
204 SODIUM_EXPORT
205 size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void);
206 
207 #define crypto_aead_chacha20poly1305_ietf_ABYTES 16U
208 SODIUM_EXPORT
209 size_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)
214 SODIUM_EXPORT
215 size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void);
216 
217 SODIUM_EXPORT
218 int 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 
228 SODIUM_EXPORT
229 int 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 
240 SODIUM_EXPORT
241 int 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 
252 SODIUM_EXPORT
253 int 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 
264 SODIUM_EXPORT
265 void 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
270 SODIUM_EXPORT
271 size_t crypto_aead_chacha20poly1305_keybytes(void);
272 
273 #define crypto_aead_chacha20poly1305_NSECBYTES 0U
274 SODIUM_EXPORT
275 size_t crypto_aead_chacha20poly1305_nsecbytes(void);
276 
277 #define crypto_aead_chacha20poly1305_NPUBBYTES 8U
278 SODIUM_EXPORT
279 size_t crypto_aead_chacha20poly1305_npubbytes(void);
280 
281 #define crypto_aead_chacha20poly1305_ABYTES 16U
282 SODIUM_EXPORT
283 size_t crypto_aead_chacha20poly1305_abytes(void);
284 
285 #define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \
286     (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES)
287 SODIUM_EXPORT
288 size_t crypto_aead_chacha20poly1305_messagebytes_max(void);
289 
290 SODIUM_EXPORT
291 int 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 
301 SODIUM_EXPORT
302 int 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 
313 SODIUM_EXPORT
314 int 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 
325 SODIUM_EXPORT
326 int 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 
337 SODIUM_EXPORT
338 void 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
365 extern "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
371 SODIUM_EXPORT
372 size_t crypto_aead_chacha20poly1305_ietf_keybytes(void);
373 
374 #define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U
375 SODIUM_EXPORT
376 size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void);
377 
378 #define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U
379 
380 SODIUM_EXPORT
381 size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void);
382 
383 #define crypto_aead_chacha20poly1305_ietf_ABYTES 16U
384 SODIUM_EXPORT
385 size_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)
390 SODIUM_EXPORT
391 size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void);
392 
393 SODIUM_EXPORT
394 int 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 
404 SODIUM_EXPORT
405 int 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 
416 SODIUM_EXPORT
417 int 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 
428 SODIUM_EXPORT
429 int 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 
440 SODIUM_EXPORT
441 void 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
446 SODIUM_EXPORT
447 size_t crypto_aead_chacha20poly1305_keybytes(void);
448 
449 #define crypto_aead_chacha20poly1305_NSECBYTES 0U
450 SODIUM_EXPORT
451 size_t crypto_aead_chacha20poly1305_nsecbytes(void);
452 
453 #define crypto_aead_chacha20poly1305_NPUBBYTES 8U
454 SODIUM_EXPORT
455 size_t crypto_aead_chacha20poly1305_npubbytes(void);
456 
457 #define crypto_aead_chacha20poly1305_ABYTES 16U
458 SODIUM_EXPORT
459 size_t crypto_aead_chacha20poly1305_abytes(void);
460 
461 #define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \
462     (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES)
463 SODIUM_EXPORT
464 size_t crypto_aead_chacha20poly1305_messagebytes_max(void);
465 
466 SODIUM_EXPORT
467 int 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 
477 SODIUM_EXPORT
478 int 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 
489 SODIUM_EXPORT
490 int 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 
501 SODIUM_EXPORT
502 int 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 
513 SODIUM_EXPORT
514 void 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
541 extern "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
547 SODIUM_EXPORT
548 size_t crypto_aead_chacha20poly1305_ietf_keybytes(void);
549 
550 #define crypto_aead_chacha20poly1305_ietf_NSECBYTES 0U
551 SODIUM_EXPORT
552 size_t crypto_aead_chacha20poly1305_ietf_nsecbytes(void);
553 
554 #define crypto_aead_chacha20poly1305_ietf_NPUBBYTES 12U
555 
556 SODIUM_EXPORT
557 size_t crypto_aead_chacha20poly1305_ietf_npubbytes(void);
558 
559 #define crypto_aead_chacha20poly1305_ietf_ABYTES 16U
560 SODIUM_EXPORT
561 size_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)
566 SODIUM_EXPORT
567 size_t crypto_aead_chacha20poly1305_ietf_messagebytes_max(void);
568 
569 SODIUM_EXPORT
570 int 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 
580 SODIUM_EXPORT
581 int 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 
592 SODIUM_EXPORT
593 int 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 
604 SODIUM_EXPORT
605 int 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 
616 SODIUM_EXPORT
617 void 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
622 SODIUM_EXPORT
623 size_t crypto_aead_chacha20poly1305_keybytes(void);
624 
625 #define crypto_aead_chacha20poly1305_NSECBYTES 0U
626 SODIUM_EXPORT
627 size_t crypto_aead_chacha20poly1305_nsecbytes(void);
628 
629 #define crypto_aead_chacha20poly1305_NPUBBYTES 8U
630 SODIUM_EXPORT
631 size_t crypto_aead_chacha20poly1305_npubbytes(void);
632 
633 #define crypto_aead_chacha20poly1305_ABYTES 16U
634 SODIUM_EXPORT
635 size_t crypto_aead_chacha20poly1305_abytes(void);
636 
637 #define crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX \
638     (SODIUM_SIZE_MAX - crypto_aead_chacha20poly1305_ABYTES)
639 SODIUM_EXPORT
640 size_t crypto_aead_chacha20poly1305_messagebytes_max(void);
641 
642 SODIUM_EXPORT
643 int 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 
653 SODIUM_EXPORT
654 int 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 
665 SODIUM_EXPORT
666 int 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 
677 SODIUM_EXPORT
678 int 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 
689 SODIUM_EXPORT
690 void 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