@ -20,7 +20,7 @@
# include <asm/io.h>
# include <asm/io.h>
# include <asm/errno.h>
# include <asm/errno.h>
# ifdef CONFIG_CMD_ SHA1SUM
# ifdef CONFIG_SHA1
static int hash_init_sha1 ( struct hash_algo * algo , void * * ctxp )
static int hash_init_sha1 ( struct hash_algo * algo , void * * ctxp )
{
{
sha1_context * ctx = malloc ( sizeof ( sha1_context ) ) ;
sha1_context * ctx = malloc ( sizeof ( sha1_context ) ) ;
@ -125,12 +125,7 @@ static struct hash_algo hash_algo[] = {
CHUNKSZ_SHA256 ,
CHUNKSZ_SHA256 ,
} ,
} ,
# endif
# endif
/*
# ifdef CONFIG_SHA1
* This is CONFIG_CMD_SHA1SUM instead of CONFIG_SHA1 since otherwise
* it bloats the code for boards which use SHA1 but not the ' hash '
* or ' sha1sum ' commands .
*/
# ifdef CONFIG_CMD_SHA1SUM
{
{
" sha1 " ,
" sha1 " ,
SHA1_SUM_LEN ,
SHA1_SUM_LEN ,
@ -140,7 +135,6 @@ static struct hash_algo hash_algo[] = {
hash_update_sha1 ,
hash_update_sha1 ,
hash_finish_sha1 ,
hash_finish_sha1 ,
} ,
} ,
# define MULTI_HASH
# endif
# endif
# ifdef CONFIG_SHA256
# ifdef CONFIG_SHA256
{
{
@ -152,7 +146,6 @@ static struct hash_algo hash_algo[] = {
hash_update_sha256 ,
hash_update_sha256 ,
hash_finish_sha256 ,
hash_finish_sha256 ,
} ,
} ,
# define MULTI_HASH
# endif
# endif
{
{
" crc32 " ,
" crc32 " ,
@ -165,6 +158,10 @@ static struct hash_algo hash_algo[] = {
} ,
} ,
} ;
} ;
# if defined(CONFIG_SHA256) || defined(CONFIG_CMD_SHA1SUM)
# define MULTI_HASH
# endif
# if defined(CONFIG_HASH_VERIFY) || defined(CONFIG_CMD_HASH)
# if defined(CONFIG_HASH_VERIFY) || defined(CONFIG_CMD_HASH)
# define MULTI_HASH
# define MULTI_HASH
# endif
# endif
@ -311,6 +308,24 @@ int hash_lookup_algo(const char *algo_name, struct hash_algo **algop)
return - EPROTONOSUPPORT ;
return - EPROTONOSUPPORT ;
}
}
int hash_progressive_lookup_algo ( const char * algo_name ,
struct hash_algo * * algop )
{
int i ;
for ( i = 0 ; i < ARRAY_SIZE ( hash_algo ) ; i + + ) {
if ( ! strcmp ( algo_name , hash_algo [ i ] . name ) ) {
if ( hash_algo [ i ] . hash_init ) {
* algop = & hash_algo [ i ] ;
return 0 ;
}
}
}
debug ( " Unknown hash algorithm '%s' \n " , algo_name ) ;
return - EPROTONOSUPPORT ;
}
void hash_show ( struct hash_algo * algo , ulong addr , ulong len , uint8_t * output )
void hash_show ( struct hash_algo * algo , ulong addr , ulong len , uint8_t * output )
{
{
int i ;
int i ;