crypto_aead_chacha20poly1305.h revision 1.1 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