aboutsummaryrefslogtreecommitdiff
path: root/src/liblzma/check/check.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/liblzma/check/check.h67
1 files changed, 22 insertions, 45 deletions
diff --git a/src/liblzma/check/check.h b/src/liblzma/check/check.h
index 45ca25e9..8f387799 100644
--- a/src/liblzma/check/check.h
+++ b/src/liblzma/check/check.h
@@ -1,7 +1,7 @@
///////////////////////////////////////////////////////////////////////////////
//
/// \file check.h
-/// \brief Prototypes for different check functions
+/// \brief Internal API to different integrity check functions
//
// This code has been put into the public domain.
//
@@ -17,8 +17,8 @@
#include "common.h"
-// Index hashing used to verify the Index with O(1) memory usage needs
-// a good hash function.
+// Index hashing needs the best possible hash function (preferably
+// a cryptographic hash) for maximum reliability.
#if defined(HAVE_CHECK_SHA256)
# define LZMA_CHECK_BEST LZMA_CHECK_SHA256
#elif defined(HAVE_CHECK_CRC64)
@@ -28,24 +28,17 @@
#endif
+/// \brief Structure to hold internal state of the check being calculated
+///
+/// \note This is not in the public API because this structure may
+/// change in future if new integrity check algorithms are added.
typedef struct {
- /// Internal state
- uint32_t state[8];
-
- /// Size of the message excluding padding
- uint64_t size;
-
-} lzma_sha256;
-
-
-/// \note This is not in the public API because this structure will
-/// change in future.
-typedef struct {
- // FIXME Guarantee 8-byte alignment
-
- /// Buffer to hold the final result; this is also used as a temporary
- /// buffer in SHA256. Note that this buffer must be 8-byte aligned.
- uint8_t buffer[64];
+ /// Buffer to hold the final result and a temporary buffer for SHA256.
+ union {
+ uint8_t u8[64];
+ uint32_t u32[16];
+ uint64_t u64[8];
+ } buffer;
/// Check-specific data
union {
@@ -61,7 +54,7 @@ typedef struct {
} sha256;
} state;
-} lzma_check;
+} lzma_check_state;
#ifdef HAVE_SMALL
@@ -72,7 +65,6 @@ extern const uint32_t lzma_crc32_table[8][256];
extern const uint64_t lzma_crc64_table[4][256];
#endif
-// Generic
/// \brief Initializes *check depending on type
///
@@ -80,46 +72,31 @@ extern const uint64_t lzma_crc64_table[4][256];
/// supported by the current version or build of liblzma.
/// LZMA_PROG_ERROR if type > LZMA_CHECK_ID_MAX.
///
-extern lzma_ret lzma_check_init(lzma_check *check, lzma_check_type type);
+extern void lzma_check_init(lzma_check_state *check, lzma_check type);
+
/// \brief Updates *check
///
-extern void lzma_check_update(lzma_check *check, lzma_check_type type,
+extern void lzma_check_update(lzma_check_state *check, lzma_check type,
const uint8_t *buf, size_t size);
-/// \brief Finishes *check
-///
-extern void lzma_check_finish(lzma_check *check, lzma_check_type type);
-
-/*
-/// \brief Compare two checks
-///
-/// \return false if the checks are identical; true if they differ.
+/// \brief Finishes *check
///
-extern bool lzma_check_compare(
- lzma_check *check1, lzma_check *check2, lzma_check_type type);
-*/
+extern void lzma_check_finish(lzma_check_state *check, lzma_check type);
-// CRC32
-
extern void lzma_crc32_init(void);
-// CRC64
-
extern void lzma_crc64_init(void);
-// SHA256
-
-extern void lzma_sha256_init(lzma_check *check);
+extern void lzma_sha256_init(lzma_check_state *check);
extern void lzma_sha256_update(
- const uint8_t *buf, size_t size, lzma_check *check);
-
-extern void lzma_sha256_finish(lzma_check *check);
+ const uint8_t *buf, size_t size, lzma_check_state *check);
+extern void lzma_sha256_finish(lzma_check_state *check);
#endif