From ffb1e24ef125ba2f56a885e1eb348a1a1cc86d91 Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Sat, 27 Apr 2013 09:12:26 -0700 Subject: [PATCH] Make the crypto_stream_salsa20 implementation switchable at compile-time --- configure.ac | 1 + src/libsodium/crypto_stream/salsa20/ref/api.h | 12 +++--- src/libsodium/include/Makefile.am | 1 + .../include/sodium/crypto_stream_salsa20.h | 5 +++ .../include/sodium/crypto_stream_salsa20.h.in | 39 +++++++++++++++++++ 5 files changed, 51 insertions(+), 7 deletions(-) create mode 100644 src/libsodium/include/sodium/crypto_stream_salsa20.h.in diff --git a/configure.ac b/configure.ac index 0c86a891..ff68b9a5 100644 --- a/configure.ac +++ b/configure.ac @@ -303,6 +303,7 @@ AC_CONFIG_FILES([Makefile src/libsodium/include/Makefile src/libsodium/include/sodium/version.h src/libsodium/include/sodium/crypto_scalarmult_curve25519.h + src/libsodium/include/sodium/crypto_stream_salsa20.h test/default/Makefile test/Makefile ]) diff --git a/src/libsodium/crypto_stream/salsa20/ref/api.h b/src/libsodium/crypto_stream/salsa20/ref/api.h index 3150b270..4e9a8fc1 100644 --- a/src/libsodium/crypto_stream/salsa20/ref/api.h +++ b/src/libsodium/crypto_stream/salsa20/ref/api.h @@ -1,10 +1,8 @@ #include "crypto_stream_salsa20.h" -#define crypto_stream crypto_stream_salsa20 -#define crypto_stream_xor crypto_stream_salsa20_xor -#define crypto_stream_KEYBYTES crypto_stream_salsa20_KEYBYTES -#define crypto_stream_NONCEBYTES crypto_stream_salsa20_NONCEBYTES -#define crypto_stream_PRIMITIVE "salsa20" -#define crypto_stream_IMPLEMENTATION crypto_stream_salsa20_IMPLEMENTATION -#define crypto_stream_VERSION crypto_stream_salsa20_VERSION +#define crypto_stream_salsa20_implementation_name \ + crypto_stream_salsa20_ref_implementation_name + +#define crypto_stream crypto_stream_salsa20_ref +#define crypto_stream_xor crypto_stream_salsa20_ref_xor diff --git a/src/libsodium/include/Makefile.am b/src/libsodium/include/Makefile.am index 82bdeafe..53889369 100644 --- a/src/libsodium/include/Makefile.am +++ b/src/libsodium/include/Makefile.am @@ -55,6 +55,7 @@ SODIUM_EXPORT = \ EXTRA_SRC = $(SODIUM_EXPORT) \ sodium/crypto_scalarmult_curve25519.h.in \ + sodium/crypto_stream_salsa20.h.in \ sodium/version.h.in nobase_include_HEADERS = $(SODIUM_EXPORT) diff --git a/src/libsodium/include/sodium/crypto_stream_salsa20.h b/src/libsodium/include/sodium/crypto_stream_salsa20.h index d9f5fe2e..b80a4327 100644 --- a/src/libsodium/include/sodium/crypto_stream_salsa20.h +++ b/src/libsodium/include/sodium/crypto_stream_salsa20.h @@ -24,6 +24,11 @@ int crypto_stream_salsa20(unsigned char *,unsigned long long,const unsigned char SODIUM_EXPORT int crypto_stream_salsa20_xor(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); +#if 1 +# define crypto_stream_salsa20_ref crypto_stream_salsa20 +# define crypto_stream_salsa20_ref_xor crypto_stream_salsa20_xor +#endif + #ifdef __cplusplus } #endif diff --git a/src/libsodium/include/sodium/crypto_stream_salsa20.h.in b/src/libsodium/include/sodium/crypto_stream_salsa20.h.in new file mode 100644 index 00000000..211d8d86 --- /dev/null +++ b/src/libsodium/include/sodium/crypto_stream_salsa20.h.in @@ -0,0 +1,39 @@ +#ifndef crypto_stream_salsa20_H +#define crypto_stream_salsa20_H + +/* + * WARNING: This is just a stream cipher. It is NOT authenticated encryption. + * While it provides some protection against eavesdropping, it does NOT + * provide any security against active attacks. + * Unless you know what you're doing, what you are looking for is probably + * the crypto_box functions. + */ + +#include "export.h" + +#define crypto_stream_salsa20_KEYBYTES 32U +#define crypto_stream_salsa20_NONCEBYTES 8U + +#ifdef __cplusplus +extern "C" { +#endif + +SODIUM_EXPORT +int crypto_stream_salsa20(unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +SODIUM_EXPORT +int crypto_stream_salsa20_xor(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); + +#if 1 +# define crypto_stream_salsa20_ref crypto_stream_salsa20 +# define crypto_stream_salsa20_ref_xor crypto_stream_salsa20_xor +#endif + +#ifdef __cplusplus +} +#endif + +#define crypto_stream_salsa20_ref crypto_stream_salsa20 +#define crypto_stream_salsa20_ref_xor crypto_stream_salsa20_xor + +#endif