1*33772c1eSriastradh #ifndef crypto_stream_H
2*33772c1eSriastradh #define crypto_stream_H
3*33772c1eSriastradh 
4*33772c1eSriastradh /*
5*33772c1eSriastradh  *  WARNING: This is just a stream cipher. It is NOT authenticated encryption.
6*33772c1eSriastradh  *  While it provides some protection against eavesdropping, it does NOT
7*33772c1eSriastradh  *  provide any security against active attacks.
8*33772c1eSriastradh  *  Unless you know what you're doing, what you are looking for is probably
9*33772c1eSriastradh  *  the crypto_box functions.
10*33772c1eSriastradh  */
11*33772c1eSriastradh 
12*33772c1eSriastradh #include <stddef.h>
13*33772c1eSriastradh 
14*33772c1eSriastradh #include "crypto_stream_xsalsa20.h"
15*33772c1eSriastradh #include "export.h"
16*33772c1eSriastradh 
17*33772c1eSriastradh #ifdef __cplusplus
18*33772c1eSriastradh # ifdef __GNUC__
19*33772c1eSriastradh #  pragma GCC diagnostic ignored "-Wlong-long"
20*33772c1eSriastradh # endif
21*33772c1eSriastradh extern "C" {
22*33772c1eSriastradh #endif
23*33772c1eSriastradh 
24*33772c1eSriastradh #define crypto_stream_KEYBYTES crypto_stream_xsalsa20_KEYBYTES
25*33772c1eSriastradh SODIUM_EXPORT
26*33772c1eSriastradh size_t  crypto_stream_keybytes(void);
27*33772c1eSriastradh 
28*33772c1eSriastradh #define crypto_stream_NONCEBYTES crypto_stream_xsalsa20_NONCEBYTES
29*33772c1eSriastradh SODIUM_EXPORT
30*33772c1eSriastradh size_t  crypto_stream_noncebytes(void);
31*33772c1eSriastradh 
32*33772c1eSriastradh #define crypto_stream_MESSAGEBYTES_MAX crypto_stream_xsalsa20_MESSAGEBYTES_MAX
33*33772c1eSriastradh SODIUM_EXPORT
34*33772c1eSriastradh size_t  crypto_stream_messagebytes_max(void);
35*33772c1eSriastradh 
36*33772c1eSriastradh #define crypto_stream_PRIMITIVE "xsalsa20"
37*33772c1eSriastradh SODIUM_EXPORT
38*33772c1eSriastradh const char *crypto_stream_primitive(void);
39*33772c1eSriastradh 
40*33772c1eSriastradh SODIUM_EXPORT
41*33772c1eSriastradh int crypto_stream(unsigned char *c, unsigned long long clen,
42*33772c1eSriastradh                   const unsigned char *n, const unsigned char *k);
43*33772c1eSriastradh 
44*33772c1eSriastradh SODIUM_EXPORT
45*33772c1eSriastradh int crypto_stream_xor(unsigned char *c, const unsigned char *m,
46*33772c1eSriastradh                       unsigned long long mlen, const unsigned char *n,
47*33772c1eSriastradh                       const unsigned char *k);
48*33772c1eSriastradh 
49*33772c1eSriastradh SODIUM_EXPORT
50*33772c1eSriastradh void crypto_stream_keygen(unsigned char k[crypto_stream_KEYBYTES]);
51*33772c1eSriastradh 
52*33772c1eSriastradh #ifdef __cplusplus
53*33772c1eSriastradh }
54*33772c1eSriastradh #endif
55*33772c1eSriastradh 
56*33772c1eSriastradh #endif
57