BELT_BLOCK_LEN
void belt_encrypt(const u8 in[BELT_BLOCK_LEN], u8 out[BELT_BLOCK_LEN], const u8 ks[BELT_KEY_SCHED_LEN]);
void belt_decrypt(const u8 in[BELT_BLOCK_LEN], u8 out[BELT_BLOCK_LEN], const u8 ks[BELT_KEY_SCHED_LEN]);
void belt_encrypt(const u8 in[BELT_BLOCK_LEN], u8 out[BELT_BLOCK_LEN], const u8 ks[BELT_KEY_SCHED_LEN])
void belt_decrypt(const u8 in[BELT_BLOCK_LEN], u8 out[BELT_BLOCK_LEN], const u8 ks[BELT_KEY_SCHED_LEN])
static void sigma1_xor(const u8 x[2 * BELT_BLOCK_LEN], const u8 h[2 * BELT_BLOCK_LEN], u8 s[BELT_BLOCK_LEN], u8 use_xor){
u8 tmp1[BELT_BLOCK_LEN];
for(i = 0; i < (BELT_BLOCK_LEN / 2); i++){
tmp1[i] = (h[i] ^ h[i + BELT_BLOCK_LEN]);
tmp1[i + (BELT_BLOCK_LEN / 2)] = (h[i + (BELT_BLOCK_LEN / 2)] ^ h[i + BELT_BLOCK_LEN + (BELT_BLOCK_LEN / 2)]);
u8 tmp2[BELT_BLOCK_LEN];
for(i = 0; i < (BELT_BLOCK_LEN / 2); i++){
s[i + (BELT_BLOCK_LEN / 2)] ^= (tmp1[i + (BELT_BLOCK_LEN / 2)] ^ tmp2[i + (BELT_BLOCK_LEN / 2)]);
for(i = 0; i < (BELT_BLOCK_LEN / 2); i++){
s[i + (BELT_BLOCK_LEN / 2)] ^= tmp1[i + (BELT_BLOCK_LEN / 2)];
static void sigma2(const u8 x[2 * BELT_BLOCK_LEN], u8 const h[2 * BELT_BLOCK_LEN], u8 result[2 * BELT_BLOCK_LEN])
u8 tmp[BELT_BLOCK_LEN];
IGNORE_RET_VAL(local_memcpy(&tmp[0], &h[0], BELT_BLOCK_LEN));
IGNORE_RET_VAL(local_memcpy(&teta[BELT_BLOCK_LEN], &h[BELT_BLOCK_LEN], BELT_BLOCK_LEN));
for(i = 0; i < BELT_BLOCK_LEN; i++){
teta[i + BELT_BLOCK_LEN] = tmp[i];
belt_encrypt(&x[BELT_BLOCK_LEN], &result[BELT_BLOCK_LEN], teta);
for(i = 0; i < (BELT_BLOCK_LEN / 2); i++){
result[i + BELT_BLOCK_LEN] ^= x[i + BELT_BLOCK_LEN];
result[i + BELT_BLOCK_LEN + (BELT_BLOCK_LEN / 2)] ^= x[i + BELT_BLOCK_LEN + (BELT_BLOCK_LEN / 2)];
static void _belt_hash_process(const u8 x[2 * BELT_BLOCK_LEN], u8 h[2 * BELT_BLOCK_LEN], u8 s[BELT_BLOCK_LEN])
_belt_hash_process(data, ctx->belt_hash_h, &(ctx->belt_hash_state[BELT_BLOCK_LEN]));
ATTRIBUTE_WARN_UNUSED_RET static int belt_hash_finalize(const u8 s[2 * BELT_BLOCK_LEN], const u8 h[2 * BELT_BLOCK_LEN], u8 res[2 * BELT_BLOCK_LEN])
u8 r[((MAX_DIGEST_SIZE / BELT_BLOCK_LEN) * BELT_BLOCK_LEN) + (2 * BELT_BLOCK_LEN)];
u8 r_bar[((MAX_DIGEST_SIZE / BELT_BLOCK_LEN) * BELT_BLOCK_LEN) + (2 * BELT_BLOCK_LEN)];
n = (hlen / BELT_BLOCK_LEN);
u8 s[BELT_BLOCK_LEN];
u8 i_block[BELT_BLOCK_LEN];
for(z = 0; z < BELT_BLOCK_LEN; z++){
s[z] ^= r[(BELT_BLOCK_LEN * j) + z];
ret = local_memcpy(&r[0], &r[BELT_BLOCK_LEN], (n - 2) * BELT_BLOCK_LEN); EG(ret, err);
belt_encrypt(s, &r[(n - 2) * BELT_BLOCK_LEN], theta);
for(z = 0; z < BELT_BLOCK_LEN; z++){
r[((n - 2) * BELT_BLOCK_LEN) + z] ^= (r[((n - 1) * BELT_BLOCK_LEN) + z] ^ i_block[z]);
ret = local_memcpy(&r[(n - 1) * BELT_BLOCK_LEN], s, BELT_BLOCK_LEN); EG(ret, err);
if(q_len < (n * BELT_BLOCK_LEN)){
MUST_HAVE((n * BELT_BLOCK_LEN) <= 0xffff, ret, err);
r_bar_len = (u16)(n * BELT_BLOCK_LEN);