common: Move MD5 hash to hash_algo[] array.
MD5 is being called directly in some places, but it is not available via hash_lookup_algo("md5"). This is inconsistent with other hasing routines. To resolve this, add an "md5" entry to hash_algos[]. The #ifdef clause looks funnier than those for other entries. This is because both MD5 and SPL_MD5 configs exist, whereas the other hashes do not have "SPL_" entries. The long term plan is to get rid of the ifdefs, so those should not be expected to survive much longer. The md5 entry does not have .hash_init/update/finish members. That's okay because hash_progressive_lookup_algo() will catch that, and return -EPROTONOSUPPORT, while hash_lookup_algo() will return the correct pointer. Signed-off-by: Alexandru Gagniuc <mr.nuke.me@gmail.com> [trini: Use CONFIG_IS_ENABLED not IS_ENABLED for MD5 check] Signed-off-by: Tom Rini <trini@konsulko.com>
This commit is contained in:

committed by
Tom Rini

parent
0721209699
commit
fe54aeaa4a
@@ -207,12 +207,25 @@ static int hash_finish_crc32(struct hash_algo *algo, void *ctx, void *dest_buf,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_HOSTCC
|
||||||
|
# define I_WANT_MD5 1
|
||||||
|
#else
|
||||||
|
# define I_WANT_MD5 CONFIG_IS_ENABLED(MD5)
|
||||||
|
#endif
|
||||||
/*
|
/*
|
||||||
* These are the hash algorithms we support. If we have hardware acceleration
|
* These are the hash algorithms we support. If we have hardware acceleration
|
||||||
* is enable we will use that, otherwise a software version of the algorithm.
|
* is enable we will use that, otherwise a software version of the algorithm.
|
||||||
* Note that algorithm names must be in lower case.
|
* Note that algorithm names must be in lower case.
|
||||||
*/
|
*/
|
||||||
static struct hash_algo hash_algo[] = {
|
static struct hash_algo hash_algo[] = {
|
||||||
|
#if I_WANT_MD5
|
||||||
|
{
|
||||||
|
.name = "md5",
|
||||||
|
.digest_size = MD5_SUM_LEN,
|
||||||
|
.chunk_size = CHUNKSZ_MD5,
|
||||||
|
.hash_func_ws = md5_wd,
|
||||||
|
},
|
||||||
|
#endif
|
||||||
#ifdef CONFIG_SHA1
|
#ifdef CONFIG_SHA1
|
||||||
{
|
{
|
||||||
.name = "sha1",
|
.name = "sha1",
|
||||||
|
@@ -31,6 +31,7 @@ struct fdt_region;
|
|||||||
#define IMAGE_ENABLE_OF_LIBFDT 1
|
#define IMAGE_ENABLE_OF_LIBFDT 1
|
||||||
#define CONFIG_FIT_VERBOSE 1 /* enable fit_format_{error,warning}() */
|
#define CONFIG_FIT_VERBOSE 1 /* enable fit_format_{error,warning}() */
|
||||||
#define CONFIG_FIT_RSASSA_PSS 1
|
#define CONFIG_FIT_RSASSA_PSS 1
|
||||||
|
#define CONFIG_MD5
|
||||||
#define CONFIG_SHA1
|
#define CONFIG_SHA1
|
||||||
#define CONFIG_SHA256
|
#define CONFIG_SHA256
|
||||||
#define CONFIG_SHA384
|
#define CONFIG_SHA384
|
||||||
|
@@ -8,6 +8,8 @@
|
|||||||
|
|
||||||
#include "compiler.h"
|
#include "compiler.h"
|
||||||
|
|
||||||
|
#define MD5_SUM_LEN 16
|
||||||
|
|
||||||
struct MD5Context {
|
struct MD5Context {
|
||||||
__u32 buf[4];
|
__u32 buf[4];
|
||||||
__u32 bits[2];
|
__u32 bits[2];
|
||||||
@@ -28,7 +30,7 @@ void md5 (unsigned char *input, int len, unsigned char output[16]);
|
|||||||
* 'output' must have enough space to hold 16 bytes. If 'chunk' Trigger the
|
* 'output' must have enough space to hold 16 bytes. If 'chunk' Trigger the
|
||||||
* watchdog every 'chunk_sz' bytes of input processed.
|
* watchdog every 'chunk_sz' bytes of input processed.
|
||||||
*/
|
*/
|
||||||
void md5_wd (unsigned char *input, int len, unsigned char output[16],
|
void md5_wd(const unsigned char *input, unsigned int len,
|
||||||
unsigned int chunk_sz);
|
unsigned char output[16], unsigned int chunk_sz);
|
||||||
|
|
||||||
#endif /* _MD5_H */
|
#endif /* _MD5_H */
|
||||||
|
@@ -284,12 +284,12 @@ md5 (unsigned char *input, int len, unsigned char output[16])
|
|||||||
* watchdog every 'chunk_sz' bytes of input processed.
|
* watchdog every 'chunk_sz' bytes of input processed.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
md5_wd (unsigned char *input, int len, unsigned char output[16],
|
md5_wd(const unsigned char *input, unsigned int len, unsigned char output[16],
|
||||||
unsigned int chunk_sz)
|
unsigned int chunk_sz)
|
||||||
{
|
{
|
||||||
struct MD5Context context;
|
struct MD5Context context;
|
||||||
#if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG)
|
#if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG)
|
||||||
unsigned char *end, *curr;
|
const unsigned char *end, *curr;
|
||||||
int chunk;
|
int chunk;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user