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