libsodium (1.0.19)
1 #ifndef crypto_box_curve25519xsalsa20poly1305_H
2 #define crypto_box_curve25519xsalsa20poly1305_H
3
4 #include <stddef.h>
5 #include "crypto_stream_xsalsa20.h"
6 #include "export.h"
7
8 #ifdef __cplusplus
9 # ifdef __GNUC__
10 # pragma GCC diagnostic ignored "-Wlong-long"
11 # endif
12 extern "C" {
13 #endif
14
15 #define crypto_box_curve25519xsalsa20poly1305_SEEDBYTES 32U
16 SODIUM_EXPORT
17 size_t crypto_box_curve25519xsalsa20poly1305_seedbytes(void);
18
19 #define crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES 32U
20 SODIUM_EXPORT
21 size_t crypto_box_curve25519xsalsa20poly1305_publickeybytes(void);
22
23 #define crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES 32U
24 SODIUM_EXPORT
25 size_t crypto_box_curve25519xsalsa20poly1305_secretkeybytes(void);
26
27 #define crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES 32U
28 SODIUM_EXPORT
29 size_t crypto_box_curve25519xsalsa20poly1305_beforenmbytes(void);
30
31 #define crypto_box_curve25519xsalsa20poly1305_NONCEBYTES 24U
32 SODIUM_EXPORT
33 size_t crypto_box_curve25519xsalsa20poly1305_noncebytes(void);
34
35 #define crypto_box_curve25519xsalsa20poly1305_MACBYTES 16U
36 SODIUM_EXPORT
37 size_t crypto_box_curve25519xsalsa20poly1305_macbytes(void);
38
39 /* Only for the libsodium API - The NaCl compatibility API would require BOXZEROBYTES extra bytes */
40 #define crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX \
41 (crypto_stream_xsalsa20_MESSAGEBYTES_MAX - crypto_box_curve25519xsalsa20poly1305_MACBYTES)
42 SODIUM_EXPORT
43 size_t crypto_box_curve25519xsalsa20poly1305_messagebytes_max(void);
44
45 SODIUM_EXPORT
46 int crypto_box_curve25519xsalsa20poly1305_seed_keypair(unsigned char *pk,
47 unsigned char *sk,
48 const unsigned char *seed)
49 __attribute__ ((nonnull));
50
51 SODIUM_EXPORT
52 int crypto_box_curve25519xsalsa20poly1305_keypair(unsigned char *pk,
53 unsigned char *sk)
54 __attribute__ ((nonnull));
55
56 SODIUM_EXPORT
57 int crypto_box_curve25519xsalsa20poly1305_beforenm(unsigned char *k,
58 const unsigned char *pk,
59 const unsigned char *sk)
60 __attribute__ ((warn_unused_result)) __attribute__ ((nonnull));
61
62 /* -- NaCl compatibility interface ; Requires padding -- */
63
64 #define crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES 16U
65 SODIUM_EXPORT
66 size_t crypto_box_curve25519xsalsa20poly1305_boxzerobytes(void);
67
68 #define crypto_box_curve25519xsalsa20poly1305_ZEROBYTES \
69 (crypto_box_curve25519xsalsa20poly1305_BOXZEROBYTES + \
70 crypto_box_curve25519xsalsa20poly1305_MACBYTES)
71 SODIUM_EXPORT
72 size_t crypto_box_curve25519xsalsa20poly1305_zerobytes(void);
73
74 SODIUM_EXPORT
75 int crypto_box_curve25519xsalsa20poly1305(unsigned char *c,
76 const unsigned char *m,
77 unsigned long long mlen,
78 const unsigned char *n,
79 const unsigned char *pk,
80 const unsigned char *sk)
81 __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(1, 4, 5, 6)));
82
83 SODIUM_EXPORT
84 int crypto_box_curve25519xsalsa20poly1305_open(unsigned char *m,
85 const unsigned char *c,
86 unsigned long long clen,
87 const unsigned char *n,
88 const unsigned char *pk,
89 const unsigned char *sk)
90 __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5, 6)));
91
92 SODIUM_EXPORT
93 int crypto_box_curve25519xsalsa20poly1305_afternm(unsigned char *c,
94 const unsigned char *m,
95 unsigned long long mlen,
96 const unsigned char *n,
97 const unsigned char *k)
98 __attribute__ ((nonnull(1, 4, 5)));
99
100 SODIUM_EXPORT
101 int crypto_box_curve25519xsalsa20poly1305_open_afternm(unsigned char *m,
102 const unsigned char *c,
103 unsigned long long clen,
104 const unsigned char *n,
105 const unsigned char *k)
106 __attribute__ ((warn_unused_result)) __attribute__ ((nonnull(2, 4, 5)));
107
108 #ifdef __cplusplus
109 }
110 #endif
111
112 #endif