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:
		
							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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue