From 4f53d09c7e446e20e0a8da3bdb6bdc5b138cf55c Mon Sep 17 00:00:00 2001 From: Adam Ierymenko Date: Mon, 16 Sep 2013 14:47:48 -0400 Subject: Build fix for 32-bit Linux and tweaks to address derivation algorithm. --- node/Identity.cpp | 31 +++++++++++++++++-------------- node/Multicaster.hpp | 8 +++++--- 2 files changed, 22 insertions(+), 17 deletions(-) (limited to 'node') diff --git a/node/Identity.cpp b/node/Identity.cpp index 67892232..298db57b 100644 --- a/node/Identity.cpp +++ b/node/Identity.cpp @@ -32,6 +32,7 @@ #include "Identity.hpp" #include "SHA512.hpp" +#include "Salsa20.hpp" namespace ZeroTier { @@ -130,8 +131,8 @@ bool Identity::fromString(const char *str) // These are fixed parameters and can't be changed without a new // identity type. -#define ZT_IDENTITY_DERIVEADDRESS_DIGESTS 2048 -#define ZT_IDENTITY_DERIVEADDRESS_ROUNDS 8 +#define ZT_IDENTITY_DERIVEADDRESS_MEMORY 16777216 +#define ZT_IDENTITY_DERIVEADDRESS_ROUNDS 32 Address Identity::deriveAddress(const void *keyBytes,unsigned int keyLen) { @@ -149,24 +150,26 @@ Address Identity::deriveAddress(const void *keyBytes,unsigned int keyLen) * to similar concepts. */ - unsigned char finalDigest[ZT_SHA512_DIGEST_LEN]; - unsigned char *digests = new unsigned char[ZT_SHA512_DIGEST_LEN * ZT_IDENTITY_DERIVEADDRESS_DIGESTS]; + unsigned char *ram = new unsigned char[ZT_IDENTITY_DERIVEADDRESS_MEMORY]; + for(unsigned int i=0;i