31 return (
num >> amount) | (
num << (32 - amount));
34 #define blk0(i) (W[i] = conv32be(data[i]))
35 #define blk2(i) (W[i & 15] += s1(W[(i - 2) & 15]) + W[(i - 7) & 15] \
36 + s0(W[(i - 15) & 15]))
38 #define Ch(x, y, z) (z ^ (x & (y ^ z)))
39 #define Maj(x, y, z) ((x & (y ^ z)) + (y & z))
41 #define a(i) T[(0 - i) & 7]
42 #define b(i) T[(1 - i) & 7]
43 #define c(i) T[(2 - i) & 7]
44 #define d(i) T[(3 - i) & 7]
45 #define e(i) T[(4 - i) & 7]
46 #define f(i) T[(5 - i) & 7]
47 #define g(i) T[(6 - i) & 7]
48 #define h(i) T[(7 - i) & 7]
50 #define R(i, j, blk) \
51 h(i) += S1(e(i)) + Ch(e(i), f(i), g(i)) + SHA256_K[i + j] + blk; \
53 h(i) += S0(a(i)) + Maj(a(i), b(i), c(i))
54 #define R0(i) R(i, 0, blk0(i))
55 #define R2(i) R(i, j, blk2(i))
57 #define S0(x) rotr_32(x ^ rotr_32(x ^ rotr_32(x, 9), 11), 2)
58 #define S1(x) rotr_32(x ^ rotr_32(x ^ rotr_32(x, 14), 5), 6)
59 #define s0(x) (rotr_32(x ^ rotr_32(x, 11), 7) ^ (x >> 3))
60 #define s1(x) (rotr_32(x ^ rotr_32(x, 2), 17) ^ (x >> 10))
64 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,
65 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,
66 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
67 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,
68 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,
69 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
70 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,
71 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,
72 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
73 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,
74 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,
75 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
76 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,
77 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,
78 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
79 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2,
99 for (
unsigned int j = 16; j < 64; j += 16) {
130 0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A,
131 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19,
135 check->state.sha256.size = 0;
149 const size_t copy_start =
check->state.sha256.size & 0x3F;
150 size_t copy_size = 64 - copy_start;
151 if (copy_size >
size)
158 check->state.sha256.size += copy_size;
160 if ((
check->state.sha256.size & 0x3F) == 0)
173 size_t pos =
check->state.sha256.size & 0x3F;
176 while (
pos != 64 - 8) {
186 check->state.sha256.size *= 8;
192 for (
size_t i = 0;
i < 8; ++
i)
Internal API to different integrity check functions.
memcpy(mem, inblock.get(), min(CONTAINING_RECORD(inblock.get(), MEMBLOCK, data) ->size, size))
static static fork const void static count static fd const char const char static newpath char char char static envp time_t static t const char static mode static whence const char static dir time_t static t unsigned static seconds const char struct utimbuf static buf static inc static sig const char static mode static oldfd struct tms static buf static getgid static geteuid const char static filename static arg static mask struct ustat static ubuf static getppid static setsid static egid sigset_t static set struct timeval struct timezone static tz fd_set fd_set fd_set struct timeval static timeout const char char static bufsiz const char static swapflags void static offset const char static length static mode static who const char struct statfs static buf unsigned unsigned num
static void transform(uint32_t state[8], const uint32_t data[16])
static void process(lzma_check_state *check)
void lzma_sha256_update(const uint8_t *buf, size_t size, lzma_check_state *check)
Update the SHA-256 hash state.
static uint32_t rotr_32(uint32_t num, unsigned amount)
void lzma_sha256_init(lzma_check_state *check)
Prepare SHA-256 state for new input.
void lzma_sha256_finish(lzma_check_state *check)
Finish the SHA-256 calculation and store the result to check->buffer.u8.
static const uint32_t SHA256_K[64]
Structure to hold internal state of the check being calculated.