From 8d33413276698d25008a614f37a6998952bf1f6c Mon Sep 17 00:00:00 2001 From: est31 Date: Fri, 24 Jul 2015 21:42:29 +0200 Subject: [PATCH] Make OPENSSL_cleanse available to sha1 too --- sha/sha1.c | 16 ++++++++++++++++ sha/sha256.c | 4 ++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/sha/sha1.c b/sha/sha1.c index 5d5b08b..d075db5 100644 --- a/sha/sha1.c +++ b/sha/sha1.c @@ -61,6 +61,22 @@ #include +/* mem_clr.c */ +unsigned static char cleanse_ctr = 0; +static void OPENSSL_cleanse(void *ptr, size_t len) +{ + unsigned char *p = ptr; + size_t loop = len, ctr = cleanse_ctr; + while (loop--) { + *(p++) = (unsigned char)ctr; + ctr += (17 + ((size_t)p & 0xF)); + } + p = memchr(ptr, (unsigned char)ctr, len); + if (p) + ctr += (63 + (size_t)p); + cleanse_ctr = (unsigned char)ctr; +} + #define DATA_ORDER_IS_BIG_ENDIAN #define SHA_1 diff --git a/sha/sha256.c b/sha/sha256.c index 73a6355..8c477e4 100644 --- a/sha/sha256.c +++ b/sha/sha256.c @@ -10,8 +10,8 @@ # include "sha.h" /* mem_clr.c */ -unsigned char cleanse_ctr = 0; -void OPENSSL_cleanse(void *ptr, size_t len) +unsigned static char cleanse_ctr = 0; +static void OPENSSL_cleanse(void *ptr, size_t len) { unsigned char *p = ptr; size_t loop = len, ctr = cleanse_ctr;