Splitted DPAPI kernel in 2 to increase performances

This commit is contained in:
Fist0urs
2017-09-20 19:19:23 +02:00
parent 036d4874c7
commit a6294537fd
10 changed files with 1241 additions and 1005 deletions

View File

@@ -426,7 +426,6 @@ typedef struct psafe3
typedef struct dpapimk
{
u32 version;
u32 context;
u32 SID[32];
@@ -882,9 +881,8 @@ typedef struct keepass_tmp
} keepass_tmp_t;
typedef struct dpapimk_tmp
typedef struct dpapimk_tmp_v1
{
/* dedicated to hmac-sha1 */
u32 ipad[5];
u32 opad[5];
u32 dgst[10];
@@ -892,13 +890,18 @@ typedef struct dpapimk_tmp
u32 userKey[5];
/* dedicated to hmac-sha512 */
} dpapimk_tmp_t_v1;
typedef struct dpapimk_tmp_v2
{
u64 ipad64[8];
u64 opad64[8];
u64 dgst64[16];
u64 out64[16];
u32 userKey[5];
} dpapimk_tmp_t;
} dpapimk_tmp_t_v2;
typedef struct seven_zip_hook
{
@@ -1276,6 +1279,8 @@ typedef enum display_len
DISPLAY_LEN_MAX_15600 = 11 + 1 + 6 + 1 + 64 + 1 + 64 + 1 + 64,
DISPLAY_LEN_MIN_15700 = 11 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 64 + 1 + 64 + 1 + 64,
DISPLAY_LEN_MAX_15700 = 11 + 1 + 6 + 1 + 1 + 1 + 1 + 1 + 64 + 1 + 64 + 1 + 64,
DISPLAY_LEN_MIN_15900 = 1 + 7 + 1 + 1 + 1 + 1 + 1 + 10 + 1 + 4 + 1 + 4 + 1 + 1 + 1 + 32 + 1 + 3 + 1 + 128,
DISPLAY_LEN_MAX_15900 = 1 + 7 + 1 + 1 + 1 + 1 + 1 + 100 + 1 + 6 + 1 + 6 + 1 + 10 + 1 + 32 + 1 + 4 + 1 + 512,
DISPLAY_LEN_MIN_99999 = 1,
DISPLAY_LEN_MAX_99999 = 55,
@@ -1594,11 +1599,12 @@ typedef enum kern_type
KERN_TYPE_SKIP32 = 14900,
KERN_TYPE_FILEZILLA_SERVER = 15000,
KERN_TYPE_NETBSD_SHA1CRYPT = 15100,
KERN_TYPE_DPAPIMK = 15300,
KERN_TYPE_DPAPIMK_V1 = 15300,
KERN_TYPE_CHACHA20 = 15400,
KERN_TYPE_JKS_SHA1 = 15500,
KERN_TYPE_ETHEREUM_PBKDF2 = 15600,
KERN_TYPE_ETHEREUM_SCRYPT = 15700,
KERN_TYPE_DPAPIMK_V2 = 15900,
KERN_TYPE_PLAINTEXT = 99999,
} kern_type_t;
@@ -1670,7 +1676,8 @@ typedef enum rounds_count
ROUNDS_ITUNES102_BACKUP = 10000,
ROUNDS_ATLASSIAN = 10000,
ROUNDS_NETBSD_SHA1CRYPT = 20000,
ROUNDS_DPAPIMK = 24000 - 1, // from 4000 to 24000 (possibly more)
ROUNDS_DPAPIMK_V1 = 24000 - 1, // from 4000 to 24000 (possibly more)
ROUNDS_DPAPIMK_V2 = 8000 - 1, // from 4000 to 24000 (possibly more)
ROUNDS_ETHEREUM_PBKDF2 = 262144 - 1,
ROUNDS_STDOUT = 0