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/sodium/version.h
src/libsodium/include/sodium/crypto_scalarmult_curve25519.h
src/libsodium/include/sodium/crypto_stream_salsa20.h
test/default/Makefile
test/Makefile
])

View File

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

View File

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

View File

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

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