Make the crypto_stream_salsa20 implementation switchable at compile-time

This commit is contained in:
Frank Denis 2013-04-27 09:12:26 -07:00
parent fd7a96d049
commit ffb1e24ef1
5 changed files with 51 additions and 7 deletions

View File

@ -303,6 +303,7 @@ AC_CONFIG_FILES([Makefile
src/libsodium/include/Makefile src/libsodium/include/Makefile
src/libsodium/include/sodium/version.h src/libsodium/include/sodium/version.h
src/libsodium/include/sodium/crypto_scalarmult_curve25519.h src/libsodium/include/sodium/crypto_scalarmult_curve25519.h
src/libsodium/include/sodium/crypto_stream_salsa20.h
test/default/Makefile test/default/Makefile
test/Makefile test/Makefile
]) ])

View File

@ -1,10 +1,8 @@
#include "crypto_stream_salsa20.h" #include "crypto_stream_salsa20.h"
#define crypto_stream crypto_stream_salsa20 #define crypto_stream_salsa20_implementation_name \
#define crypto_stream_xor crypto_stream_salsa20_xor crypto_stream_salsa20_ref_implementation_name
#define crypto_stream_KEYBYTES crypto_stream_salsa20_KEYBYTES
#define crypto_stream_NONCEBYTES crypto_stream_salsa20_NONCEBYTES #define crypto_stream crypto_stream_salsa20_ref
#define crypto_stream_PRIMITIVE "salsa20" #define crypto_stream_xor crypto_stream_salsa20_ref_xor
#define crypto_stream_IMPLEMENTATION crypto_stream_salsa20_IMPLEMENTATION
#define crypto_stream_VERSION crypto_stream_salsa20_VERSION

View File

@ -55,6 +55,7 @@ SODIUM_EXPORT = \
EXTRA_SRC = $(SODIUM_EXPORT) \ EXTRA_SRC = $(SODIUM_EXPORT) \
sodium/crypto_scalarmult_curve25519.h.in \ sodium/crypto_scalarmult_curve25519.h.in \
sodium/crypto_stream_salsa20.h.in \
sodium/version.h.in sodium/version.h.in
nobase_include_HEADERS = $(SODIUM_EXPORT) nobase_include_HEADERS = $(SODIUM_EXPORT)

View File

@ -24,6 +24,11 @@ int crypto_stream_salsa20(unsigned char *,unsigned long long,const unsigned char
SODIUM_EXPORT SODIUM_EXPORT
int crypto_stream_salsa20_xor(unsigned char *,const unsigned char *,unsigned long long,const unsigned char *,const unsigned char *); 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 #ifdef __cplusplus
} }
#endif #endif

View File

@ -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