1 /*******************************************************************************
2 
3     D language bindings for libsodium's crypto_secretbox_xchacha20poly1305.h
4 
5     License: ISC (see LICENSE.txt)
6 
7 *******************************************************************************/
8 
9 module libsodium.crypto_secretbox_xchacha20poly1305;
10 
11 @nogc nothrow:
12 
13 import libsodium.export_;
14 import libsodium.crypto_stream_xchacha20;
15 
16 extern (C):
17 
18 enum crypto_secretbox_xchacha20poly1305_KEYBYTES = 32U;
19 size_t crypto_secretbox_xchacha20poly1305_keybytes ();
20 
21 enum crypto_secretbox_xchacha20poly1305_NONCEBYTES = 24U;
22 size_t crypto_secretbox_xchacha20poly1305_noncebytes ();
23 
24 enum crypto_secretbox_xchacha20poly1305_MACBYTES = 16U;
25 size_t crypto_secretbox_xchacha20poly1305_macbytes ();
26 
27 enum crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX = crypto_stream_xchacha20_MESSAGEBYTES_MAX - crypto_secretbox_xchacha20poly1305_MACBYTES;
28 size_t crypto_secretbox_xchacha20poly1305_messagebytes_max ();
29 
30 int crypto_secretbox_xchacha20poly1305_easy (
31     ubyte* c,
32     const(ubyte)* m,
33     ulong mlen,
34     const(ubyte)* n,
35     const(ubyte)* k);
36 
37 int crypto_secretbox_xchacha20poly1305_open_easy (
38     ubyte* m,
39     const(ubyte)* c,
40     ulong clen,
41     const(ubyte)* n,
42     const(ubyte)* k);
43 
44 int crypto_secretbox_xchacha20poly1305_detached (
45     ubyte* c,
46     ubyte* mac,
47     const(ubyte)* m,
48     ulong mlen,
49     const(ubyte)* n,
50     const(ubyte)* k);
51 
52 int crypto_secretbox_xchacha20poly1305_open_detached (
53     ubyte* m,
54     const(ubyte)* c,
55     const(ubyte)* mac,
56     ulong clen,
57     const(ubyte)* n,
58     const(ubyte)* k);