summaryrefslogtreecommitdiff
path: root/src/libsodium/crypto_secretbox/xsalsa20poly1305
diff options
context:
space:
mode:
Diffstat (limited to 'src/libsodium/crypto_secretbox/xsalsa20poly1305')
-rw-r--r--src/libsodium/crypto_secretbox/xsalsa20poly1305/checksum1
-rw-r--r--src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/api.h11
-rw-r--r--src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c35
-rw-r--r--src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c26
4 files changed, 73 insertions, 0 deletions
diff --git a/src/libsodium/crypto_secretbox/xsalsa20poly1305/checksum b/src/libsodium/crypto_secretbox/xsalsa20poly1305/checksum
new file mode 100644
index 0000000..af3c689
--- /dev/null
+++ b/src/libsodium/crypto_secretbox/xsalsa20poly1305/checksum
@@ -0,0 +1 @@
+df372f95dd87381b7c9ceb6f340ccaa03d19bed5d9e4ab004d99d847675a9658
diff --git a/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/api.h b/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/api.h
new file mode 100644
index 0000000..5eff3d2
--- /dev/null
+++ b/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/api.h
@@ -0,0 +1,11 @@
+
+#include "crypto_secretbox_xsalsa20poly1305.h"
+
+#define crypto_secretbox crypto_secretbox_xsalsa20poly1305
+#define crypto_secretbox_open crypto_secretbox_xsalsa20poly1305_open
+#define crypto_secretbox_KEYBYTES crypto_secretbox_xsalsa20poly1305_KEYBYTES
+#define crypto_secretbox_NONCEBYTES crypto_secretbox_xsalsa20poly1305_NONCEBYTES
+#define crypto_secretbox_ZEROBYTES crypto_secretbox_xsalsa20poly1305_ZEROBYTES
+#define crypto_secretbox_BOXZEROBYTES crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES
+#define crypto_secretbox_IMPLEMENTATION crypto_secretbox_xsalsa20poly1305_IMPLEMENTATION
+#define crypto_secretbox_VERSION crypto_secretbox_xsalsa20poly1305_VERSION
diff --git a/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c b/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c
new file mode 100644
index 0000000..f68334e
--- /dev/null
+++ b/src/libsodium/crypto_secretbox/xsalsa20poly1305/ref/box_xsalsa20poly1305.c
@@ -0,0 +1,35 @@
+#include "api.h"
+#include "crypto_onetimeauth_poly1305.h"
+#include "crypto_stream_xsalsa20.h"
+
+int crypto_secretbox(
+ unsigned char *c,
+ const unsigned char *m,unsigned long long mlen,
+ const unsigned char *n,
+ const unsigned char *k
+)
+{
+ int i;
+ if (mlen < 32) return -1;
+ crypto_stream_xsalsa20_xor(c,m,mlen,n,k);
+ crypto_onetimeauth_poly1305(c + 16,c + 32,mlen - 32,c);
+ for (i = 0;i < 16;++i) c[i] = 0;
+ return 0;
+}
+
+int crypto_secretbox_open(
+ unsigned char *m,
+ const unsigned char *c,unsigned long long clen,
+ const unsigned char *n,
+ const unsigned char *k
+)
+{
+ int i;
+ unsigned char subkey[32];
+ if (clen < 32) return -1;
+ crypto_stream_xsalsa20(subkey,32,n,k);
+ if (crypto_onetimeauth_poly1305_verify(c + 16,c + 32,clen - 32,subkey) != 0) return -1;
+ crypto_stream_xsalsa20_xor(m,c,clen,n,k);
+ for (i = 0;i < 32;++i) m[i] = 0;
+ return 0;
+}
diff --git a/src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c b/src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c
new file mode 100644
index 0000000..3ab68b1
--- /dev/null
+++ b/src/libsodium/crypto_secretbox/xsalsa20poly1305/secretbox_xsalsa20poly1305_api.c
@@ -0,0 +1,26 @@
+#include "crypto_secretbox_xsalsa20poly1305.h"
+
+size_t
+crypto_secretbox_xsalsa20poly1305_keybytes(void) {
+ return crypto_secretbox_xsalsa20poly1305_KEYBYTES;
+}
+
+size_t
+crypto_secretbox_xsalsa20poly1305_noncebytes(void) {
+ return crypto_secretbox_xsalsa20poly1305_NONCEBYTES;
+}
+
+size_t
+crypto_secretbox_xsalsa20poly1305_zerobytes(void) {
+ return crypto_secretbox_xsalsa20poly1305_ZEROBYTES;
+}
+
+size_t
+crypto_secretbox_xsalsa20poly1305_boxzerobytes(void) {
+ return crypto_secretbox_xsalsa20poly1305_BOXZEROBYTES;
+}
+
+size_t
+crypto_secretbox_xsalsa20poly1305_macbytes(void) {
+ return crypto_secretbox_xsalsa20poly1305_MACBYTES;
+}