diff options
| author | Jung-uk Kim <jkim@FreeBSD.org> | 2016-09-22 13:04:03 +0000 | 
|---|---|---|
| committer | Jung-uk Kim <jkim@FreeBSD.org> | 2016-09-22 13:04:03 +0000 | 
| commit | e1b483878d9824c63d376895da633b0b96fbbaed (patch) | |
| tree | 0846e185ed4cc1159a684e408e772c86ae0fc1a7 /crypto/md32_common.h | |
| parent | 57f1256b1a087adbdf8e5c080dd9ed7975de939a (diff) | |
Diffstat (limited to 'crypto/md32_common.h')
| -rw-r--r-- | crypto/md32_common.h | 10 | 
1 files changed, 9 insertions, 1 deletions
| diff --git a/crypto/md32_common.h b/crypto/md32_common.h index 96828d2693a1d..b5a04bf133bdf 100644 --- a/crypto/md32_common.h +++ b/crypto/md32_common.h @@ -109,6 +109,8 @@   *                                      <appro@fy.chalmers.se>   */ +#include <openssl/crypto.h> +  #if !defined(DATA_ORDER_IS_BIG_ENDIAN) && !defined(DATA_ORDER_IS_LITTLE_ENDIAN)  # error "DATA_ORDER must be defined!"  #endif @@ -329,6 +331,12 @@ int HASH_UPDATE(HASH_CTX *c, const void *data_, size_t len)              data += n;              len -= n;              c->num = 0; +            /* +             * We use memset rather than OPENSSL_cleanse() here deliberately. +             * Using OPENSSL_cleanse() here could be a performance issue. It +             * will get properly cleansed on finalisation so this isn't a +             * security problem. +             */              memset(p, 0, HASH_CBLOCK); /* keep it zeroed */          } else {              memcpy(p + n, data, len); @@ -384,7 +392,7 @@ int HASH_FINAL(unsigned char *md, HASH_CTX *c)      p -= HASH_CBLOCK;      HASH_BLOCK_DATA_ORDER(c, p, 1);      c->num = 0; -    memset(p, 0, HASH_CBLOCK); +    OPENSSL_cleanse(p, HASH_CBLOCK);  #ifndef HASH_MAKE_STRING  # error "HASH_MAKE_STRING must be defined!" | 
