@ -921,7 +921,6 @@ const char *stroptitype (const u32 opti_type)
case OPTI_TYPE_OPTIMIZED_KERNEL : return OPTI_STR_OPTIMIZED_KERNEL ;
case OPTI_TYPE_ZERO_BYTE : return OPTI_STR_ZERO_BYTE ;
case OPTI_TYPE_PRECOMPUTE_INIT : return OPTI_STR_PRECOMPUTE_INIT ;
case OPTI_TYPE_PRECOMPUTE_MERKLE : return OPTI_STR_PRECOMPUTE_MERKLE ;
case OPTI_TYPE_MEET_IN_MIDDLE : return OPTI_STR_MEET_IN_MIDDLE ;
case OPTI_TYPE_EARLY_SKIP : return OPTI_STR_EARLY_SKIP ;
case OPTI_TYPE_NOT_SALTED : return OPTI_STR_NOT_SALTED ;
@ -1120,212 +1119,6 @@ int input_tokenizer (const u8 *input_buf, const int input_len, token_t *token)
return PARSER_OK ;
}
void decoder_apply_optimizer ( const hashconfig_t * hashconfig , void * data )
{
const u32 hash_type = hashconfig - > hash_type ;
const u32 opti_type = hashconfig - > opti_type ;
u32 * digest_buf32 = ( u32 * ) data ;
u64 * digest_buf64 = ( u64 * ) data ;
if ( opti_type & OPTI_TYPE_PRECOMPUTE_MERKLE )
{
switch ( hash_type )
{
case HASH_TYPE_MD4 :
digest_buf32 [ 0 ] - = MD4M_A ;
digest_buf32 [ 1 ] - = MD4M_B ;
digest_buf32 [ 2 ] - = MD4M_C ;
digest_buf32 [ 3 ] - = MD4M_D ;
break ;
case HASH_TYPE_MD5 :
digest_buf32 [ 0 ] - = MD5M_A ;
digest_buf32 [ 1 ] - = MD5M_B ;
digest_buf32 [ 2 ] - = MD5M_C ;
digest_buf32 [ 3 ] - = MD5M_D ;
break ;
case HASH_TYPE_SHA1 :
digest_buf32 [ 0 ] - = SHA1M_A ;
digest_buf32 [ 1 ] - = SHA1M_B ;
digest_buf32 [ 2 ] - = SHA1M_C ;
digest_buf32 [ 3 ] - = SHA1M_D ;
digest_buf32 [ 4 ] - = SHA1M_E ;
break ;
case HASH_TYPE_SHA224 :
digest_buf32 [ 0 ] - = SHA224M_A ;
digest_buf32 [ 1 ] - = SHA224M_B ;
digest_buf32 [ 2 ] - = SHA224M_C ;
digest_buf32 [ 3 ] - = SHA224M_D ;
digest_buf32 [ 4 ] - = SHA224M_E ;
digest_buf32 [ 5 ] - = SHA224M_F ;
digest_buf32 [ 6 ] - = SHA224M_G ;
break ;
case HASH_TYPE_SHA256 :
digest_buf32 [ 0 ] - = SHA256M_A ;
digest_buf32 [ 1 ] - = SHA256M_B ;
digest_buf32 [ 2 ] - = SHA256M_C ;
digest_buf32 [ 3 ] - = SHA256M_D ;
digest_buf32 [ 4 ] - = SHA256M_E ;
digest_buf32 [ 5 ] - = SHA256M_F ;
digest_buf32 [ 6 ] - = SHA256M_G ;
digest_buf32 [ 7 ] - = SHA256M_H ;
break ;
case HASH_TYPE_SHA384 :
digest_buf64 [ 0 ] - = SHA384M_A ;
digest_buf64 [ 1 ] - = SHA384M_B ;
digest_buf64 [ 2 ] - = SHA384M_C ;
digest_buf64 [ 3 ] - = SHA384M_D ;
digest_buf64 [ 4 ] - = SHA384M_E ;
digest_buf64 [ 5 ] - = SHA384M_F ;
digest_buf64 [ 6 ] - = 0 ;
digest_buf64 [ 7 ] - = 0 ;
break ;
case HASH_TYPE_SHA512 :
digest_buf64 [ 0 ] - = SHA512M_A ;
digest_buf64 [ 1 ] - = SHA512M_B ;
digest_buf64 [ 2 ] - = SHA512M_C ;
digest_buf64 [ 3 ] - = SHA512M_D ;
digest_buf64 [ 4 ] - = SHA512M_E ;
digest_buf64 [ 5 ] - = SHA512M_F ;
digest_buf64 [ 6 ] - = SHA512M_G ;
digest_buf64 [ 7 ] - = SHA512M_H ;
break ;
}
}
}
void encoder_apply_optimizer ( const hashconfig_t * hashconfig , void * data )
{
const u32 hash_type = hashconfig - > hash_type ;
const u32 opti_type = hashconfig - > opti_type ;
u32 * digest_buf32 = ( u32 * ) data ;
u64 * digest_buf64 = ( u64 * ) data ;
if ( opti_type & OPTI_TYPE_PRECOMPUTE_MERKLE )
{
switch ( hash_type )
{
case HASH_TYPE_MD4 :
digest_buf32 [ 0 ] + = MD4M_A ;
digest_buf32 [ 1 ] + = MD4M_B ;
digest_buf32 [ 2 ] + = MD4M_C ;
digest_buf32 [ 3 ] + = MD4M_D ;
break ;
case HASH_TYPE_MD5 :
digest_buf32 [ 0 ] + = MD5M_A ;
digest_buf32 [ 1 ] + = MD5M_B ;
digest_buf32 [ 2 ] + = MD5M_C ;
digest_buf32 [ 3 ] + = MD5M_D ;
break ;
case HASH_TYPE_SHA1 :
digest_buf32 [ 0 ] + = SHA1M_A ;
digest_buf32 [ 1 ] + = SHA1M_B ;
digest_buf32 [ 2 ] + = SHA1M_C ;
digest_buf32 [ 3 ] + = SHA1M_D ;
digest_buf32 [ 4 ] + = SHA1M_E ;
break ;
case HASH_TYPE_SHA224 :
digest_buf32 [ 0 ] + = SHA224M_A ;
digest_buf32 [ 1 ] + = SHA224M_B ;
digest_buf32 [ 2 ] + = SHA224M_C ;
digest_buf32 [ 3 ] + = SHA224M_D ;
digest_buf32 [ 4 ] + = SHA224M_E ;
digest_buf32 [ 5 ] + = SHA224M_F ;
digest_buf32 [ 6 ] + = SHA224M_G ;
break ;
case HASH_TYPE_SHA256 :
digest_buf32 [ 0 ] + = SHA256M_A ;
digest_buf32 [ 1 ] + = SHA256M_B ;
digest_buf32 [ 2 ] + = SHA256M_C ;
digest_buf32 [ 3 ] + = SHA256M_D ;
digest_buf32 [ 4 ] + = SHA256M_E ;
digest_buf32 [ 5 ] + = SHA256M_F ;
digest_buf32 [ 6 ] + = SHA256M_G ;
digest_buf32 [ 7 ] + = SHA256M_H ;
break ;
case HASH_TYPE_SHA384 :
digest_buf64 [ 0 ] + = SHA384M_A ;
digest_buf64 [ 1 ] + = SHA384M_B ;
digest_buf64 [ 2 ] + = SHA384M_C ;
digest_buf64 [ 3 ] + = SHA384M_D ;
digest_buf64 [ 4 ] + = SHA384M_E ;
digest_buf64 [ 5 ] + = SHA384M_F ;
digest_buf64 [ 6 ] + = 0 ;
digest_buf64 [ 7 ] + = 0 ;
break ;
case HASH_TYPE_SHA512 :
digest_buf64 [ 0 ] + = SHA512M_A ;
digest_buf64 [ 1 ] + = SHA512M_B ;
digest_buf64 [ 2 ] + = SHA512M_C ;
digest_buf64 [ 3 ] + = SHA512M_D ;
digest_buf64 [ 4 ] + = SHA512M_E ;
digest_buf64 [ 5 ] + = SHA512M_F ;
digest_buf64 [ 6 ] + = SHA512M_G ;
digest_buf64 [ 7 ] + = SHA512M_H ;
break ;
}
}
}
void decoder_apply_options ( const hashconfig_t * hashconfig , void * data )
{
const u32 opti_type = hashconfig - > opti_type ;
const u64 opts_type = hashconfig - > opts_type ;
const u32 dgst_size = hashconfig - > dgst_size ;
if ( opts_type & OPTS_TYPE_STATE_BUFFER_BE )
{
if ( opti_type & OPTI_TYPE_USES_BITS_64 )
{
u64 * digest_buf64 = ( u64 * ) data ;
for ( u32 i = 0 ; i < dgst_size / 8 ; i + + ) digest_buf64 [ i ] = byte_swap_64 ( digest_buf64 [ i ] ) ;
}
else
{
u32 * digest_buf32 = ( u32 * ) data ;
for ( u32 i = 0 ; i < dgst_size / 4 ; i + + ) digest_buf32 [ i ] = byte_swap_32 ( digest_buf32 [ i ] ) ;
}
}
}
void encoder_apply_options ( const hashconfig_t * hashconfig , void * data )
{
const u32 opti_type = hashconfig - > opti_type ;
const u64 opts_type = hashconfig - > opts_type ;
const u32 dgst_size = hashconfig - > dgst_size ;
if ( opts_type & OPTS_TYPE_STATE_BUFFER_BE )
{
if ( opti_type & OPTI_TYPE_USES_BITS_64 )
{
u64 * digest_buf64 = ( u64 * ) data ;
for ( u32 i = 0 ; i < dgst_size / 8 ; i + + ) digest_buf64 [ i ] = byte_swap_64 ( digest_buf64 [ i ] ) ;
}
else
{
u32 * digest_buf32 = ( u32 * ) data ;
for ( u32 i = 0 ; i < dgst_size / 4 ; i + + ) digest_buf32 [ i ] = byte_swap_32 ( digest_buf32 [ i ] ) ;
}
}
}
bool parse_and_store_generic_salt ( u8 * out_buf , int * out_len , const u8 * in_buf , const int in_len , MAYBE_UNUSED const hashconfig_t * hashconfig )
{
u32 tmp_u32 [ ( 64 * 2 ) + 1 ] = { 0 } ;