mirror of
https://github.com/hashcat/hashcat.git
synced 2024-11-22 08:08:10 +00:00
TrueCrypt modules code cleanup
This commit is contained in:
parent
d15793a8b8
commit
f7ba563a28
@ -17,9 +17,11 @@
|
|||||||
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define TC_DATA_LEN (448)
|
||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
|
@ -17,9 +17,11 @@
|
|||||||
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define TC_DATA_LEN (448)
|
||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
|
@ -17,9 +17,11 @@
|
|||||||
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define TC_DATA_LEN (448)
|
||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
|
@ -17,9 +17,11 @@
|
|||||||
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define TC_DATA_LEN (448)
|
||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
|
@ -17,9 +17,11 @@
|
|||||||
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define TC_DATA_LEN (448)
|
||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
|
@ -17,9 +17,11 @@
|
|||||||
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define TC_DATA_LEN (448)
|
||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
|
@ -17,9 +17,11 @@
|
|||||||
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define TC_DATA_LEN (448)
|
||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
|
@ -17,9 +17,11 @@
|
|||||||
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define TC_DATA_LEN (448)
|
||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
|
@ -17,9 +17,11 @@
|
|||||||
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
#include M2S(INCLUDE_PATH/inc_cipher_serpent.cl)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define TC_DATA_LEN (448)
|
||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
|
@ -46,9 +46,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_DATA_LEN ( 448)
|
||||||
#define TC_HEADER_LEN 512
|
#define TC_HEADER_LEN ( 512)
|
||||||
|
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -62,7 +63,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -130,20 +131,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
|
|||||||
|
|
||||||
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
||||||
{
|
{
|
||||||
const size_t st_hash_len = strlen (hashconfig->st_hash);
|
char header[TC_HEADER_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
|
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
|
||||||
|
|
||||||
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
|
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
|
||||||
{
|
|
||||||
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
|
|
||||||
|
|
||||||
tmpdata[i] = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
|
|
||||||
|
|
||||||
hcfree (tmpdata);
|
|
||||||
|
|
||||||
return parser_status;
|
return parser_status;
|
||||||
}
|
}
|
||||||
@ -247,7 +239,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
|
@ -46,9 +46,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_DATA_LEN ( 448)
|
||||||
#define TC_HEADER_LEN 512
|
#define TC_HEADER_LEN ( 512)
|
||||||
|
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -62,7 +63,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -130,20 +131,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
|
|||||||
|
|
||||||
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
||||||
{
|
{
|
||||||
const size_t st_hash_len = strlen (hashconfig->st_hash);
|
char header[TC_HEADER_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
|
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
|
||||||
|
|
||||||
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
|
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
|
||||||
{
|
|
||||||
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
|
|
||||||
|
|
||||||
tmpdata[i] = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
|
|
||||||
|
|
||||||
hcfree (tmpdata);
|
|
||||||
|
|
||||||
return parser_status;
|
return parser_status;
|
||||||
}
|
}
|
||||||
@ -247,7 +239,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
|
@ -46,9 +46,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_DATA_LEN ( 448)
|
||||||
#define TC_HEADER_LEN 512
|
#define TC_HEADER_LEN ( 512)
|
||||||
|
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -62,7 +63,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -130,20 +131,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
|
|||||||
|
|
||||||
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
||||||
{
|
{
|
||||||
const size_t st_hash_len = strlen (hashconfig->st_hash);
|
char header[TC_HEADER_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
|
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
|
||||||
|
|
||||||
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
|
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
|
||||||
{
|
|
||||||
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
|
|
||||||
|
|
||||||
tmpdata[i] = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
|
|
||||||
|
|
||||||
hcfree (tmpdata);
|
|
||||||
|
|
||||||
return parser_status;
|
return parser_status;
|
||||||
}
|
}
|
||||||
@ -247,7 +239,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
|
@ -48,9 +48,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_DATA_LEN ( 448)
|
||||||
#define TC_HEADER_LEN 512
|
#define TC_HEADER_LEN ( 512)
|
||||||
|
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc64_tmp
|
typedef struct tc64_tmp
|
||||||
{
|
{
|
||||||
@ -64,7 +65,7 @@ typedef struct tc64_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -132,20 +133,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
|
|||||||
|
|
||||||
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
||||||
{
|
{
|
||||||
const size_t st_hash_len = strlen (hashconfig->st_hash);
|
char header[TC_HEADER_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
|
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
|
||||||
|
|
||||||
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
|
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
|
||||||
{
|
|
||||||
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
|
|
||||||
|
|
||||||
tmpdata[i] = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
|
|
||||||
|
|
||||||
hcfree (tmpdata);
|
|
||||||
|
|
||||||
return parser_status;
|
return parser_status;
|
||||||
}
|
}
|
||||||
@ -251,7 +243,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
|
@ -48,9 +48,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_DATA_LEN ( 448)
|
||||||
#define TC_HEADER_LEN 512
|
#define TC_HEADER_LEN ( 512)
|
||||||
|
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc64_tmp
|
typedef struct tc64_tmp
|
||||||
{
|
{
|
||||||
@ -64,7 +65,7 @@ typedef struct tc64_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -132,20 +133,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
|
|||||||
|
|
||||||
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
||||||
{
|
{
|
||||||
const size_t st_hash_len = strlen (hashconfig->st_hash);
|
char header[TC_HEADER_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
|
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
|
||||||
|
|
||||||
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
|
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
|
||||||
{
|
|
||||||
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
|
|
||||||
|
|
||||||
tmpdata[i] = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
|
|
||||||
|
|
||||||
hcfree (tmpdata);
|
|
||||||
|
|
||||||
return parser_status;
|
return parser_status;
|
||||||
}
|
}
|
||||||
@ -251,7 +243,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
|
@ -48,9 +48,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_DATA_LEN ( 448)
|
||||||
#define TC_HEADER_LEN 512
|
#define TC_HEADER_LEN ( 512)
|
||||||
|
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc64_tmp
|
typedef struct tc64_tmp
|
||||||
{
|
{
|
||||||
@ -64,7 +65,7 @@ typedef struct tc64_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -132,20 +133,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
|
|||||||
|
|
||||||
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
||||||
{
|
{
|
||||||
const size_t st_hash_len = strlen (hashconfig->st_hash);
|
char header[TC_HEADER_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
|
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
|
||||||
|
|
||||||
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
|
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
|
||||||
{
|
|
||||||
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
|
|
||||||
|
|
||||||
tmpdata[i] = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
|
|
||||||
|
|
||||||
hcfree (tmpdata);
|
|
||||||
|
|
||||||
return parser_status;
|
return parser_status;
|
||||||
}
|
}
|
||||||
@ -251,7 +243,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
|
@ -47,9 +47,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_DATA_LEN ( 448)
|
||||||
#define TC_HEADER_LEN 512
|
#define TC_HEADER_LEN ( 512)
|
||||||
|
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -63,7 +64,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -140,20 +141,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
|
|||||||
|
|
||||||
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
||||||
{
|
{
|
||||||
const size_t st_hash_len = strlen (hashconfig->st_hash);
|
char header[TC_HEADER_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
|
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
|
||||||
|
|
||||||
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
|
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
|
||||||
{
|
|
||||||
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
|
|
||||||
|
|
||||||
tmpdata[i] = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
|
|
||||||
|
|
||||||
hcfree (tmpdata);
|
|
||||||
|
|
||||||
return parser_status;
|
return parser_status;
|
||||||
}
|
}
|
||||||
@ -259,7 +251,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
|
@ -47,9 +47,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_DATA_LEN ( 448)
|
||||||
#define TC_HEADER_LEN 512
|
#define TC_HEADER_LEN ( 512)
|
||||||
|
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -63,7 +64,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -140,20 +141,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
|
|||||||
|
|
||||||
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
||||||
{
|
{
|
||||||
const size_t st_hash_len = strlen (hashconfig->st_hash);
|
char header[TC_HEADER_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
|
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
|
||||||
|
|
||||||
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
|
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
|
||||||
{
|
|
||||||
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
|
|
||||||
|
|
||||||
tmpdata[i] = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
|
|
||||||
|
|
||||||
hcfree (tmpdata);
|
|
||||||
|
|
||||||
return parser_status;
|
return parser_status;
|
||||||
}
|
}
|
||||||
@ -259,7 +251,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
|
@ -47,9 +47,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_DATA_LEN ( 448)
|
||||||
#define TC_HEADER_LEN 512
|
#define TC_HEADER_LEN ( 512)
|
||||||
|
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -63,7 +64,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -136,20 +137,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
|
|||||||
|
|
||||||
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
||||||
{
|
{
|
||||||
const size_t st_hash_len = strlen (hashconfig->st_hash);
|
char header[TC_HEADER_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
|
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
|
||||||
|
|
||||||
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
|
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
|
||||||
{
|
|
||||||
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
|
|
||||||
|
|
||||||
tmpdata[i] = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
|
|
||||||
|
|
||||||
hcfree (tmpdata);
|
|
||||||
|
|
||||||
return parser_status;
|
return parser_status;
|
||||||
}
|
}
|
||||||
@ -255,7 +247,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
|
@ -47,9 +47,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_DATA_LEN ( 448)
|
||||||
#define TC_HEADER_LEN 512
|
#define TC_HEADER_LEN ( 512)
|
||||||
|
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -63,7 +64,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -143,20 +144,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
|
|||||||
|
|
||||||
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
||||||
{
|
{
|
||||||
const size_t st_hash_len = strlen (hashconfig->st_hash);
|
char header[TC_HEADER_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
|
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
|
||||||
|
|
||||||
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
|
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
|
||||||
{
|
|
||||||
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
|
|
||||||
|
|
||||||
tmpdata[i] = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
|
|
||||||
|
|
||||||
hcfree (tmpdata);
|
|
||||||
|
|
||||||
return parser_status;
|
return parser_status;
|
||||||
}
|
}
|
||||||
@ -262,7 +254,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
|
@ -47,9 +47,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_DATA_LEN ( 448)
|
||||||
#define TC_HEADER_LEN 512
|
#define TC_HEADER_LEN ( 512)
|
||||||
|
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -63,7 +64,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -143,20 +144,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
|
|||||||
|
|
||||||
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
||||||
{
|
{
|
||||||
const size_t st_hash_len = strlen (hashconfig->st_hash);
|
char header[TC_HEADER_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
|
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
|
||||||
|
|
||||||
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
|
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
|
||||||
{
|
|
||||||
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
|
|
||||||
|
|
||||||
tmpdata[i] = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
|
|
||||||
|
|
||||||
hcfree (tmpdata);
|
|
||||||
|
|
||||||
return parser_status;
|
return parser_status;
|
||||||
}
|
}
|
||||||
@ -262,7 +254,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
|
@ -47,9 +47,10 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_DATA_LEN ( 448)
|
||||||
#define TC_HEADER_LEN 512
|
#define TC_HEADER_LEN ( 512)
|
||||||
|
#define TC_HEADER_HEX_LEN (TC_HEADER_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -63,7 +64,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -143,20 +144,11 @@ u32 module_pw_max (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED con
|
|||||||
|
|
||||||
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
int module_hash_init_selftest (MAYBE_UNUSED const hashconfig_t *hashconfig, hash_t *hash)
|
||||||
{
|
{
|
||||||
const size_t st_hash_len = strlen (hashconfig->st_hash);
|
char header[TC_HEADER_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char *tmpdata = (char *) hcmalloc (st_hash_len / 2);
|
hex_decode ((const u8 *) hashconfig->st_hash, TC_HEADER_HEX_LEN, (u8 *) header);
|
||||||
|
|
||||||
for (size_t i = 0, j = 0; j < st_hash_len; i += 1, j += 2)
|
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, header, TC_HEADER_LEN);
|
||||||
{
|
|
||||||
const u8 c = hex_to_u8 ((const u8 *) hashconfig->st_hash + j);
|
|
||||||
|
|
||||||
tmpdata[i] = c;
|
|
||||||
}
|
|
||||||
|
|
||||||
const int parser_status = module_hash_decode (hashconfig, hash->digest, hash->salt, hash->esalt, hash->hook_salt, hash->hash_info, tmpdata, st_hash_len / 2);
|
|
||||||
|
|
||||||
hcfree (tmpdata);
|
|
||||||
|
|
||||||
return parser_status;
|
return parser_status;
|
||||||
}
|
}
|
||||||
@ -262,7 +254,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
|
@ -46,8 +46,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
|
||||||
|
|
||||||
|
#define TC_DATA_LEN ( 448)
|
||||||
|
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -61,7 +64,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -132,14 +135,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
||||||
|
|
||||||
token.sep[1] = '$';
|
token.sep[1] = '$';
|
||||||
token.len_min[1] = 128;
|
token.len_min[1] = TC_SALT_HEX_LEN;
|
||||||
token.len_max[1] = 128;
|
token.len_max[1] = TC_SALT_HEX_LEN;
|
||||||
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
token.sep[2] = '$';
|
token.sep[2] = '$';
|
||||||
token.len_min[2] = 896;
|
token.len_min[2] = TC_DATA_HEX_LEN;
|
||||||
token.len_max[2] = 896;
|
token.len_max[2] = TC_DATA_HEX_LEN;
|
||||||
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
@ -151,12 +154,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *salt_pos = token.buf[1];
|
const u8 *salt_pos = token.buf[1];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
|
||||||
{
|
|
||||||
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
salt->salt_len = TC_SALT_LEN;
|
|
||||||
|
|
||||||
// iter
|
// iter
|
||||||
|
|
||||||
@ -166,10 +164,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *data_pos = token.buf[2];
|
const u8 *data_pos = token.buf[2];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
|
||||||
{
|
|
||||||
tc->data_buf[i] = hex_to_u32 (data_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
// entropy
|
// entropy
|
||||||
|
|
||||||
@ -183,7 +178,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
@ -237,25 +232,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// salt
|
// salt
|
||||||
|
|
||||||
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
|
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// data
|
// data
|
||||||
|
|
||||||
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
|
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char data_buf[TC_DATA_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// output
|
// output
|
||||||
|
|
||||||
|
@ -46,8 +46,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
|
||||||
|
|
||||||
|
#define TC_DATA_LEN ( 448)
|
||||||
|
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -61,7 +64,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -132,14 +135,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
||||||
|
|
||||||
token.sep[1] = '$';
|
token.sep[1] = '$';
|
||||||
token.len_min[1] = 128;
|
token.len_min[1] = TC_SALT_HEX_LEN;
|
||||||
token.len_max[1] = 128;
|
token.len_max[1] = TC_SALT_HEX_LEN;
|
||||||
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
token.sep[2] = '$';
|
token.sep[2] = '$';
|
||||||
token.len_min[2] = 896;
|
token.len_min[2] = TC_DATA_HEX_LEN;
|
||||||
token.len_max[2] = 896;
|
token.len_max[2] = TC_DATA_HEX_LEN;
|
||||||
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
@ -151,12 +154,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *salt_pos = token.buf[1];
|
const u8 *salt_pos = token.buf[1];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
|
||||||
{
|
|
||||||
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
salt->salt_len = TC_SALT_LEN;
|
|
||||||
|
|
||||||
// iter
|
// iter
|
||||||
|
|
||||||
@ -166,10 +164,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *data_pos = token.buf[2];
|
const u8 *data_pos = token.buf[2];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
|
||||||
{
|
|
||||||
tc->data_buf[i] = hex_to_u32 (data_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
// entropy
|
// entropy
|
||||||
|
|
||||||
@ -183,7 +178,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
@ -237,25 +232,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// salt
|
// salt
|
||||||
|
|
||||||
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
|
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// data
|
// data
|
||||||
|
|
||||||
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
|
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char data_buf[TC_DATA_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// output
|
// output
|
||||||
|
|
||||||
|
@ -46,8 +46,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
|
||||||
|
|
||||||
|
#define TC_DATA_LEN ( 448)
|
||||||
|
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -61,7 +64,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -132,14 +135,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
||||||
|
|
||||||
token.sep[1] = '$';
|
token.sep[1] = '$';
|
||||||
token.len_min[1] = 128;
|
token.len_min[1] = TC_SALT_HEX_LEN;
|
||||||
token.len_max[1] = 128;
|
token.len_max[1] = TC_SALT_HEX_LEN;
|
||||||
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
token.sep[2] = '$';
|
token.sep[2] = '$';
|
||||||
token.len_min[2] = 896;
|
token.len_min[2] = TC_DATA_HEX_LEN;
|
||||||
token.len_max[2] = 896;
|
token.len_max[2] = TC_DATA_HEX_LEN;
|
||||||
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
@ -151,12 +154,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *salt_pos = token.buf[1];
|
const u8 *salt_pos = token.buf[1];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
|
||||||
{
|
|
||||||
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
salt->salt_len = TC_SALT_LEN;
|
|
||||||
|
|
||||||
// iter
|
// iter
|
||||||
|
|
||||||
@ -166,10 +164,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *data_pos = token.buf[2];
|
const u8 *data_pos = token.buf[2];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
|
||||||
{
|
|
||||||
tc->data_buf[i] = hex_to_u32 (data_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
// entropy
|
// entropy
|
||||||
|
|
||||||
@ -183,7 +178,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
@ -237,25 +232,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// salt
|
// salt
|
||||||
|
|
||||||
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
|
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// data
|
// data
|
||||||
|
|
||||||
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
|
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char data_buf[TC_DATA_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// output
|
// output
|
||||||
|
|
||||||
|
@ -48,8 +48,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
|
||||||
|
|
||||||
|
#define TC_DATA_LEN ( 448)
|
||||||
|
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc64_tmp
|
typedef struct tc64_tmp
|
||||||
{
|
{
|
||||||
@ -63,7 +66,7 @@ typedef struct tc64_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -134,14 +137,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
||||||
|
|
||||||
token.sep[1] = '$';
|
token.sep[1] = '$';
|
||||||
token.len_min[1] = 128;
|
token.len_min[1] = TC_SALT_HEX_LEN;
|
||||||
token.len_max[1] = 128;
|
token.len_max[1] = TC_SALT_HEX_LEN;
|
||||||
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
token.sep[2] = '$';
|
token.sep[2] = '$';
|
||||||
token.len_min[2] = 896;
|
token.len_min[2] = TC_DATA_HEX_LEN;
|
||||||
token.len_max[2] = 896;
|
token.len_max[2] = TC_DATA_HEX_LEN;
|
||||||
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
@ -153,12 +156,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *salt_pos = token.buf[1];
|
const u8 *salt_pos = token.buf[1];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
|
||||||
{
|
|
||||||
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
salt->salt_len = TC_SALT_LEN;
|
|
||||||
|
|
||||||
// iter
|
// iter
|
||||||
|
|
||||||
@ -168,10 +166,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *data_pos = token.buf[2];
|
const u8 *data_pos = token.buf[2];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
|
||||||
{
|
|
||||||
tc->data_buf[i] = hex_to_u32 (data_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
// entropy
|
// entropy
|
||||||
|
|
||||||
@ -185,7 +180,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
@ -239,25 +234,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// salt
|
// salt
|
||||||
|
|
||||||
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
|
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// data
|
// data
|
||||||
|
|
||||||
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
|
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char data_buf[TC_DATA_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// output
|
// output
|
||||||
|
|
||||||
|
@ -48,8 +48,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
|
||||||
|
|
||||||
|
#define TC_DATA_LEN ( 448)
|
||||||
|
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc64_tmp
|
typedef struct tc64_tmp
|
||||||
{
|
{
|
||||||
@ -63,7 +66,7 @@ typedef struct tc64_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -134,14 +137,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
||||||
|
|
||||||
token.sep[1] = '$';
|
token.sep[1] = '$';
|
||||||
token.len_min[1] = 128;
|
token.len_min[1] = TC_SALT_HEX_LEN;
|
||||||
token.len_max[1] = 128;
|
token.len_max[1] = TC_SALT_HEX_LEN;
|
||||||
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
token.sep[2] = '$';
|
token.sep[2] = '$';
|
||||||
token.len_min[2] = 896;
|
token.len_min[2] = TC_DATA_HEX_LEN;
|
||||||
token.len_max[2] = 896;
|
token.len_max[2] = TC_DATA_HEX_LEN;
|
||||||
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
@ -153,12 +156,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *salt_pos = token.buf[1];
|
const u8 *salt_pos = token.buf[1];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
|
||||||
{
|
|
||||||
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
salt->salt_len = TC_SALT_LEN;
|
|
||||||
|
|
||||||
// iter
|
// iter
|
||||||
|
|
||||||
@ -168,10 +166,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *data_pos = token.buf[2];
|
const u8 *data_pos = token.buf[2];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
|
||||||
{
|
|
||||||
tc->data_buf[i] = hex_to_u32 (data_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
// entropy
|
// entropy
|
||||||
|
|
||||||
@ -185,7 +180,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
@ -239,25 +234,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// salt
|
// salt
|
||||||
|
|
||||||
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
|
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// data
|
// data
|
||||||
|
|
||||||
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
|
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char data_buf[TC_DATA_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// output
|
// output
|
||||||
|
|
||||||
|
@ -48,8 +48,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
|
||||||
|
|
||||||
|
#define TC_DATA_LEN ( 448)
|
||||||
|
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc64_tmp
|
typedef struct tc64_tmp
|
||||||
{
|
{
|
||||||
@ -63,7 +66,7 @@ typedef struct tc64_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -134,14 +137,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
||||||
|
|
||||||
token.sep[1] = '$';
|
token.sep[1] = '$';
|
||||||
token.len_min[1] = 128;
|
token.len_min[1] = TC_SALT_HEX_LEN;
|
||||||
token.len_max[1] = 128;
|
token.len_max[1] = TC_SALT_HEX_LEN;
|
||||||
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
token.sep[2] = '$';
|
token.sep[2] = '$';
|
||||||
token.len_min[2] = 896;
|
token.len_min[2] = TC_DATA_HEX_LEN;
|
||||||
token.len_max[2] = 896;
|
token.len_max[2] = TC_DATA_HEX_LEN;
|
||||||
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
@ -153,12 +156,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *salt_pos = token.buf[1];
|
const u8 *salt_pos = token.buf[1];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
|
||||||
{
|
|
||||||
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
salt->salt_len = TC_SALT_LEN;
|
|
||||||
|
|
||||||
// iter
|
// iter
|
||||||
|
|
||||||
@ -168,10 +166,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *data_pos = token.buf[2];
|
const u8 *data_pos = token.buf[2];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
|
||||||
{
|
|
||||||
tc->data_buf[i] = hex_to_u32 (data_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
// entropy
|
// entropy
|
||||||
|
|
||||||
@ -185,7 +180,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
@ -239,25 +234,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// salt
|
// salt
|
||||||
|
|
||||||
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
|
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// data
|
// data
|
||||||
|
|
||||||
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
|
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char data_buf[TC_DATA_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// output
|
// output
|
||||||
|
|
||||||
|
@ -47,8 +47,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
|
||||||
|
|
||||||
|
#define TC_DATA_LEN ( 448)
|
||||||
|
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -62,7 +65,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -142,14 +145,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
||||||
|
|
||||||
token.sep[1] = '$';
|
token.sep[1] = '$';
|
||||||
token.len_min[1] = 128;
|
token.len_min[1] = TC_SALT_HEX_LEN;
|
||||||
token.len_max[1] = 128;
|
token.len_max[1] = TC_SALT_HEX_LEN;
|
||||||
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
token.sep[2] = '$';
|
token.sep[2] = '$';
|
||||||
token.len_min[2] = 896;
|
token.len_min[2] = TC_DATA_HEX_LEN;
|
||||||
token.len_max[2] = 896;
|
token.len_max[2] = TC_DATA_HEX_LEN;
|
||||||
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
@ -161,12 +164,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *salt_pos = token.buf[1];
|
const u8 *salt_pos = token.buf[1];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
|
||||||
{
|
|
||||||
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
salt->salt_len = TC_SALT_LEN;
|
|
||||||
|
|
||||||
// iter
|
// iter
|
||||||
|
|
||||||
@ -176,10 +174,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *data_pos = token.buf[2];
|
const u8 *data_pos = token.buf[2];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
|
||||||
{
|
|
||||||
tc->data_buf[i] = hex_to_u32 (data_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
// entropy
|
// entropy
|
||||||
|
|
||||||
@ -193,7 +188,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
@ -247,25 +242,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// salt
|
// salt
|
||||||
|
|
||||||
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
|
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// data
|
// data
|
||||||
|
|
||||||
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
|
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char data_buf[TC_DATA_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// output
|
// output
|
||||||
|
|
||||||
|
@ -47,8 +47,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
|
||||||
|
|
||||||
|
#define TC_DATA_LEN ( 448)
|
||||||
|
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -62,7 +65,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -142,14 +145,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
||||||
|
|
||||||
token.sep[1] = '$';
|
token.sep[1] = '$';
|
||||||
token.len_min[1] = 128;
|
token.len_min[1] = TC_SALT_HEX_LEN;
|
||||||
token.len_max[1] = 128;
|
token.len_max[1] = TC_SALT_HEX_LEN;
|
||||||
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
token.sep[2] = '$';
|
token.sep[2] = '$';
|
||||||
token.len_min[2] = 896;
|
token.len_min[2] = TC_DATA_HEX_LEN;
|
||||||
token.len_max[2] = 896;
|
token.len_max[2] = TC_DATA_HEX_LEN;
|
||||||
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
@ -161,12 +164,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *salt_pos = token.buf[1];
|
const u8 *salt_pos = token.buf[1];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
|
||||||
{
|
|
||||||
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
salt->salt_len = TC_SALT_LEN;
|
|
||||||
|
|
||||||
// iter
|
// iter
|
||||||
|
|
||||||
@ -176,10 +174,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *data_pos = token.buf[2];
|
const u8 *data_pos = token.buf[2];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
|
||||||
{
|
|
||||||
tc->data_buf[i] = hex_to_u32 (data_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
// entropy
|
// entropy
|
||||||
|
|
||||||
@ -193,7 +188,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
@ -247,25 +242,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// salt
|
// salt
|
||||||
|
|
||||||
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
|
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// data
|
// data
|
||||||
|
|
||||||
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
|
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char data_buf[TC_DATA_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// output
|
// output
|
||||||
|
|
||||||
|
@ -47,8 +47,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
|
||||||
|
|
||||||
|
#define TC_DATA_LEN ( 448)
|
||||||
|
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -62,7 +65,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -138,14 +141,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
||||||
|
|
||||||
token.sep[1] = '$';
|
token.sep[1] = '$';
|
||||||
token.len_min[1] = 128;
|
token.len_min[1] = TC_SALT_HEX_LEN;
|
||||||
token.len_max[1] = 128;
|
token.len_max[1] = TC_SALT_HEX_LEN;
|
||||||
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
token.sep[2] = '$';
|
token.sep[2] = '$';
|
||||||
token.len_min[2] = 896;
|
token.len_min[2] = TC_DATA_HEX_LEN;
|
||||||
token.len_max[2] = 896;
|
token.len_max[2] = TC_DATA_HEX_LEN;
|
||||||
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
@ -157,12 +160,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *salt_pos = token.buf[1];
|
const u8 *salt_pos = token.buf[1];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
|
||||||
{
|
|
||||||
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
salt->salt_len = TC_SALT_LEN;
|
|
||||||
|
|
||||||
// iter
|
// iter
|
||||||
|
|
||||||
@ -172,10 +170,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *data_pos = token.buf[2];
|
const u8 *data_pos = token.buf[2];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
|
||||||
{
|
|
||||||
tc->data_buf[i] = hex_to_u32 (data_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
// entropy
|
// entropy
|
||||||
|
|
||||||
@ -189,7 +184,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
@ -243,25 +238,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// salt
|
// salt
|
||||||
|
|
||||||
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
|
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// data
|
// data
|
||||||
|
|
||||||
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
|
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char data_buf[TC_DATA_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// output
|
// output
|
||||||
|
|
||||||
|
@ -47,8 +47,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
|
||||||
|
|
||||||
|
#define TC_DATA_LEN ( 448)
|
||||||
|
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -62,7 +65,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -145,14 +148,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
||||||
|
|
||||||
token.sep[1] = '$';
|
token.sep[1] = '$';
|
||||||
token.len_min[1] = 128;
|
token.len_min[1] = TC_SALT_HEX_LEN;
|
||||||
token.len_max[1] = 128;
|
token.len_max[1] = TC_SALT_HEX_LEN;
|
||||||
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
token.sep[2] = '$';
|
token.sep[2] = '$';
|
||||||
token.len_min[2] = 896;
|
token.len_min[2] = TC_DATA_HEX_LEN;
|
||||||
token.len_max[2] = 896;
|
token.len_max[2] = TC_DATA_HEX_LEN;
|
||||||
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
@ -164,12 +167,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *salt_pos = token.buf[1];
|
const u8 *salt_pos = token.buf[1];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
|
||||||
{
|
|
||||||
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
salt->salt_len = TC_SALT_LEN;
|
|
||||||
|
|
||||||
// iter
|
// iter
|
||||||
|
|
||||||
@ -179,10 +177,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *data_pos = token.buf[2];
|
const u8 *data_pos = token.buf[2];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
|
||||||
{
|
|
||||||
tc->data_buf[i] = hex_to_u32 (data_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
// entropy
|
// entropy
|
||||||
|
|
||||||
@ -196,7 +191,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
@ -250,25 +245,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// salt
|
// salt
|
||||||
|
|
||||||
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
|
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// data
|
// data
|
||||||
|
|
||||||
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
|
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char data_buf[TC_DATA_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// output
|
// output
|
||||||
|
|
||||||
|
@ -47,8 +47,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
|
||||||
|
|
||||||
|
#define TC_DATA_LEN ( 448)
|
||||||
|
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -62,7 +65,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -145,14 +148,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
||||||
|
|
||||||
token.sep[1] = '$';
|
token.sep[1] = '$';
|
||||||
token.len_min[1] = 128;
|
token.len_min[1] = TC_SALT_HEX_LEN;
|
||||||
token.len_max[1] = 128;
|
token.len_max[1] = TC_SALT_HEX_LEN;
|
||||||
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
token.sep[2] = '$';
|
token.sep[2] = '$';
|
||||||
token.len_min[2] = 896;
|
token.len_min[2] = TC_DATA_HEX_LEN;
|
||||||
token.len_max[2] = 896;
|
token.len_max[2] = TC_DATA_HEX_LEN;
|
||||||
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
@ -164,12 +167,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *salt_pos = token.buf[1];
|
const u8 *salt_pos = token.buf[1];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
|
||||||
{
|
|
||||||
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
salt->salt_len = TC_SALT_LEN;
|
|
||||||
|
|
||||||
// iter
|
// iter
|
||||||
|
|
||||||
@ -179,10 +177,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *data_pos = token.buf[2];
|
const u8 *data_pos = token.buf[2];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
|
||||||
{
|
|
||||||
tc->data_buf[i] = hex_to_u32 (data_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
// entropy
|
// entropy
|
||||||
|
|
||||||
@ -196,7 +191,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
@ -250,25 +245,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// salt
|
// salt
|
||||||
|
|
||||||
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
|
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// data
|
// data
|
||||||
|
|
||||||
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
|
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char data_buf[TC_DATA_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// output
|
// output
|
||||||
|
|
||||||
|
@ -47,8 +47,11 @@ u32 module_salt_type (MAYBE_UNUSED const hashconfig_t *hashconfig,
|
|||||||
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
const char *module_st_hash (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_HASH; }
|
||||||
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
const char *module_st_pass (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSED const user_options_t *user_options, MAYBE_UNUSED const user_options_extra_t *user_options_extra) { return ST_PASS; }
|
||||||
|
|
||||||
#define TC_SALT_LEN 64
|
#define TC_SALT_LEN ( 64)
|
||||||
#define TC_DATA_LEN 448
|
#define TC_SALT_HEX_LEN (TC_SALT_LEN * 2)
|
||||||
|
|
||||||
|
#define TC_DATA_LEN ( 448)
|
||||||
|
#define TC_DATA_HEX_LEN (TC_DATA_LEN * 2)
|
||||||
|
|
||||||
typedef struct tc_tmp
|
typedef struct tc_tmp
|
||||||
{
|
{
|
||||||
@ -62,7 +65,7 @@ typedef struct tc_tmp
|
|||||||
|
|
||||||
typedef struct tc
|
typedef struct tc
|
||||||
{
|
{
|
||||||
u32 data_buf[112];
|
u32 data_buf[TC_DATA_LEN / 4];
|
||||||
u32 keyfile_buf16[16];
|
u32 keyfile_buf16[16];
|
||||||
u32 keyfile_buf32[32];
|
u32 keyfile_buf32[32];
|
||||||
u32 keyfile_enabled;
|
u32 keyfile_enabled;
|
||||||
@ -145,14 +148,14 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
| TOKEN_ATTR_VERIFY_SIGNATURE;
|
||||||
|
|
||||||
token.sep[1] = '$';
|
token.sep[1] = '$';
|
||||||
token.len_min[1] = 128;
|
token.len_min[1] = TC_SALT_HEX_LEN;
|
||||||
token.len_max[1] = 128;
|
token.len_max[1] = TC_SALT_HEX_LEN;
|
||||||
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[1] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
token.sep[2] = '$';
|
token.sep[2] = '$';
|
||||||
token.len_min[2] = 896;
|
token.len_min[2] = TC_DATA_HEX_LEN;
|
||||||
token.len_max[2] = 896;
|
token.len_max[2] = TC_DATA_HEX_LEN;
|
||||||
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
token.attr[2] = TOKEN_ATTR_VERIFY_LENGTH
|
||||||
| TOKEN_ATTR_VERIFY_HEX;
|
| TOKEN_ATTR_VERIFY_HEX;
|
||||||
|
|
||||||
@ -164,12 +167,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *salt_pos = token.buf[1];
|
const u8 *salt_pos = token.buf[1];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
salt->salt_len = hex_decode (salt_pos, TC_SALT_HEX_LEN, (u8 *) salt->salt_buf);
|
||||||
{
|
|
||||||
salt->salt_buf[i] = hex_to_u32 (salt_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
salt->salt_len = TC_SALT_LEN;
|
|
||||||
|
|
||||||
// iter
|
// iter
|
||||||
|
|
||||||
@ -179,10 +177,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
const u8 *data_pos = token.buf[2];
|
const u8 *data_pos = token.buf[2];
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
hex_decode (data_pos, TC_DATA_HEX_LEN, (u8 *) tc->data_buf);
|
||||||
{
|
|
||||||
tc->data_buf[i] = hex_to_u32 (data_pos + j);
|
|
||||||
}
|
|
||||||
|
|
||||||
// entropy
|
// entropy
|
||||||
|
|
||||||
@ -196,7 +191,7 @@ int module_hash_decode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// fake digest
|
// fake digest
|
||||||
|
|
||||||
memcpy (digest, tc->data_buf, 112);
|
memcpy (digest, tc->data_buf, TC_DATA_LEN / 4);
|
||||||
|
|
||||||
return (PARSER_OK);
|
return (PARSER_OK);
|
||||||
}
|
}
|
||||||
@ -250,25 +245,15 @@ int module_hash_encode (MAYBE_UNUSED const hashconfig_t *hashconfig, MAYBE_UNUSE
|
|||||||
|
|
||||||
// salt
|
// salt
|
||||||
|
|
||||||
#define TC_SALT_HEX_LEN TC_SALT_LEN * 2 + 1
|
char salt_buf[TC_SALT_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char salt_buf[TC_SALT_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) salt->salt_buf, TC_SALT_LEN, (u8 *) salt_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_SALT_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (salt_buf + j, TC_SALT_HEX_LEN - j, "%08x", byte_swap_32 (salt->salt_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// data
|
// data
|
||||||
|
|
||||||
#define TC_DATA_HEX_LEN TC_DATA_LEN * 2 + 1
|
char data_buf[TC_DATA_HEX_LEN + 1] = { 0 };
|
||||||
|
|
||||||
char data_buf[TC_DATA_HEX_LEN] = { 0 };
|
hex_encode ((const u8 *) tc->data_buf, TC_DATA_LEN, (u8 *) data_buf);
|
||||||
|
|
||||||
for (u32 i = 0, j = 0; i < TC_DATA_LEN / 4; i += 1, j += 8)
|
|
||||||
{
|
|
||||||
snprintf (data_buf + j, TC_DATA_HEX_LEN - j, "%08x", byte_swap_32 (tc->data_buf[i]));
|
|
||||||
}
|
|
||||||
|
|
||||||
// output
|
// output
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user