CYASSL_SMALL_STACK build option (default enabled)

This commit is contained in:
Moisés Guimarães
2014-04-16 13:25:51 -03:00
parent 48af915a35
commit ac56927e20
6 changed files with 55 additions and 10 deletions

View File

@ -1341,9 +1341,11 @@ AC_ARG_ENABLE([smallstack],
[ ENABLED_SMALL_STACK=yes ]
)
if test "$ENABLED_SMALL_STACK" = "no"
if test "x$ENABLED_SMALL_STACK" = "xyes"
then
AM_CFLAGS="$AM_CFLAGS -DNO_SMALL_STACK"
AM_CFLAGS="$AM_CFLAGS -DCYASSL_SMALL_STACK"
else
AM_CFLAGS="$AM_CFLAGS -DNO_CYASSL_SMALL_STACK"
fi

View File

@ -163,7 +163,7 @@ int blake2b_init_key( blake2b_state *S, const byte outlen, const void *key,
if( blake2b_init_param( S, P ) < 0 ) return -1;
{
#ifndef NO_SMALL_STACK
#ifdef CYASSL_SMALL_STACK
byte* block;
block = (byte*)XMALLOC(BLAKE2B_BLOCKBYTES, NULL, DYNAMIC_TYPE_TMP_BUFFER);
@ -179,7 +179,7 @@ int blake2b_init_key( blake2b_state *S, const byte outlen, const void *key,
secure_zero_memory( block, BLAKE2B_BLOCKBYTES ); /* Burn the key from */
/* memory */
#ifndef NO_SMALL_STACK
#ifdef CYASSL_SMALL_STACK
XFREE(block, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#endif
}
@ -191,7 +191,7 @@ static int blake2b_compress( blake2b_state *S,
{
int i;
#ifndef NO_SMALL_STACK
#ifdef CYASSL_SMALL_STACK
word64* m;
word64* v;
@ -266,7 +266,7 @@ static int blake2b_compress( blake2b_state *S,
#undef G
#undef ROUND
#ifndef NO_SMALL_STACK
#ifdef CYASSL_SMALL_STACK
XFREE(m, NULL, DYNAMIC_TYPE_TMP_BUFFER);
XFREE(v, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#endif

View File

@ -491,6 +491,8 @@ static int camellia_setup128(const unsigned char *key, u32 *subkey)
u32 kll, klr, krl, krr;
u32 il, ir, t0, t1, w0, w1;
u32 kw4l, kw4r, dw, tl, tr;
#ifdef CYASSL_SMALL_STACK
u32* subL;
u32* subR;
@ -503,6 +505,10 @@ static int camellia_setup128(const unsigned char *key, u32 *subkey)
XFREE(subL, NULL, DYNAMIC_TYPE_TMP_BUFFER);
return MEMORY_E;
}
#else
u32 subL[26];
u32 subR[26];
#endif
/**
* k == kll || klr || krl || krr (|| is concatination)
@ -704,8 +710,10 @@ static int camellia_setup128(const unsigned char *key, u32 *subkey)
dw = CamelliaSubkeyL(23) ^ CamelliaSubkeyR(23), dw = CAMELLIA_RL8(dw);
CamelliaSubkeyR(23) = CamelliaSubkeyL(23) ^ dw, CamelliaSubkeyL(23) = dw;
#ifdef CYASSL_SMALL_STACK
XFREE(subL, NULL, DYNAMIC_TYPE_TMP_BUFFER);
XFREE(subR, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#endif
return 0;
}
@ -716,6 +724,8 @@ static int camellia_setup256(const unsigned char *key, u32 *subkey)
u32 krll,krlr,krrl,krrr; /* right half of key */
u32 il, ir, t0, t1, w0, w1; /* temporary variables */
u32 kw4l, kw4r, dw, tl, tr;
#ifdef CYASSL_SMALL_STACK
u32* subL;
u32* subR;
@ -728,6 +738,10 @@ static int camellia_setup256(const unsigned char *key, u32 *subkey)
XFREE(subL, NULL, DYNAMIC_TYPE_TMP_BUFFER);
return MEMORY_E;
}
#else
u32 subL[34];
u32 subR[34];
#endif
/**
* key = (kll || klr || krl || krr || krll || krlr || krrl || krrr)
@ -1003,8 +1017,10 @@ static int camellia_setup256(const unsigned char *key, u32 *subkey)
dw = CamelliaSubkeyL(31) ^ CamelliaSubkeyR(31), dw = CAMELLIA_RL8(dw);
CamelliaSubkeyR(31) = CamelliaSubkeyL(31) ^ dw,CamelliaSubkeyL(31) = dw;
#ifdef CYASSL_SMALL_STACK
XFREE(subL, NULL, DYNAMIC_TYPE_TMP_BUFFER);
XFREE(subR, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#endif
return 0;
}

View File

@ -988,12 +988,16 @@ static INLINE void FPERM(word32* left, word32* right)
static int DesSetKey(const byte* key, int dir, word32* out)
{
#ifdef CYASSL_SMALL_STACK
byte* buffer = (byte*)XMALLOC(56+56+8, NULL, DYNAMIC_TYPE_TMP_BUFFER);
if (!buffer) {
if (buffer == NULL)
return MEMORY_E;
}
else {
#else
byte buffer[56+56+8];
#endif
{
byte* const pc1m = buffer; /* place to modify pc1 into */
byte* const pcr = pc1m + 56; /* place to rotate pc1 into */
byte* const ks = pcr + 56;
@ -1048,7 +1052,9 @@ static int DesSetKey(const byte* key, int dir, word32* out)
}
}
#ifdef CYASSL_SMALL_STACK
XFREE(buffer, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#endif
}
return 0;

View File

@ -133,12 +133,17 @@ static const word32 K[64] = {
static int Transform(Sha256* sha256)
{
word32 S[8], t0, t1;
word32* W;
int i;
#ifdef CYASSL_SMALL_STACK
word32* W;
W = (word32*) XMALLOC(sizeof(word32) * 64, NULL, DYNAMIC_TYPE_TMP_BUFFER);
if (W == NULL)
return MEMORY_E;
#else
word32 W[64];
#endif
/* Copy context->state[] to working vars */
for (i = 0; i < 8; i++)
@ -166,7 +171,9 @@ static int Transform(Sha256* sha256)
sha256->digest[i] += S[i];
}
#ifdef CYASSL_SMALL_STACK
XFREE(W, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#endif
return 0;
}

View File

@ -149,11 +149,16 @@ static int Transform(Sha512* sha512)
word32 j;
word64 T[8];
#ifdef CYASSL_SMALL_STACK
word64* W;
W = (word64*) XMALLOC(sizeof(word64) * 16, NULL, DYNAMIC_TYPE_TMP_BUFFER);
if (W == NULL)
return MEMORY_E;
#else
word64 W[16];
#endif
/* Copy digest to working vars */
XMEMCPY(T, sha512->digest, sizeof(T));
@ -192,7 +197,9 @@ static int Transform(Sha512* sha512)
XMEMSET(W, 0, sizeof(word64) * 16);
XMEMSET(T, 0, sizeof(T));
#ifdef CYASSL_SMALL_STACK
XFREE(W, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#endif
return 0;
}
@ -317,11 +324,16 @@ static int Transform384(Sha384* sha384)
word32 j;
word64 T[8];
#ifdef CYASSL_SMALL_STACK
word64* W;
W = (word64*) XMALLOC(sizeof(word64) * 16, NULL, DYNAMIC_TYPE_TMP_BUFFER);
if (W == NULL)
return MEMORY_E;
#else
word64 W[16];
#endif
/* Copy digest to working vars */
XMEMCPY(T, sha384->digest, sizeof(T));
@ -360,7 +372,9 @@ static int Transform384(Sha384* sha384)
XMEMSET(W, 0, sizeof(word64) * 16);
XMEMSET(T, 0, sizeof(T));
#ifdef CYASSL_SMALL_STACK
XFREE(W, NULL, DYNAMIC_TYPE_TMP_BUFFER);
#endif
return 0;
}