From cdc830c1cc7c9202881530295cdbbf69e6a03a98 Mon Sep 17 00:00:00 2001 From: David Garske Date: Tue, 17 Nov 2015 10:15:36 -0800 Subject: [PATCH] Fixes for build errors with new signature and hash wrapping functions. Disabled MD2/4 hash wrapping. --- wolfcrypt/src/hash.c | 52 +++++++++++++++++---------------------- wolfcrypt/src/signature.c | 14 +++++++++++ 2 files changed, 36 insertions(+), 30 deletions(-) diff --git a/wolfcrypt/src/hash.c b/wolfcrypt/src/hash.c index 86dd1953d..3096ec7bd 100644 --- a/wolfcrypt/src/hash.c +++ b/wolfcrypt/src/hash.c @@ -29,16 +29,6 @@ #include -#ifdef WOLFSSL_MD2 -#include -#endif -#ifndef NO_MD4 -#include -#endif -#ifndef NO_MD5 -#include -#endif - /* Get Hash digest size */ int wc_HashGetDigestSize(enum wc_HashType hash_type) @@ -46,16 +36,6 @@ int wc_HashGetDigestSize(enum wc_HashType hash_type) int dig_size = BAD_FUNC_ARG; switch(hash_type) { -#ifdef WOLFSSL_MD2 - case WC_HASH_TYPE_MD2: - dig_size = MD2_DIGEST_SIZE; - break; -#endif -#ifndef NO_MD4 - case WC_HASH_TYPE_MD4: - dig_size = MD4_DIGEST_SIZE; - break; -#endif #ifndef NO_MD5 case WC_HASH_TYPE_MD5: dig_size = MD5_DIGEST_SIZE; @@ -82,8 +62,16 @@ int wc_HashGetDigestSize(enum wc_HashType hash_type) break; #endif /* WOLFSSL_SHA512 */ + /* Not Supported */ +#ifdef WOLFSSL_MD2 + case WC_HASH_TYPE_MD2: +#endif +#ifndef NO_MD4 + case WC_HASH_TYPE_MD4: +#endif case WC_HASH_TYPE_NONE: default: + dig_size = BAD_FUNC_ARG; break; } return dig_size; @@ -101,19 +89,15 @@ int wc_Hash(enum wc_HashType hash_type, const byte* data, if (hash_len < dig_size) { return BUFFER_E; } + + /* Supress possible unused arg if all hashing is disabled */ + (void)data; + (void)data_len; + (void)hash; + (void)hash_len; switch(hash_type) { -#ifdef WOLFSSL_MD2 - case WC_HASH_TYPE_MD2: - ret = wc_Md2Hash(data, data_len, hash); - break; -#endif -#ifndef NO_MD4 - case WC_HASH_TYPE_MD4: - ret = wc_Md4Hash(data, data_len, hash); - break; -#endif #ifndef NO_MD5 case WC_HASH_TYPE_MD5: ret = wc_Md5Hash(data, data_len, hash); @@ -140,9 +124,17 @@ int wc_Hash(enum wc_HashType hash_type, const byte* data, break; #endif /* WOLFSSL_SHA512 */ + /* Not Supported */ +#ifdef WOLFSSL_MD2 + case WC_HASH_TYPE_MD2: +#endif +#ifndef NO_MD4 + case WC_HASH_TYPE_MD4: +#endif case WC_HASH_TYPE_NONE: default: WOLFSSL_MSG("wc_Hash: Bad hash type"); + ret = BAD_FUNC_ARG; break; } return ret; diff --git a/wolfcrypt/src/signature.c b/wolfcrypt/src/signature.c index 840dd394a..10aa9969f 100644 --- a/wolfcrypt/src/signature.c +++ b/wolfcrypt/src/signature.c @@ -35,6 +35,13 @@ #include #endif +/* If ECC and RSA are disabled then disable signature wrapper */ +#if !defined(HAVE_ECC) && defined(NO_RSA) +#undef NO_SIG_WRAPPER +#define NO_SIG_WRAPPER +#endif + +/* Signature wrapper disabled check */ #ifndef NO_SIG_WRAPPER int wc_SignatureGetSize(enum wc_SignatureType sig_type, @@ -42,6 +49,10 @@ int wc_SignatureGetSize(enum wc_SignatureType sig_type, { int sig_len = BAD_FUNC_ARG; + /* Supress possible unused args if all signature types are disabled */ + (void)key; + (void)key_len; + switch(sig_type) { #ifdef HAVE_ECC case WC_SIGNATURE_TYPE_ECC: @@ -169,6 +180,9 @@ int wc_SignatureGenerate( int ret, hash_len; byte *hash_data = NULL; + /* Supress possible unused arg if all signature types are disabled */ + (void)rng; + /* Check arguments */ if (data == NULL || data_len <= 0 || sig == NULL || sig_len == NULL || *sig_len <= 0 || key == NULL || key_len <= 0) {