summaryrefslogtreecommitdiff
path: root/src/libsodium/crypto_stream/xsalsa20/ref/xor_xsalsa20.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/libsodium/crypto_stream/xsalsa20/ref/xor_xsalsa20.c')
-rw-r--r--src/libsodium/crypto_stream/xsalsa20/ref/xor_xsalsa20.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/libsodium/crypto_stream/xsalsa20/ref/xor_xsalsa20.c b/src/libsodium/crypto_stream/xsalsa20/ref/xor_xsalsa20.c
new file mode 100644
index 0000000..14cce18
--- /dev/null
+++ b/src/libsodium/crypto_stream/xsalsa20/ref/xor_xsalsa20.c
@@ -0,0 +1,25 @@
+/*
+version 20080913
+D. J. Bernstein
+Public domain.
+*/
+
+#include "api.h"
+#include "crypto_core_hsalsa20.h"
+#include "crypto_stream_salsa20.h"
+
+static const unsigned char sigma[16] = {
+ 'e', 'x', 'p', 'a', 'n', 'd', ' ', '3', '2', '-', 'b', 'y', 't', 'e', ' ', 'k'
+};
+
+int crypto_stream_xor(
+ unsigned char *c,
+ const unsigned char *m,unsigned long long mlen,
+ const unsigned char *n,
+ const unsigned char *k
+)
+{
+ unsigned char subkey[32];
+ crypto_core_hsalsa20(subkey,n,k,sigma);
+ return crypto_stream_salsa20_xor(c,m,mlen,n + 16,subkey);
+}