crypto: Reduce the size of sha512_compress() stack frame
The function sha512_compress() has a local variable that consumes 640 bytes. This is very heavy for embedded devices that have limited stack resources. Handle this by replacing the static allocation with a dynamic one. Signed-off-by: Ilan Peer <ilan.peer@intel.com>
This commit is contained in:
parent
d6e7d4dede
commit
6ec02d77d6
1 changed files with 7 additions and 1 deletions
|
@ -109,9 +109,14 @@ static const u64 K[80] = {
|
||||||
/* compress 1024-bits */
|
/* compress 1024-bits */
|
||||||
static int sha512_compress(struct sha512_state *md, unsigned char *buf)
|
static int sha512_compress(struct sha512_state *md, unsigned char *buf)
|
||||||
{
|
{
|
||||||
u64 S[8], W[80], t0, t1;
|
u64 S[8], t0, t1;
|
||||||
|
u64 *W;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
W = os_malloc(80 * sizeof(u64));
|
||||||
|
if (!W)
|
||||||
|
return -1;
|
||||||
|
|
||||||
/* copy state into S */
|
/* copy state into S */
|
||||||
for (i = 0; i < 8; i++) {
|
for (i = 0; i < 8; i++) {
|
||||||
S[i] = md->state[i];
|
S[i] = md->state[i];
|
||||||
|
@ -146,6 +151,7 @@ static int sha512_compress(struct sha512_state *md, unsigned char *buf)
|
||||||
md->state[i] = md->state[i] + S[i];
|
md->state[i] = md->state[i] + S[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
os_free(W);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue