gwenhywfar 5.10.1
Macros | Functions
mdigest.c File Reference
#include "mdigest_p.h"
#include "i18n_l.h"
#include <gwenhywfar/misc.h>
#include <gwenhywfar/debug.h>
#include <gwenhywfar/directory.h>
#include <gwenhywfar/text.h>
#include <gwenhywfar/syncio.h>
#include <gwenhywfar/syncio_file.h>
#include <gwenhywfar/gui.h>
Include dependency graph for mdigest.c:

Go to the source code of this file.

Macros

#define DISABLE_DEBUGLOG
 

Functions

static int GWEN_MDigest__HashFile (GWEN_MDIGEST *md, const char *fname, GWEN_BUFFER *hbuf)
 
static int GWEN_MDigest__HashFileTree (GWEN_MDIGEST *md, const char *baseFolder, const char *relFolder, const char *ignoreFile, GWEN_STRINGLIST *sl)
 
int GWEN_MDigest_Begin (GWEN_MDIGEST *md)
 
int GWEN_MDigest_CheckFileTree (GWEN_MDIGEST *md, const char *folder, const char *checksumFile, int strictCheck, uint32_t pid)
 
int GWEN_MDigest_Digest (GWEN_MDIGEST *md, const uint8_t *srcBuf, unsigned int srcLen, uint8_t *dstBuf, unsigned int dstLen)
 
int GWEN_MDigest_End (GWEN_MDIGEST *md)
 
void GWEN_MDigest_free (GWEN_MDIGEST *md)
 
uint8_t * GWEN_MDigest_GetDigestPtr (GWEN_MDIGEST *md)
 
unsigned int GWEN_MDigest_GetDigestSize (GWEN_MDIGEST *md)
 
GWEN_CRYPT_HASHALGOID GWEN_MDigest_GetHashAlgoId (const GWEN_MDIGEST *md)
 
int GWEN_MDigest_HashFileTree (GWEN_MDIGEST *md, const char *folder, const char *ignoreFile, GWEN_STRINGLIST *sl)
 
GWEN_MDIGESTGWEN_MDigest_new (GWEN_CRYPT_HASHALGOID a)
 
int GWEN_MDigest_PBKDF2 (GWEN_MDIGEST *md, const char *password, const uint8_t *pSalt, uint32_t lSalt, uint8_t *pKey, uint32_t lKey, uint32_t iterations)
 
GWEN_MDIGEST_BEGIN_FN GWEN_MDigest_SetBeginFn (GWEN_MDIGEST *md, GWEN_MDIGEST_BEGIN_FN f)
 
void GWEN_MDigest_SetDigestBuffer (GWEN_MDIGEST *md, uint8_t *buf, unsigned int l)
 
void GWEN_MDigest_SetDigestLen (GWEN_MDIGEST *md, unsigned int l)
 
GWEN_MDIGEST_END_FN GWEN_MDigest_SetEndFn (GWEN_MDIGEST *md, GWEN_MDIGEST_END_FN f)
 
GWEN_MDIGEST_UPDATE_FN GWEN_MDigest_SetUpdateFn (GWEN_MDIGEST *md, GWEN_MDIGEST_UPDATE_FN f)
 
int GWEN_MDigest_Update (GWEN_MDIGEST *md, const uint8_t *buf, unsigned int l)
 

Macro Definition Documentation

◆ DISABLE_DEBUGLOG

#define DISABLE_DEBUGLOG

Definition at line 14 of file mdigest.c.

Function Documentation

◆ GWEN_MDigest__HashFile()

static int GWEN_MDigest__HashFile ( GWEN_MDIGEST md,
const char *  fname,
GWEN_BUFFER hbuf 
)
static

◆ GWEN_MDigest__HashFileTree()

static int GWEN_MDigest__HashFileTree ( GWEN_MDIGEST md,
const char *  baseFolder,
const char *  relFolder,
const char *  ignoreFile,
GWEN_STRINGLIST sl 
)
static

◆ GWEN_MDigest_Begin()

int GWEN_MDigest_Begin ( GWEN_MDIGEST md)

◆ GWEN_MDigest_CheckFileTree()

int GWEN_MDigest_CheckFileTree ( GWEN_MDIGEST md,
const char *  folder,
const char *  checksumFile,
int  strictCheck,
uint32_t  pid 
)

This function verifies the integrity of a given file hierarchy by comparing checksums saved in a given file inside that file tree to the actual checksums of the files in the file tree.

Parameters
mddigest algorithm to use (see GWEN_MDigest_Rmd160_new et al)
folderfolder to check
checkSumFilename of the file containing the checksums
strictCheckif !=0 then an error will be returned if there are files in the tree for which there is no corresponding entry in the checksum file
pidid of the open progress dialog (see GWEN_Gui_ProgressStart)

Definition at line 543 of file mdigest.c.

References DBG_ERROR, GWEN_Buffer_AppendString(), GWEN_Buffer_free(), GWEN_Buffer_GetStart(), GWEN_Buffer_new(), GWEN_DIR_SEPARATOR_S, GWEN_ERROR_VERIFY, GWEN_Gui_ProgressLog2(), GWEN_LoggerLevel_Error, GWEN_LoggerLevel_Warning, GWEN_MDigest_HashFileTree(), GWEN_StringList_Count(), GWEN_StringList_FirstEntry(), GWEN_StringList_free(), GWEN_StringList_new(), GWEN_StringList_RemoveString(), GWEN_StringListEntry_Data(), GWEN_StringListEntry_Next(), GWEN_SyncIo_Helper_ReadFileToStringList(), and I18N.

Referenced by checkTree().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_MDigest_Digest()

int GWEN_MDigest_Digest ( GWEN_MDIGEST md,
const uint8_t *  srcBuf,
unsigned int  srcLen,
uint8_t *  dstBuf,
unsigned int  dstLen 
)

Convenience function, this calls GWEN_MDigest_Begin, GWEN_MDigest_Update and GWEN_MDigest_End and copies the resulting hash into the given buffer.

Definition at line 165 of file mdigest.c.

References DBG_ERROR, DBG_INFO, GWEN_ERROR_BUFFER_OVERFLOW, GWEN_ERROR_INTERNAL, GWEN_LOGDOMAIN, GWEN_MDigest_Begin(), GWEN_MDigest_End(), GWEN_MDigest_GetDigestPtr(), GWEN_MDigest_GetDigestSize(), and GWEN_MDigest_Update().

Here is the call graph for this function:

◆ GWEN_MDigest_End()

int GWEN_MDigest_End ( GWEN_MDIGEST md)

◆ GWEN_MDigest_free()

void GWEN_MDigest_free ( GWEN_MDIGEST md)

◆ GWEN_MDigest_GetDigestPtr()

uint8_t * GWEN_MDigest_GetDigestPtr ( GWEN_MDIGEST md)

◆ GWEN_MDigest_GetDigestSize()

unsigned int GWEN_MDigest_GetDigestSize ( GWEN_MDIGEST md)

◆ GWEN_MDigest_GetHashAlgoId()

GWEN_CRYPT_HASHALGOID GWEN_MDigest_GetHashAlgoId ( const GWEN_MDIGEST md)

Definition at line 72 of file mdigest.c.

◆ GWEN_MDigest_HashFileTree()

int GWEN_MDigest_HashFileTree ( GWEN_MDIGEST md,
const char *  folder,
const char *  ignoreFile,
GWEN_STRINGLIST sl 
)

Definition at line 525 of file mdigest.c.

References DBG_INFO, GWEN_LOGDOMAIN, GWEN_MDigest__HashFileTree(), and NULL.

Referenced by GWEN_MDigest_CheckFileTree(), and hashTree().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_MDigest_new()

GWEN_MDIGEST * GWEN_MDigest_new ( GWEN_CRYPT_HASHALGOID  a)

Definition at line 39 of file mdigest.c.

References GWEN_INHERIT_INIT, GWEN_LIST_INIT, and GWEN_NEW_OBJECT.

Referenced by GWEN_MDigest_Gc_new().

Here is the caller graph for this function:

◆ GWEN_MDigest_PBKDF2()

int GWEN_MDigest_PBKDF2 ( GWEN_MDIGEST md,
const char *  password,
const uint8_t *  pSalt,
uint32_t  lSalt,
uint8_t *  pKey,
uint32_t  lKey,
uint32_t  iterations 
)

Generate a key from a given password and a salt according to RFC 2898.

Definition at line 255 of file mdigest.c.

References DBG_ERROR, DBG_INFO, GWEN_ERROR_INVALID, GWEN_LOGDOMAIN, GWEN_MDigest_Begin(), GWEN_MDigest_End(), GWEN_MDigest_GetDigestPtr(), GWEN_MDigest_GetDigestSize(), and GWEN_MDigest_Update().

Referenced by GWEN_SmallTresor_Decrypt(), and GWEN_SmallTresor_Encrypt().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GWEN_MDigest_SetBeginFn()

GWEN_MDIGEST_BEGIN_FN GWEN_MDigest_SetBeginFn ( GWEN_MDIGEST md,
GWEN_MDIGEST_BEGIN_FN  f 
)

Definition at line 213 of file mdigest.c.

Referenced by GWEN_MDigest_Gc_new().

Here is the caller graph for this function:

◆ GWEN_MDigest_SetDigestBuffer()

void GWEN_MDigest_SetDigestBuffer ( GWEN_MDIGEST md,
uint8_t *  buf,
unsigned int  l 
)

This function takes over the given buffer

Definition at line 99 of file mdigest.c.

Referenced by GWEN_MDigest_Gc_End().

Here is the caller graph for this function:

◆ GWEN_MDigest_SetDigestLen()

void GWEN_MDigest_SetDigestLen ( GWEN_MDIGEST md,
unsigned int  l 
)

Definition at line 116 of file mdigest.c.

References NULL.

Referenced by GWEN_MDigest_Md5_new(), GWEN_MDigest_Rmd160_new(), GWEN_MDigest_Sha1_new(), and GWEN_MDigest_Sha256_new().

Here is the caller graph for this function:

◆ GWEN_MDigest_SetEndFn()

GWEN_MDIGEST_END_FN GWEN_MDigest_SetEndFn ( GWEN_MDIGEST md,
GWEN_MDIGEST_END_FN  f 
)

Definition at line 227 of file mdigest.c.

Referenced by GWEN_MDigest_Gc_new().

Here is the caller graph for this function:

◆ GWEN_MDigest_SetUpdateFn()

GWEN_MDIGEST_UPDATE_FN GWEN_MDigest_SetUpdateFn ( GWEN_MDIGEST md,
GWEN_MDIGEST_UPDATE_FN  f 
)

Definition at line 241 of file mdigest.c.

Referenced by GWEN_MDigest_Gc_new().

Here is the caller graph for this function:

◆ GWEN_MDigest_Update()

int GWEN_MDigest_Update ( GWEN_MDIGEST md,
const uint8_t *  buf,
unsigned int  l 
)