summaryrefslogtreecommitdiff
path: root/node/Salsa20.cpp
diff options
context:
space:
mode:
authorAdam Ierymenko <adam.ierymenko@zerotier.com>2018-04-25 06:39:02 -0700
committerGitHub <noreply@github.com>2018-04-25 06:39:02 -0700
commit42ec780a6f6eedef4d8b1d8218bd72fc6ed75cc0 (patch)
tree7bf86c4d92d6a0f77eced79bfc33313c62c7b6dd /node/Salsa20.cpp
parent18c9dc8a0649c866eff9f299f20fa5b19c502e52 (diff)
parent4608880fb06700822d01e9e5d6729fcdeb82b64b (diff)
downloadinfinitytier-42ec780a6f6eedef4d8b1d8218bd72fc6ed75cc0.tar.gz
infinitytier-42ec780a6f6eedef4d8b1d8218bd72fc6ed75cc0.zip
Merge branch 'dev' into netbsd-support
Diffstat (limited to 'node/Salsa20.cpp')
-rw-r--r--node/Salsa20.cpp61
1 files changed, 22 insertions, 39 deletions
diff --git a/node/Salsa20.cpp b/node/Salsa20.cpp
index 3aa19ac6..1d4117e3 100644
--- a/node/Salsa20.cpp
+++ b/node/Salsa20.cpp
@@ -66,65 +66,49 @@ static const _s20sseconsts _S20SSECONSTANTS;
namespace ZeroTier {
-void Salsa20::init(const void *key,unsigned int kbits,const void *iv)
- throw()
+void Salsa20::init(const void *key,const void *iv)
{
#ifdef ZT_SALSA20_SSE
- const uint32_t *k = (const uint32_t *)key;
-
+ const uint32_t *const k = (const uint32_t *)key;
_state.i[0] = 0x61707865;
+ _state.i[1] = 0x3320646e;
+ _state.i[2] = 0x79622d32;
_state.i[3] = 0x6b206574;
- _state.i[13] = k[0];
- _state.i[10] = k[1];
- _state.i[7] = k[2];
_state.i[4] = k[3];
- if (kbits == 256) {
- k += 4;
- _state.i[1] = 0x3320646e;
- _state.i[2] = 0x79622d32;
- } else {
- _state.i[1] = 0x3120646e;
- _state.i[2] = 0x79622d36;
- }
- _state.i[15] = k[0];
- _state.i[12] = k[1];
- _state.i[9] = k[2];
- _state.i[6] = k[3];
- _state.i[14] = ((const uint32_t *)iv)[0];
- _state.i[11] = ((const uint32_t *)iv)[1];
_state.i[5] = 0;
+ _state.i[6] = k[7];
+ _state.i[7] = k[2];
_state.i[8] = 0;
+ _state.i[9] = k[6];
+ _state.i[10] = k[1];
+ _state.i[11] = ((const uint32_t *)iv)[1];
+ _state.i[12] = k[5];
+ _state.i[13] = k[0];
+ _state.i[14] = ((const uint32_t *)iv)[0];
+ _state.i[15] = k[4];
#else
- const char *constants;
- const uint8_t *k = (const uint8_t *)key;
-
+ const char *const constants = "expand 32-byte k";
+ const uint8_t *const k = (const uint8_t *)key;
+ _state.i[0] = U8TO32_LITTLE(constants + 0);
_state.i[1] = U8TO32_LITTLE(k + 0);
_state.i[2] = U8TO32_LITTLE(k + 4);
_state.i[3] = U8TO32_LITTLE(k + 8);
_state.i[4] = U8TO32_LITTLE(k + 12);
- if (kbits == 256) { /* recommended */
- k += 16;
- constants = "expand 32-byte k";
- } else { /* kbits == 128 */
- constants = "expand 16-byte k";
- }
_state.i[5] = U8TO32_LITTLE(constants + 4);
_state.i[6] = U8TO32_LITTLE(((const uint8_t *)iv) + 0);
_state.i[7] = U8TO32_LITTLE(((const uint8_t *)iv) + 4);
_state.i[8] = 0;
_state.i[9] = 0;
_state.i[10] = U8TO32_LITTLE(constants + 8);
- _state.i[11] = U8TO32_LITTLE(k + 0);
- _state.i[12] = U8TO32_LITTLE(k + 4);
- _state.i[13] = U8TO32_LITTLE(k + 8);
- _state.i[14] = U8TO32_LITTLE(k + 12);
+ _state.i[11] = U8TO32_LITTLE(k + 16);
+ _state.i[12] = U8TO32_LITTLE(k + 20);
+ _state.i[13] = U8TO32_LITTLE(k + 24);
+ _state.i[14] = U8TO32_LITTLE(k + 28);
_state.i[15] = U8TO32_LITTLE(constants + 12);
- _state.i[0] = U8TO32_LITTLE(constants + 0);
#endif
}
-void Salsa20::encrypt12(const void *in,void *out,unsigned int bytes)
- throw()
+void Salsa20::crypt12(const void *in,void *out,unsigned int bytes)
{
uint8_t tmp[64];
const uint8_t *m = (const uint8_t *)in;
@@ -623,8 +607,7 @@ void Salsa20::encrypt12(const void *in,void *out,unsigned int bytes)
}
}
-void Salsa20::encrypt20(const void *in,void *out,unsigned int bytes)
- throw()
+void Salsa20::crypt20(const void *in,void *out,unsigned int bytes)
{
uint8_t tmp[64];
const uint8_t *m = (const uint8_t *)in;