/////////////////////////////////////////////////////////////////////////////// // /// \file check.h /// \brief Prototypes for different check functions // // This code has been put into the public domain. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // /////////////////////////////////////////////////////////////////////////////// #ifndef LZMA_CHECK_H #define LZMA_CHECK_H #include "common.h" typedef struct { /// Internal state uint32_t state[8]; /// Temporary 8-byte aligned buffer to hold incomplete chunk. /// After lzma_check_finish(), the first 32 bytes will contain /// the final digest in big endian byte order. uint8_t buffer[64]; /// 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 union { uint32_t crc32; uint64_t crc64; lzma_sha256 sha256; } lzma_check; #ifdef HAVE_SMALL extern uint32_t lzma_crc32_table[8][256]; extern uint64_t lzma_crc64_table[4][256]; #else 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 /// /// \return LZMA_OK on success. LZMA_UNSUPPORTED_CHECK if the type is not /// 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); /// \brief Updates *check /// extern void lzma_check_update(lzma_check *check, lzma_check_type 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. /// extern bool lzma_check_compare( lzma_check *check1, lzma_check *check2, lzma_check_type type); */ // CRC32 extern void lzma_crc32_init(void); // CRC64 extern void lzma_crc64_init(void); // SHA256 extern void lzma_sha256_init(lzma_sha256 *sha256); extern void lzma_sha256_update( const uint8_t *buf, size_t size, lzma_sha256 *sha256); extern void lzma_sha256_finish(lzma_sha256 *sha256); #endif