PICurv
0.1.0
A Parallel Particle-In-Cell Solver for Curvilinear LES
Loading...
Searching...
No Matches
include
checksum.h
Go to the documentation of this file.
1
/**
2
* @file checksum.h
3
* @brief Small dependency-free SHA-256 utility for persistent metadata identity.
4
*/
5
6
#ifndef PICURV_CHECKSUM_H
7
#define PICURV_CHECKSUM_H
8
9
#include <petscsys.h>
10
#include <stddef.h>
11
#include <stdint.h>
12
13
/** @brief Incremental SHA-256 state. */
14
typedef
struct
{
15
uint32_t state[8];
16
uint64_t
bit_count
;
17
unsigned
char
buffer[64];
18
size_t
buffer_size
;
19
}
PicurvSHA256Context
;
20
21
/**
22
* @brief Initialize an incremental SHA-256 calculation.
23
* @param[out] context Hash state to initialize.
24
*/
25
void
PicurvSHA256Init
(
PicurvSHA256Context
*context);
26
27
/**
28
* @brief Add bytes to an incremental SHA-256 calculation.
29
* @param[in,out] context Active hash state.
30
* @param[in] data Bytes to add.
31
* @param[in] length Number of bytes to add.
32
*/
33
void
PicurvSHA256Update
(
PicurvSHA256Context
*context,
const
void
*data,
size_t
length);
34
35
/**
36
* @brief Finish a SHA-256 calculation and return a lowercase hexadecimal digest.
37
* @param[in,out] context Active hash state.
38
* @param[out] digest_hex Null-terminated 64-character lowercase digest.
39
*/
40
void
PicurvSHA256FinalHex
(
PicurvSHA256Context
*context,
char
digest_hex[65]);
41
42
/**
43
* @brief Compute the lowercase SHA-256 digest of a file.
44
* @param[in] path File to hash.
45
* @param[out] digest_hex Null-terminated 64-character lowercase digest.
46
* @return Zero on success or a PETSc filesystem error.
47
*/
48
PetscErrorCode
PicurvSHA256File
(
const
char
*path,
char
digest_hex[65]);
49
50
#endif
/* PICURV_CHECKSUM_H */
PicurvSHA256File
PetscErrorCode PicurvSHA256File(const char *path, char digest_hex[65])
Compute the lowercase SHA-256 digest of a file.
Definition
checksum.c:130
PicurvSHA256Init
void PicurvSHA256Init(PicurvSHA256Context *context)
Initialize an incremental SHA-256 calculation.
Definition
checksum.c:62
PicurvSHA256Update
void PicurvSHA256Update(PicurvSHA256Context *context, const void *data, size_t length)
Add bytes to an incremental SHA-256 calculation.
Definition
checksum.c:74
PicurvSHA256Context::bit_count
uint64_t bit_count
Definition
checksum.h:16
PicurvSHA256FinalHex
void PicurvSHA256FinalHex(PicurvSHA256Context *context, char digest_hex[65])
Finish a SHA-256 calculation and return a lowercase hexadecimal digest.
Definition
checksum.c:98
PicurvSHA256Context::buffer_size
size_t buffer_size
Definition
checksum.h:18
PicurvSHA256Context
Incremental SHA-256 state.
Definition
checksum.h:14
Generated by
1.9.8