|
|
|
@ -189,201 +189,123 @@ DECLSPEC void sha384_update_128 (sha384_ctx_t *ctx, u32 w0[4], u32 w1[4], u32 w2
|
|
|
|
|
|
|
|
|
|
ctx->len += len;
|
|
|
|
|
|
|
|
|
|
if (pos == 0)
|
|
|
|
|
if ((pos + len) < 128)
|
|
|
|
|
{
|
|
|
|
|
if (len < 128)
|
|
|
|
|
{
|
|
|
|
|
ctx->w0[0] = w0[0];
|
|
|
|
|
ctx->w0[1] = w0[1];
|
|
|
|
|
ctx->w0[2] = w0[2];
|
|
|
|
|
ctx->w0[3] = w0[3];
|
|
|
|
|
ctx->w1[0] = w1[0];
|
|
|
|
|
ctx->w1[1] = w1[1];
|
|
|
|
|
ctx->w1[2] = w1[2];
|
|
|
|
|
ctx->w1[3] = w1[3];
|
|
|
|
|
ctx->w2[0] = w2[0];
|
|
|
|
|
ctx->w2[1] = w2[1];
|
|
|
|
|
ctx->w2[2] = w2[2];
|
|
|
|
|
ctx->w2[3] = w2[3];
|
|
|
|
|
ctx->w3[0] = w3[0];
|
|
|
|
|
ctx->w3[1] = w3[1];
|
|
|
|
|
ctx->w3[2] = w3[2];
|
|
|
|
|
ctx->w3[3] = w3[3];
|
|
|
|
|
ctx->w4[0] = w4[0];
|
|
|
|
|
ctx->w4[1] = w4[1];
|
|
|
|
|
ctx->w4[2] = w4[2];
|
|
|
|
|
ctx->w4[3] = w4[3];
|
|
|
|
|
ctx->w5[0] = w5[0];
|
|
|
|
|
ctx->w5[1] = w5[1];
|
|
|
|
|
ctx->w5[2] = w5[2];
|
|
|
|
|
ctx->w5[3] = w5[3];
|
|
|
|
|
ctx->w6[0] = w6[0];
|
|
|
|
|
ctx->w6[1] = w6[1];
|
|
|
|
|
ctx->w6[2] = w6[2];
|
|
|
|
|
ctx->w6[3] = w6[3];
|
|
|
|
|
ctx->w7[0] = w7[0];
|
|
|
|
|
ctx->w7[1] = w7[1];
|
|
|
|
|
ctx->w7[2] = w7[2];
|
|
|
|
|
ctx->w7[3] = w7[3];
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
sha384_transform (w0, w1, w2, w3, w4, w5, w6, w7, ctx->h);
|
|
|
|
|
|
|
|
|
|
ctx->w0[0] = 0;
|
|
|
|
|
ctx->w0[1] = 0;
|
|
|
|
|
ctx->w0[2] = 0;
|
|
|
|
|
ctx->w0[3] = 0;
|
|
|
|
|
ctx->w1[0] = 0;
|
|
|
|
|
ctx->w1[1] = 0;
|
|
|
|
|
ctx->w1[2] = 0;
|
|
|
|
|
ctx->w1[3] = 0;
|
|
|
|
|
ctx->w2[0] = 0;
|
|
|
|
|
ctx->w2[1] = 0;
|
|
|
|
|
ctx->w2[2] = 0;
|
|
|
|
|
ctx->w2[3] = 0;
|
|
|
|
|
ctx->w3[0] = 0;
|
|
|
|
|
ctx->w3[1] = 0;
|
|
|
|
|
ctx->w3[2] = 0;
|
|
|
|
|
ctx->w3[3] = 0;
|
|
|
|
|
ctx->w4[0] = 0;
|
|
|
|
|
ctx->w4[1] = 0;
|
|
|
|
|
ctx->w4[2] = 0;
|
|
|
|
|
ctx->w4[3] = 0;
|
|
|
|
|
ctx->w5[0] = 0;
|
|
|
|
|
ctx->w5[1] = 0;
|
|
|
|
|
ctx->w5[2] = 0;
|
|
|
|
|
ctx->w5[3] = 0;
|
|
|
|
|
ctx->w6[0] = 0;
|
|
|
|
|
ctx->w6[1] = 0;
|
|
|
|
|
ctx->w6[2] = 0;
|
|
|
|
|
ctx->w6[3] = 0;
|
|
|
|
|
ctx->w7[0] = 0;
|
|
|
|
|
ctx->w7[1] = 0;
|
|
|
|
|
ctx->w7[2] = 0;
|
|
|
|
|
ctx->w7[3] = 0;
|
|
|
|
|
}
|
|
|
|
|
switch_buffer_by_offset_8x4_be_S (w0, w1, w2, w3, w4, w5, w6, w7, pos);
|
|
|
|
|
|
|
|
|
|
ctx->w0[0] |= w0[0];
|
|
|
|
|
ctx->w0[1] |= w0[1];
|
|
|
|
|
ctx->w0[2] |= w0[2];
|
|
|
|
|
ctx->w0[3] |= w0[3];
|
|
|
|
|
ctx->w1[0] |= w1[0];
|
|
|
|
|
ctx->w1[1] |= w1[1];
|
|
|
|
|
ctx->w1[2] |= w1[2];
|
|
|
|
|
ctx->w1[3] |= w1[3];
|
|
|
|
|
ctx->w2[0] |= w2[0];
|
|
|
|
|
ctx->w2[1] |= w2[1];
|
|
|
|
|
ctx->w2[2] |= w2[2];
|
|
|
|
|
ctx->w2[3] |= w2[3];
|
|
|
|
|
ctx->w3[0] |= w3[0];
|
|
|
|
|
ctx->w3[1] |= w3[1];
|
|
|
|
|
ctx->w3[2] |= w3[2];
|
|
|
|
|
ctx->w3[3] |= w3[3];
|
|
|
|
|
ctx->w4[0] |= w4[0];
|
|
|
|
|
ctx->w4[1] |= w4[1];
|
|
|
|
|
ctx->w4[2] |= w4[2];
|
|
|
|
|
ctx->w4[3] |= w4[3];
|
|
|
|
|
ctx->w5[0] |= w5[0];
|
|
|
|
|
ctx->w5[1] |= w5[1];
|
|
|
|
|
ctx->w5[2] |= w5[2];
|
|
|
|
|
ctx->w5[3] |= w5[3];
|
|
|
|
|
ctx->w6[0] |= w6[0];
|
|
|
|
|
ctx->w6[1] |= w6[1];
|
|
|
|
|
ctx->w6[2] |= w6[2];
|
|
|
|
|
ctx->w6[3] |= w6[3];
|
|
|
|
|
ctx->w7[0] |= w7[0];
|
|
|
|
|
ctx->w7[1] |= w7[1];
|
|
|
|
|
ctx->w7[2] |= w7[2];
|
|
|
|
|
ctx->w7[3] |= w7[3];
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if ((pos + len) < 128)
|
|
|
|
|
{
|
|
|
|
|
switch_buffer_by_offset_8x4_be_S (w0, w1, w2, w3, w4, w5, w6, w7, pos);
|
|
|
|
|
|
|
|
|
|
ctx->w0[0] |= w0[0];
|
|
|
|
|
ctx->w0[1] |= w0[1];
|
|
|
|
|
ctx->w0[2] |= w0[2];
|
|
|
|
|
ctx->w0[3] |= w0[3];
|
|
|
|
|
ctx->w1[0] |= w1[0];
|
|
|
|
|
ctx->w1[1] |= w1[1];
|
|
|
|
|
ctx->w1[2] |= w1[2];
|
|
|
|
|
ctx->w1[3] |= w1[3];
|
|
|
|
|
ctx->w2[0] |= w2[0];
|
|
|
|
|
ctx->w2[1] |= w2[1];
|
|
|
|
|
ctx->w2[2] |= w2[2];
|
|
|
|
|
ctx->w2[3] |= w2[3];
|
|
|
|
|
ctx->w3[0] |= w3[0];
|
|
|
|
|
ctx->w3[1] |= w3[1];
|
|
|
|
|
ctx->w3[2] |= w3[2];
|
|
|
|
|
ctx->w3[3] |= w3[3];
|
|
|
|
|
ctx->w4[0] |= w4[0];
|
|
|
|
|
ctx->w4[1] |= w4[1];
|
|
|
|
|
ctx->w4[2] |= w4[2];
|
|
|
|
|
ctx->w4[3] |= w4[3];
|
|
|
|
|
ctx->w5[0] |= w5[0];
|
|
|
|
|
ctx->w5[1] |= w5[1];
|
|
|
|
|
ctx->w5[2] |= w5[2];
|
|
|
|
|
ctx->w5[3] |= w5[3];
|
|
|
|
|
ctx->w6[0] |= w6[0];
|
|
|
|
|
ctx->w6[1] |= w6[1];
|
|
|
|
|
ctx->w6[2] |= w6[2];
|
|
|
|
|
ctx->w6[3] |= w6[3];
|
|
|
|
|
ctx->w7[0] |= w7[0];
|
|
|
|
|
ctx->w7[1] |= w7[1];
|
|
|
|
|
ctx->w7[2] |= w7[2];
|
|
|
|
|
ctx->w7[3] |= w7[3];
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
u32 c0[4] = { 0 };
|
|
|
|
|
u32 c1[4] = { 0 };
|
|
|
|
|
u32 c2[4] = { 0 };
|
|
|
|
|
u32 c3[4] = { 0 };
|
|
|
|
|
u32 c4[4] = { 0 };
|
|
|
|
|
u32 c5[4] = { 0 };
|
|
|
|
|
u32 c6[4] = { 0 };
|
|
|
|
|
u32 c7[4] = { 0 };
|
|
|
|
|
|
|
|
|
|
switch_buffer_by_offset_8x4_carry_be_S (w0, w1, w2, w3, w4, w5, w6, w7, c0, c1, c2, c3, c4, c5, c6, c7, pos);
|
|
|
|
|
|
|
|
|
|
ctx->w0[0] |= w0[0];
|
|
|
|
|
ctx->w0[1] |= w0[1];
|
|
|
|
|
ctx->w0[2] |= w0[2];
|
|
|
|
|
ctx->w0[3] |= w0[3];
|
|
|
|
|
ctx->w1[0] |= w1[0];
|
|
|
|
|
ctx->w1[1] |= w1[1];
|
|
|
|
|
ctx->w1[2] |= w1[2];
|
|
|
|
|
ctx->w1[3] |= w1[3];
|
|
|
|
|
ctx->w2[0] |= w2[0];
|
|
|
|
|
ctx->w2[1] |= w2[1];
|
|
|
|
|
ctx->w2[2] |= w2[2];
|
|
|
|
|
ctx->w2[3] |= w2[3];
|
|
|
|
|
ctx->w3[0] |= w3[0];
|
|
|
|
|
ctx->w3[1] |= w3[1];
|
|
|
|
|
ctx->w3[2] |= w3[2];
|
|
|
|
|
ctx->w3[3] |= w3[3];
|
|
|
|
|
ctx->w4[0] |= w4[0];
|
|
|
|
|
ctx->w4[1] |= w4[1];
|
|
|
|
|
ctx->w4[2] |= w4[2];
|
|
|
|
|
ctx->w4[3] |= w4[3];
|
|
|
|
|
ctx->w5[0] |= w5[0];
|
|
|
|
|
ctx->w5[1] |= w5[1];
|
|
|
|
|
ctx->w5[2] |= w5[2];
|
|
|
|
|
ctx->w5[3] |= w5[3];
|
|
|
|
|
ctx->w6[0] |= w6[0];
|
|
|
|
|
ctx->w6[1] |= w6[1];
|
|
|
|
|
ctx->w6[2] |= w6[2];
|
|
|
|
|
ctx->w6[3] |= w6[3];
|
|
|
|
|
ctx->w7[0] |= w7[0];
|
|
|
|
|
ctx->w7[1] |= w7[1];
|
|
|
|
|
ctx->w7[2] |= w7[2];
|
|
|
|
|
ctx->w7[3] |= w7[3];
|
|
|
|
|
|
|
|
|
|
sha384_transform (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->w4, ctx->w5, ctx->w6, ctx->w7, ctx->h);
|
|
|
|
|
|
|
|
|
|
ctx->w0[0] = c0[0];
|
|
|
|
|
ctx->w0[1] = c0[1];
|
|
|
|
|
ctx->w0[2] = c0[2];
|
|
|
|
|
ctx->w0[3] = c0[3];
|
|
|
|
|
ctx->w1[0] = c1[0];
|
|
|
|
|
ctx->w1[1] = c1[1];
|
|
|
|
|
ctx->w1[2] = c1[2];
|
|
|
|
|
ctx->w1[3] = c1[3];
|
|
|
|
|
ctx->w2[0] = c2[0];
|
|
|
|
|
ctx->w2[1] = c2[1];
|
|
|
|
|
ctx->w2[2] = c2[2];
|
|
|
|
|
ctx->w2[3] = c2[3];
|
|
|
|
|
ctx->w3[0] = c3[0];
|
|
|
|
|
ctx->w3[1] = c3[1];
|
|
|
|
|
ctx->w3[2] = c3[2];
|
|
|
|
|
ctx->w3[3] = c3[3];
|
|
|
|
|
ctx->w4[0] = c4[0];
|
|
|
|
|
ctx->w4[1] = c4[1];
|
|
|
|
|
ctx->w4[2] = c4[2];
|
|
|
|
|
ctx->w4[3] = c4[3];
|
|
|
|
|
ctx->w5[0] = c5[0];
|
|
|
|
|
ctx->w5[1] = c5[1];
|
|
|
|
|
ctx->w5[2] = c5[2];
|
|
|
|
|
ctx->w5[3] = c5[3];
|
|
|
|
|
ctx->w6[0] = c6[0];
|
|
|
|
|
ctx->w6[1] = c6[1];
|
|
|
|
|
ctx->w6[2] = c6[2];
|
|
|
|
|
ctx->w6[3] = c6[3];
|
|
|
|
|
ctx->w7[0] = c7[0];
|
|
|
|
|
ctx->w7[1] = c7[1];
|
|
|
|
|
ctx->w7[2] = c7[2];
|
|
|
|
|
ctx->w7[3] = c7[3];
|
|
|
|
|
}
|
|
|
|
|
u32 c0[4] = { 0 };
|
|
|
|
|
u32 c1[4] = { 0 };
|
|
|
|
|
u32 c2[4] = { 0 };
|
|
|
|
|
u32 c3[4] = { 0 };
|
|
|
|
|
u32 c4[4] = { 0 };
|
|
|
|
|
u32 c5[4] = { 0 };
|
|
|
|
|
u32 c6[4] = { 0 };
|
|
|
|
|
u32 c7[4] = { 0 };
|
|
|
|
|
|
|
|
|
|
switch_buffer_by_offset_8x4_carry_be_S (w0, w1, w2, w3, w4, w5, w6, w7, c0, c1, c2, c3, c4, c5, c6, c7, pos);
|
|
|
|
|
|
|
|
|
|
ctx->w0[0] |= w0[0];
|
|
|
|
|
ctx->w0[1] |= w0[1];
|
|
|
|
|
ctx->w0[2] |= w0[2];
|
|
|
|
|
ctx->w0[3] |= w0[3];
|
|
|
|
|
ctx->w1[0] |= w1[0];
|
|
|
|
|
ctx->w1[1] |= w1[1];
|
|
|
|
|
ctx->w1[2] |= w1[2];
|
|
|
|
|
ctx->w1[3] |= w1[3];
|
|
|
|
|
ctx->w2[0] |= w2[0];
|
|
|
|
|
ctx->w2[1] |= w2[1];
|
|
|
|
|
ctx->w2[2] |= w2[2];
|
|
|
|
|
ctx->w2[3] |= w2[3];
|
|
|
|
|
ctx->w3[0] |= w3[0];
|
|
|
|
|
ctx->w3[1] |= w3[1];
|
|
|
|
|
ctx->w3[2] |= w3[2];
|
|
|
|
|
ctx->w3[3] |= w3[3];
|
|
|
|
|
ctx->w4[0] |= w4[0];
|
|
|
|
|
ctx->w4[1] |= w4[1];
|
|
|
|
|
ctx->w4[2] |= w4[2];
|
|
|
|
|
ctx->w4[3] |= w4[3];
|
|
|
|
|
ctx->w5[0] |= w5[0];
|
|
|
|
|
ctx->w5[1] |= w5[1];
|
|
|
|
|
ctx->w5[2] |= w5[2];
|
|
|
|
|
ctx->w5[3] |= w5[3];
|
|
|
|
|
ctx->w6[0] |= w6[0];
|
|
|
|
|
ctx->w6[1] |= w6[1];
|
|
|
|
|
ctx->w6[2] |= w6[2];
|
|
|
|
|
ctx->w6[3] |= w6[3];
|
|
|
|
|
ctx->w7[0] |= w7[0];
|
|
|
|
|
ctx->w7[1] |= w7[1];
|
|
|
|
|
ctx->w7[2] |= w7[2];
|
|
|
|
|
ctx->w7[3] |= w7[3];
|
|
|
|
|
|
|
|
|
|
sha384_transform (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->w4, ctx->w5, ctx->w6, ctx->w7, ctx->h);
|
|
|
|
|
|
|
|
|
|
ctx->w0[0] = c0[0];
|
|
|
|
|
ctx->w0[1] = c0[1];
|
|
|
|
|
ctx->w0[2] = c0[2];
|
|
|
|
|
ctx->w0[3] = c0[3];
|
|
|
|
|
ctx->w1[0] = c1[0];
|
|
|
|
|
ctx->w1[1] = c1[1];
|
|
|
|
|
ctx->w1[2] = c1[2];
|
|
|
|
|
ctx->w1[3] = c1[3];
|
|
|
|
|
ctx->w2[0] = c2[0];
|
|
|
|
|
ctx->w2[1] = c2[1];
|
|
|
|
|
ctx->w2[2] = c2[2];
|
|
|
|
|
ctx->w2[3] = c2[3];
|
|
|
|
|
ctx->w3[0] = c3[0];
|
|
|
|
|
ctx->w3[1] = c3[1];
|
|
|
|
|
ctx->w3[2] = c3[2];
|
|
|
|
|
ctx->w3[3] = c3[3];
|
|
|
|
|
ctx->w4[0] = c4[0];
|
|
|
|
|
ctx->w4[1] = c4[1];
|
|
|
|
|
ctx->w4[2] = c4[2];
|
|
|
|
|
ctx->w4[3] = c4[3];
|
|
|
|
|
ctx->w5[0] = c5[0];
|
|
|
|
|
ctx->w5[1] = c5[1];
|
|
|
|
|
ctx->w5[2] = c5[2];
|
|
|
|
|
ctx->w5[3] = c5[3];
|
|
|
|
|
ctx->w6[0] = c6[0];
|
|
|
|
|
ctx->w6[1] = c6[1];
|
|
|
|
|
ctx->w6[2] = c6[2];
|
|
|
|
|
ctx->w6[3] = c6[3];
|
|
|
|
|
ctx->w7[0] = c7[0];
|
|
|
|
|
ctx->w7[1] = c7[1];
|
|
|
|
|
ctx->w7[2] = c7[2];
|
|
|
|
|
ctx->w7[3] = c7[3];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -2094,201 +2016,123 @@ DECLSPEC void sha384_update_vector_128 (sha384_ctx_vector_t *ctx, u32x w0[4], u3
|
|
|
|
|
|
|
|
|
|
ctx->len += len;
|
|
|
|
|
|
|
|
|
|
if (pos == 0)
|
|
|
|
|
if ((pos + len) < 128)
|
|
|
|
|
{
|
|
|
|
|
if (len < 128)
|
|
|
|
|
{
|
|
|
|
|
ctx->w0[0] = w0[0];
|
|
|
|
|
ctx->w0[1] = w0[1];
|
|
|
|
|
ctx->w0[2] = w0[2];
|
|
|
|
|
ctx->w0[3] = w0[3];
|
|
|
|
|
ctx->w1[0] = w1[0];
|
|
|
|
|
ctx->w1[1] = w1[1];
|
|
|
|
|
ctx->w1[2] = w1[2];
|
|
|
|
|
ctx->w1[3] = w1[3];
|
|
|
|
|
ctx->w2[0] = w2[0];
|
|
|
|
|
ctx->w2[1] = w2[1];
|
|
|
|
|
ctx->w2[2] = w2[2];
|
|
|
|
|
ctx->w2[3] = w2[3];
|
|
|
|
|
ctx->w3[0] = w3[0];
|
|
|
|
|
ctx->w3[1] = w3[1];
|
|
|
|
|
ctx->w3[2] = w3[2];
|
|
|
|
|
ctx->w3[3] = w3[3];
|
|
|
|
|
ctx->w4[0] = w4[0];
|
|
|
|
|
ctx->w4[1] = w4[1];
|
|
|
|
|
ctx->w4[2] = w4[2];
|
|
|
|
|
ctx->w4[3] = w4[3];
|
|
|
|
|
ctx->w5[0] = w5[0];
|
|
|
|
|
ctx->w5[1] = w5[1];
|
|
|
|
|
ctx->w5[2] = w5[2];
|
|
|
|
|
ctx->w5[3] = w5[3];
|
|
|
|
|
ctx->w6[0] = w6[0];
|
|
|
|
|
ctx->w6[1] = w6[1];
|
|
|
|
|
ctx->w6[2] = w6[2];
|
|
|
|
|
ctx->w6[3] = w6[3];
|
|
|
|
|
ctx->w7[0] = w7[0];
|
|
|
|
|
ctx->w7[1] = w7[1];
|
|
|
|
|
ctx->w7[2] = w7[2];
|
|
|
|
|
ctx->w7[3] = w7[3];
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
sha384_transform_vector (w0, w1, w2, w3, w4, w5, w6, w7, ctx->h);
|
|
|
|
|
|
|
|
|
|
ctx->w0[0] = 0;
|
|
|
|
|
ctx->w0[1] = 0;
|
|
|
|
|
ctx->w0[2] = 0;
|
|
|
|
|
ctx->w0[3] = 0;
|
|
|
|
|
ctx->w1[0] = 0;
|
|
|
|
|
ctx->w1[1] = 0;
|
|
|
|
|
ctx->w1[2] = 0;
|
|
|
|
|
ctx->w1[3] = 0;
|
|
|
|
|
ctx->w2[0] = 0;
|
|
|
|
|
ctx->w2[1] = 0;
|
|
|
|
|
ctx->w2[2] = 0;
|
|
|
|
|
ctx->w2[3] = 0;
|
|
|
|
|
ctx->w3[0] = 0;
|
|
|
|
|
ctx->w3[1] = 0;
|
|
|
|
|
ctx->w3[2] = 0;
|
|
|
|
|
ctx->w3[3] = 0;
|
|
|
|
|
ctx->w4[0] = 0;
|
|
|
|
|
ctx->w4[1] = 0;
|
|
|
|
|
ctx->w4[2] = 0;
|
|
|
|
|
ctx->w4[3] = 0;
|
|
|
|
|
ctx->w5[0] = 0;
|
|
|
|
|
ctx->w5[1] = 0;
|
|
|
|
|
ctx->w5[2] = 0;
|
|
|
|
|
ctx->w5[3] = 0;
|
|
|
|
|
ctx->w6[0] = 0;
|
|
|
|
|
ctx->w6[1] = 0;
|
|
|
|
|
ctx->w6[2] = 0;
|
|
|
|
|
ctx->w6[3] = 0;
|
|
|
|
|
ctx->w7[0] = 0;
|
|
|
|
|
ctx->w7[1] = 0;
|
|
|
|
|
ctx->w7[2] = 0;
|
|
|
|
|
ctx->w7[3] = 0;
|
|
|
|
|
}
|
|
|
|
|
switch_buffer_by_offset_8x4_be (w0, w1, w2, w3, w4, w5, w6, w7, pos);
|
|
|
|
|
|
|
|
|
|
ctx->w0[0] |= w0[0];
|
|
|
|
|
ctx->w0[1] |= w0[1];
|
|
|
|
|
ctx->w0[2] |= w0[2];
|
|
|
|
|
ctx->w0[3] |= w0[3];
|
|
|
|
|
ctx->w1[0] |= w1[0];
|
|
|
|
|
ctx->w1[1] |= w1[1];
|
|
|
|
|
ctx->w1[2] |= w1[2];
|
|
|
|
|
ctx->w1[3] |= w1[3];
|
|
|
|
|
ctx->w2[0] |= w2[0];
|
|
|
|
|
ctx->w2[1] |= w2[1];
|
|
|
|
|
ctx->w2[2] |= w2[2];
|
|
|
|
|
ctx->w2[3] |= w2[3];
|
|
|
|
|
ctx->w3[0] |= w3[0];
|
|
|
|
|
ctx->w3[1] |= w3[1];
|
|
|
|
|
ctx->w3[2] |= w3[2];
|
|
|
|
|
ctx->w3[3] |= w3[3];
|
|
|
|
|
ctx->w4[0] |= w4[0];
|
|
|
|
|
ctx->w4[1] |= w4[1];
|
|
|
|
|
ctx->w4[2] |= w4[2];
|
|
|
|
|
ctx->w4[3] |= w4[3];
|
|
|
|
|
ctx->w5[0] |= w5[0];
|
|
|
|
|
ctx->w5[1] |= w5[1];
|
|
|
|
|
ctx->w5[2] |= w5[2];
|
|
|
|
|
ctx->w5[3] |= w5[3];
|
|
|
|
|
ctx->w6[0] |= w6[0];
|
|
|
|
|
ctx->w6[1] |= w6[1];
|
|
|
|
|
ctx->w6[2] |= w6[2];
|
|
|
|
|
ctx->w6[3] |= w6[3];
|
|
|
|
|
ctx->w7[0] |= w7[0];
|
|
|
|
|
ctx->w7[1] |= w7[1];
|
|
|
|
|
ctx->w7[2] |= w7[2];
|
|
|
|
|
ctx->w7[3] |= w7[3];
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if ((pos + len) < 128)
|
|
|
|
|
{
|
|
|
|
|
switch_buffer_by_offset_8x4_be (w0, w1, w2, w3, w4, w5, w6, w7, pos);
|
|
|
|
|
|
|
|
|
|
ctx->w0[0] |= w0[0];
|
|
|
|
|
ctx->w0[1] |= w0[1];
|
|
|
|
|
ctx->w0[2] |= w0[2];
|
|
|
|
|
ctx->w0[3] |= w0[3];
|
|
|
|
|
ctx->w1[0] |= w1[0];
|
|
|
|
|
ctx->w1[1] |= w1[1];
|
|
|
|
|
ctx->w1[2] |= w1[2];
|
|
|
|
|
ctx->w1[3] |= w1[3];
|
|
|
|
|
ctx->w2[0] |= w2[0];
|
|
|
|
|
ctx->w2[1] |= w2[1];
|
|
|
|
|
ctx->w2[2] |= w2[2];
|
|
|
|
|
ctx->w2[3] |= w2[3];
|
|
|
|
|
ctx->w3[0] |= w3[0];
|
|
|
|
|
ctx->w3[1] |= w3[1];
|
|
|
|
|
ctx->w3[2] |= w3[2];
|
|
|
|
|
ctx->w3[3] |= w3[3];
|
|
|
|
|
ctx->w4[0] |= w4[0];
|
|
|
|
|
ctx->w4[1] |= w4[1];
|
|
|
|
|
ctx->w4[2] |= w4[2];
|
|
|
|
|
ctx->w4[3] |= w4[3];
|
|
|
|
|
ctx->w5[0] |= w5[0];
|
|
|
|
|
ctx->w5[1] |= w5[1];
|
|
|
|
|
ctx->w5[2] |= w5[2];
|
|
|
|
|
ctx->w5[3] |= w5[3];
|
|
|
|
|
ctx->w6[0] |= w6[0];
|
|
|
|
|
ctx->w6[1] |= w6[1];
|
|
|
|
|
ctx->w6[2] |= w6[2];
|
|
|
|
|
ctx->w6[3] |= w6[3];
|
|
|
|
|
ctx->w7[0] |= w7[0];
|
|
|
|
|
ctx->w7[1] |= w7[1];
|
|
|
|
|
ctx->w7[2] |= w7[2];
|
|
|
|
|
ctx->w7[3] |= w7[3];
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
u32x c0[4] = { 0 };
|
|
|
|
|
u32x c1[4] = { 0 };
|
|
|
|
|
u32x c2[4] = { 0 };
|
|
|
|
|
u32x c3[4] = { 0 };
|
|
|
|
|
u32x c4[4] = { 0 };
|
|
|
|
|
u32x c5[4] = { 0 };
|
|
|
|
|
u32x c6[4] = { 0 };
|
|
|
|
|
u32x c7[4] = { 0 };
|
|
|
|
|
|
|
|
|
|
switch_buffer_by_offset_8x4_carry_be (w0, w1, w2, w3, w4, w5, w6, w7, c0, c1, c2, c3, c4, c5, c6, c7, pos);
|
|
|
|
|
|
|
|
|
|
ctx->w0[0] |= w0[0];
|
|
|
|
|
ctx->w0[1] |= w0[1];
|
|
|
|
|
ctx->w0[2] |= w0[2];
|
|
|
|
|
ctx->w0[3] |= w0[3];
|
|
|
|
|
ctx->w1[0] |= w1[0];
|
|
|
|
|
ctx->w1[1] |= w1[1];
|
|
|
|
|
ctx->w1[2] |= w1[2];
|
|
|
|
|
ctx->w1[3] |= w1[3];
|
|
|
|
|
ctx->w2[0] |= w2[0];
|
|
|
|
|
ctx->w2[1] |= w2[1];
|
|
|
|
|
ctx->w2[2] |= w2[2];
|
|
|
|
|
ctx->w2[3] |= w2[3];
|
|
|
|
|
ctx->w3[0] |= w3[0];
|
|
|
|
|
ctx->w3[1] |= w3[1];
|
|
|
|
|
ctx->w3[2] |= w3[2];
|
|
|
|
|
ctx->w3[3] |= w3[3];
|
|
|
|
|
ctx->w4[0] |= w4[0];
|
|
|
|
|
ctx->w4[1] |= w4[1];
|
|
|
|
|
ctx->w4[2] |= w4[2];
|
|
|
|
|
ctx->w4[3] |= w4[3];
|
|
|
|
|
ctx->w5[0] |= w5[0];
|
|
|
|
|
ctx->w5[1] |= w5[1];
|
|
|
|
|
ctx->w5[2] |= w5[2];
|
|
|
|
|
ctx->w5[3] |= w5[3];
|
|
|
|
|
ctx->w6[0] |= w6[0];
|
|
|
|
|
ctx->w6[1] |= w6[1];
|
|
|
|
|
ctx->w6[2] |= w6[2];
|
|
|
|
|
ctx->w6[3] |= w6[3];
|
|
|
|
|
ctx->w7[0] |= w7[0];
|
|
|
|
|
ctx->w7[1] |= w7[1];
|
|
|
|
|
ctx->w7[2] |= w7[2];
|
|
|
|
|
ctx->w7[3] |= w7[3];
|
|
|
|
|
|
|
|
|
|
sha384_transform_vector (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->w4, ctx->w5, ctx->w6, ctx->w7, ctx->h);
|
|
|
|
|
|
|
|
|
|
ctx->w0[0] = c0[0];
|
|
|
|
|
ctx->w0[1] = c0[1];
|
|
|
|
|
ctx->w0[2] = c0[2];
|
|
|
|
|
ctx->w0[3] = c0[3];
|
|
|
|
|
ctx->w1[0] = c1[0];
|
|
|
|
|
ctx->w1[1] = c1[1];
|
|
|
|
|
ctx->w1[2] = c1[2];
|
|
|
|
|
ctx->w1[3] = c1[3];
|
|
|
|
|
ctx->w2[0] = c2[0];
|
|
|
|
|
ctx->w2[1] = c2[1];
|
|
|
|
|
ctx->w2[2] = c2[2];
|
|
|
|
|
ctx->w2[3] = c2[3];
|
|
|
|
|
ctx->w3[0] = c3[0];
|
|
|
|
|
ctx->w3[1] = c3[1];
|
|
|
|
|
ctx->w3[2] = c3[2];
|
|
|
|
|
ctx->w3[3] = c3[3];
|
|
|
|
|
ctx->w4[0] = c4[0];
|
|
|
|
|
ctx->w4[1] = c4[1];
|
|
|
|
|
ctx->w4[2] = c4[2];
|
|
|
|
|
ctx->w4[3] = c4[3];
|
|
|
|
|
ctx->w5[0] = c5[0];
|
|
|
|
|
ctx->w5[1] = c5[1];
|
|
|
|
|
ctx->w5[2] = c5[2];
|
|
|
|
|
ctx->w5[3] = c5[3];
|
|
|
|
|
ctx->w6[0] = c6[0];
|
|
|
|
|
ctx->w6[1] = c6[1];
|
|
|
|
|
ctx->w6[2] = c6[2];
|
|
|
|
|
ctx->w6[3] = c6[3];
|
|
|
|
|
ctx->w7[0] = c7[0];
|
|
|
|
|
ctx->w7[1] = c7[1];
|
|
|
|
|
ctx->w7[2] = c7[2];
|
|
|
|
|
ctx->w7[3] = c7[3];
|
|
|
|
|
}
|
|
|
|
|
u32x c0[4] = { 0 };
|
|
|
|
|
u32x c1[4] = { 0 };
|
|
|
|
|
u32x c2[4] = { 0 };
|
|
|
|
|
u32x c3[4] = { 0 };
|
|
|
|
|
u32x c4[4] = { 0 };
|
|
|
|
|
u32x c5[4] = { 0 };
|
|
|
|
|
u32x c6[4] = { 0 };
|
|
|
|
|
u32x c7[4] = { 0 };
|
|
|
|
|
|
|
|
|
|
switch_buffer_by_offset_8x4_carry_be (w0, w1, w2, w3, w4, w5, w6, w7, c0, c1, c2, c3, c4, c5, c6, c7, pos);
|
|
|
|
|
|
|
|
|
|
ctx->w0[0] |= w0[0];
|
|
|
|
|
ctx->w0[1] |= w0[1];
|
|
|
|
|
ctx->w0[2] |= w0[2];
|
|
|
|
|
ctx->w0[3] |= w0[3];
|
|
|
|
|
ctx->w1[0] |= w1[0];
|
|
|
|
|
ctx->w1[1] |= w1[1];
|
|
|
|
|
ctx->w1[2] |= w1[2];
|
|
|
|
|
ctx->w1[3] |= w1[3];
|
|
|
|
|
ctx->w2[0] |= w2[0];
|
|
|
|
|
ctx->w2[1] |= w2[1];
|
|
|
|
|
ctx->w2[2] |= w2[2];
|
|
|
|
|
ctx->w2[3] |= w2[3];
|
|
|
|
|
ctx->w3[0] |= w3[0];
|
|
|
|
|
ctx->w3[1] |= w3[1];
|
|
|
|
|
ctx->w3[2] |= w3[2];
|
|
|
|
|
ctx->w3[3] |= w3[3];
|
|
|
|
|
ctx->w4[0] |= w4[0];
|
|
|
|
|
ctx->w4[1] |= w4[1];
|
|
|
|
|
ctx->w4[2] |= w4[2];
|
|
|
|
|
ctx->w4[3] |= w4[3];
|
|
|
|
|
ctx->w5[0] |= w5[0];
|
|
|
|
|
ctx->w5[1] |= w5[1];
|
|
|
|
|
ctx->w5[2] |= w5[2];
|
|
|
|
|
ctx->w5[3] |= w5[3];
|
|
|
|
|
ctx->w6[0] |= w6[0];
|
|
|
|
|
ctx->w6[1] |= w6[1];
|
|
|
|
|
ctx->w6[2] |= w6[2];
|
|
|
|
|
ctx->w6[3] |= w6[3];
|
|
|
|
|
ctx->w7[0] |= w7[0];
|
|
|
|
|
ctx->w7[1] |= w7[1];
|
|
|
|
|
ctx->w7[2] |= w7[2];
|
|
|
|
|
ctx->w7[3] |= w7[3];
|
|
|
|
|
|
|
|
|
|
sha384_transform_vector (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->w4, ctx->w5, ctx->w6, ctx->w7, ctx->h);
|
|
|
|
|
|
|
|
|
|
ctx->w0[0] = c0[0];
|
|
|
|
|
ctx->w0[1] = c0[1];
|
|
|
|
|
ctx->w0[2] = c0[2];
|
|
|
|
|
ctx->w0[3] = c0[3];
|
|
|
|
|
ctx->w1[0] = c1[0];
|
|
|
|
|
ctx->w1[1] = c1[1];
|
|
|
|
|
ctx->w1[2] = c1[2];
|
|
|
|
|
ctx->w1[3] = c1[3];
|
|
|
|
|
ctx->w2[0] = c2[0];
|
|
|
|
|
ctx->w2[1] = c2[1];
|
|
|
|
|
ctx->w2[2] = c2[2];
|
|
|
|
|
ctx->w2[3] = c2[3];
|
|
|
|
|
ctx->w3[0] = c3[0];
|
|
|
|
|
ctx->w3[1] = c3[1];
|
|
|
|
|
ctx->w3[2] = c3[2];
|
|
|
|
|
ctx->w3[3] = c3[3];
|
|
|
|
|
ctx->w4[0] = c4[0];
|
|
|
|
|
ctx->w4[1] = c4[1];
|
|
|
|
|
ctx->w4[2] = c4[2];
|
|
|
|
|
ctx->w4[3] = c4[3];
|
|
|
|
|
ctx->w5[0] = c5[0];
|
|
|
|
|
ctx->w5[1] = c5[1];
|
|
|
|
|
ctx->w5[2] = c5[2];
|
|
|
|
|
ctx->w5[3] = c5[3];
|
|
|
|
|
ctx->w6[0] = c6[0];
|
|
|
|
|
ctx->w6[1] = c6[1];
|
|
|
|
|
ctx->w6[2] = c6[2];
|
|
|
|
|
ctx->w6[3] = c6[3];
|
|
|
|
|
ctx->w7[0] = c7[0];
|
|
|
|
|
ctx->w7[1] = c7[1];
|
|
|
|
|
ctx->w7[2] = c7[2];
|
|
|
|
|
ctx->w7[3] = c7[3];
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|