@ -1452,92 +1452,101 @@ DECLSPEC void sha384_final (sha384_ctx_t *ctx)
DECLSPEC void sha384_hmac_init_128 ( sha384_hmac_ctx_t *ctx, const u32 *w0, const u32 *w1, const u32 *w2, const u32 *w3, const u32 *w4, const u32 *w5, const u32 *w6, const u32 *w7 )
{
u32 t 0[4];
u32 t 1[4];
u32 t 2[4];
u32 t 3[4];
u32 t 4[4];
u32 t 5[4];
u32 t 6[4];
u32 t 7[4];
u32 a 0[4];
u32 a 1[4];
u32 a 2[4];
u32 a 3[4];
u32 a 4[4];
u32 a 5[4];
u32 a 6[4];
u32 a 7[4];
// ipad
t 0[0] = w0[0] ^ 0x36363636 ;
t 0[1] = w0[1] ^ 0x36363636 ;
t 0[2] = w0[2] ^ 0x36363636 ;
t 0[3] = w0[3] ^ 0x36363636 ;
t 1[0] = w1[0] ^ 0x36363636 ;
t 1[1] = w1[1] ^ 0x36363636 ;
t 1[2] = w1[2] ^ 0x36363636 ;
t 1[3] = w1[3] ^ 0x36363636 ;
t 2[0] = w2[0] ^ 0x36363636 ;
t 2[1] = w2[1] ^ 0x36363636 ;
t 2[2] = w2[2] ^ 0x36363636 ;
t 2[3] = w2[3] ^ 0x36363636 ;
t 3[0] = w3[0] ^ 0x36363636 ;
t 3[1] = w3[1] ^ 0x36363636 ;
t 3[2] = w3[2] ^ 0x36363636 ;
t 3[3] = w3[3] ^ 0x36363636 ;
t 4[0] = w4[0] ^ 0x36363636 ;
t 4[1] = w4[1] ^ 0x36363636 ;
t 4[2] = w4[2] ^ 0x36363636 ;
t 4[3] = w4[3] ^ 0x36363636 ;
t 5[0] = w5[0] ^ 0x36363636 ;
t 5[1] = w5[1] ^ 0x36363636 ;
t 5[2] = w5[2] ^ 0x36363636 ;
t 5[3] = w5[3] ^ 0x36363636 ;
t 6[0] = w6[0] ^ 0x36363636 ;
t 6[1] = w6[1] ^ 0x36363636 ;
t 6[2] = w6[2] ^ 0x36363636 ;
t 6[3] = w6[3] ^ 0x36363636 ;
t 7[0] = w7[0] ^ 0x36363636 ;
t 7[1] = w7[1] ^ 0x36363636 ;
t 7[2] = w7[2] ^ 0x36363636 ;
t 7[3] = w7[3] ^ 0x36363636 ;
a 0[0] = w0[0] ^ 0x36363636 ;
a 0[1] = w0[1] ^ 0x36363636 ;
a 0[2] = w0[2] ^ 0x36363636 ;
a 0[3] = w0[3] ^ 0x36363636 ;
a 1[0] = w1[0] ^ 0x36363636 ;
a 1[1] = w1[1] ^ 0x36363636 ;
a 1[2] = w1[2] ^ 0x36363636 ;
a 1[3] = w1[3] ^ 0x36363636 ;
a 2[0] = w2[0] ^ 0x36363636 ;
a 2[1] = w2[1] ^ 0x36363636 ;
a 2[2] = w2[2] ^ 0x36363636 ;
a 2[3] = w2[3] ^ 0x36363636 ;
a 3[0] = w3[0] ^ 0x36363636 ;
a 3[1] = w3[1] ^ 0x36363636 ;
a 3[2] = w3[2] ^ 0x36363636 ;
a 3[3] = w3[3] ^ 0x36363636 ;
a 4[0] = w4[0] ^ 0x36363636 ;
a 4[1] = w4[1] ^ 0x36363636 ;
a 4[2] = w4[2] ^ 0x36363636 ;
a 4[3] = w4[3] ^ 0x36363636 ;
a 5[0] = w5[0] ^ 0x36363636 ;
a 5[1] = w5[1] ^ 0x36363636 ;
a 5[2] = w5[2] ^ 0x36363636 ;
a 5[3] = w5[3] ^ 0x36363636 ;
a 6[0] = w6[0] ^ 0x36363636 ;
a 6[1] = w6[1] ^ 0x36363636 ;
a 6[2] = w6[2] ^ 0x36363636 ;
a 6[3] = w6[3] ^ 0x36363636 ;
a 7[0] = w7[0] ^ 0x36363636 ;
a 7[1] = w7[1] ^ 0x36363636 ;
a 7[2] = w7[2] ^ 0x36363636 ;
a 7[3] = w7[3] ^ 0x36363636 ;
sha384_init ( &ctx->ipad ) ;
sha384_update_128 ( &ctx->ipad, t0, t1, t2, t3, t4, t5, t6, t 7, 128 ) ;
sha384_update_128 ( &ctx->ipad, a0, a1, a2, a3, a4, a5, a6, a 7, 128 ) ;
// opad
t0[0] = w0[0] ^ 0x5c5c5c5c ;
t0[1] = w0[1] ^ 0x5c5c5c5c ;
t0[2] = w0[2] ^ 0x5c5c5c5c ;
t0[3] = w0[3] ^ 0x5c5c5c5c ;
t1[0] = w1[0] ^ 0x5c5c5c5c ;
t1[1] = w1[1] ^ 0x5c5c5c5c ;
t1[2] = w1[2] ^ 0x5c5c5c5c ;
t1[3] = w1[3] ^ 0x5c5c5c5c ;
t2[0] = w2[0] ^ 0x5c5c5c5c ;
t2[1] = w2[1] ^ 0x5c5c5c5c ;
t2[2] = w2[2] ^ 0x5c5c5c5c ;
t2[3] = w2[3] ^ 0x5c5c5c5c ;
t3[0] = w3[0] ^ 0x5c5c5c5c ;
t3[1] = w3[1] ^ 0x5c5c5c5c ;
t3[2] = w3[2] ^ 0x5c5c5c5c ;
t3[3] = w3[3] ^ 0x5c5c5c5c ;
t4[0] = w4[0] ^ 0x5c5c5c5c ;
t4[1] = w4[1] ^ 0x5c5c5c5c ;
t4[2] = w4[2] ^ 0x5c5c5c5c ;
t4[3] = w4[3] ^ 0x5c5c5c5c ;
t5[0] = w5[0] ^ 0x5c5c5c5c ;
t5[1] = w5[1] ^ 0x5c5c5c5c ;
t5[2] = w5[2] ^ 0x5c5c5c5c ;
t5[3] = w5[3] ^ 0x5c5c5c5c ;
t6[0] = w6[0] ^ 0x5c5c5c5c ;
t6[1] = w6[1] ^ 0x5c5c5c5c ;
t6[2] = w6[2] ^ 0x5c5c5c5c ;
t6[3] = w6[3] ^ 0x5c5c5c5c ;
t7[0] = w7[0] ^ 0x5c5c5c5c ;
t7[1] = w7[1] ^ 0x5c5c5c5c ;
t7[2] = w7[2] ^ 0x5c5c5c5c ;
t7[3] = w7[3] ^ 0x5c5c5c5c ;
u32x b0[4] ;
u32x b1[4] ;
u32x b2[4] ;
u32x b3[4] ;
u32x b4[4] ;
u32x b5[4] ;
u32x b6[4] ;
u32x b7[4] ;
b0[0] = w0[0] ^ 0x5c5c5c5c ;
b0[1] = w0[1] ^ 0x5c5c5c5c ;
b0[2] = w0[2] ^ 0x5c5c5c5c ;
b0[3] = w0[3] ^ 0x5c5c5c5c ;
b1[0] = w1[0] ^ 0x5c5c5c5c ;
b1[1] = w1[1] ^ 0x5c5c5c5c ;
b1[2] = w1[2] ^ 0x5c5c5c5c ;
b1[3] = w1[3] ^ 0x5c5c5c5c ;
b2[0] = w2[0] ^ 0x5c5c5c5c ;
b2[1] = w2[1] ^ 0x5c5c5c5c ;
b2[2] = w2[2] ^ 0x5c5c5c5c ;
b2[3] = w2[3] ^ 0x5c5c5c5c ;
b3[0] = w3[0] ^ 0x5c5c5c5c ;
b3[1] = w3[1] ^ 0x5c5c5c5c ;
b3[2] = w3[2] ^ 0x5c5c5c5c ;
b3[3] = w3[3] ^ 0x5c5c5c5c ;
b4[0] = w4[0] ^ 0x5c5c5c5c ;
b4[1] = w4[1] ^ 0x5c5c5c5c ;
b4[2] = w4[2] ^ 0x5c5c5c5c ;
b4[3] = w4[3] ^ 0x5c5c5c5c ;
b5[0] = w5[0] ^ 0x5c5c5c5c ;
b5[1] = w5[1] ^ 0x5c5c5c5c ;
b5[2] = w5[2] ^ 0x5c5c5c5c ;
b5[3] = w5[3] ^ 0x5c5c5c5c ;
b6[0] = w6[0] ^ 0x5c5c5c5c ;
b6[1] = w6[1] ^ 0x5c5c5c5c ;
b6[2] = w6[2] ^ 0x5c5c5c5c ;
b6[3] = w6[3] ^ 0x5c5c5c5c ;
b7[0] = w7[0] ^ 0x5c5c5c5c ;
b7[1] = w7[1] ^ 0x5c5c5c5c ;
b7[2] = w7[2] ^ 0x5c5c5c5c ;
b7[3] = w7[3] ^ 0x5c5c5c5c ;
sha384_init ( &ctx->opad ) ;
sha384_update_128 ( &ctx->opad, t0, t1, t2, t3, t4, t5, t6, t7, 128 ) ;
sha384_update_128 ( &ctx->opad, b0, b1, b2, b3, b4, b5, b6, b 7, 128 ) ;
}
DECLSPEC void sha384_hmac_init ( sha384_hmac_ctx_t *ctx, const u32 *w, const int len )
@ -2950,92 +2959,101 @@ DECLSPEC void sha384_final_vector (sha384_ctx_vector_t *ctx)
DECLSPEC void sha384_hmac_init_vector_128 ( sha384_hmac_ctx_vector_t *ctx, const u32x *w0, const u32x *w1, const u32x *w2, const u32x *w3, const u32x *w4, const u32x *w5, const u32x *w6, const u32x *w7 )
{
u32x t 0[4];
u32x t 1[4];
u32x t 2[4];
u32x t 3[4];
u32x t 4[4];
u32x t 5[4];
u32x t 6[4];
u32x t 7[4];
u32x a 0[4];
u32x a 1[4];
u32x a 2[4];
u32x a 3[4];
u32x a 4[4];
u32x a 5[4];
u32x a 6[4];
u32x a 7[4];
// ipad
t 0[0] = w0[0] ^ 0x36363636 ;
t 0[1] = w0[1] ^ 0x36363636 ;
t 0[2] = w0[2] ^ 0x36363636 ;
t 0[3] = w0[3] ^ 0x36363636 ;
t 1[0] = w1[0] ^ 0x36363636 ;
t 1[1] = w1[1] ^ 0x36363636 ;
t 1[2] = w1[2] ^ 0x36363636 ;
t 1[3] = w1[3] ^ 0x36363636 ;
t 2[0] = w2[0] ^ 0x36363636 ;
t 2[1] = w2[1] ^ 0x36363636 ;
t 2[2] = w2[2] ^ 0x36363636 ;
t 2[3] = w2[3] ^ 0x36363636 ;
t 3[0] = w3[0] ^ 0x36363636 ;
t 3[1] = w3[1] ^ 0x36363636 ;
t 3[2] = w3[2] ^ 0x36363636 ;
t 3[3] = w3[3] ^ 0x36363636 ;
t 4[0] = w4[0] ^ 0x36363636 ;
t 4[1] = w4[1] ^ 0x36363636 ;
t 4[2] = w4[2] ^ 0x36363636 ;
t 4[3] = w4[3] ^ 0x36363636 ;
t 5[0] = w5[0] ^ 0x36363636 ;
t 5[1] = w5[1] ^ 0x36363636 ;
t 5[2] = w5[2] ^ 0x36363636 ;
t 5[3] = w5[3] ^ 0x36363636 ;
t 6[0] = w6[0] ^ 0x36363636 ;
t 6[1] = w6[1] ^ 0x36363636 ;
t 6[2] = w6[2] ^ 0x36363636 ;
t 6[3] = w6[3] ^ 0x36363636 ;
t 7[0] = w7[0] ^ 0x36363636 ;
t 7[1] = w7[1] ^ 0x36363636 ;
t 7[2] = w7[2] ^ 0x36363636 ;
t 7[3] = w7[3] ^ 0x36363636 ;
a 0[0] = w0[0] ^ 0x36363636 ;
a 0[1] = w0[1] ^ 0x36363636 ;
a 0[2] = w0[2] ^ 0x36363636 ;
a 0[3] = w0[3] ^ 0x36363636 ;
a 1[0] = w1[0] ^ 0x36363636 ;
a 1[1] = w1[1] ^ 0x36363636 ;
a 1[2] = w1[2] ^ 0x36363636 ;
a 1[3] = w1[3] ^ 0x36363636 ;
a 2[0] = w2[0] ^ 0x36363636 ;
a 2[1] = w2[1] ^ 0x36363636 ;
a 2[2] = w2[2] ^ 0x36363636 ;
a 2[3] = w2[3] ^ 0x36363636 ;
a 3[0] = w3[0] ^ 0x36363636 ;
a 3[1] = w3[1] ^ 0x36363636 ;
a 3[2] = w3[2] ^ 0x36363636 ;
a 3[3] = w3[3] ^ 0x36363636 ;
a 4[0] = w4[0] ^ 0x36363636 ;
a 4[1] = w4[1] ^ 0x36363636 ;
a 4[2] = w4[2] ^ 0x36363636 ;
a 4[3] = w4[3] ^ 0x36363636 ;
a 5[0] = w5[0] ^ 0x36363636 ;
a 5[1] = w5[1] ^ 0x36363636 ;
a 5[2] = w5[2] ^ 0x36363636 ;
a 5[3] = w5[3] ^ 0x36363636 ;
a 6[0] = w6[0] ^ 0x36363636 ;
a 6[1] = w6[1] ^ 0x36363636 ;
a 6[2] = w6[2] ^ 0x36363636 ;
a 6[3] = w6[3] ^ 0x36363636 ;
a 7[0] = w7[0] ^ 0x36363636 ;
a 7[1] = w7[1] ^ 0x36363636 ;
a 7[2] = w7[2] ^ 0x36363636 ;
a 7[3] = w7[3] ^ 0x36363636 ;
sha384_init_vector ( &ctx->ipad ) ;
sha384_update_vector_128 ( &ctx->ipad, t0, t1, t2, t3, t4, t5, t6, t 7, 128 ) ;
sha384_update_vector_128 ( &ctx->ipad, a0, a1, a2, a3, a4, a5, a6, a 7, 128 ) ;
// opad
t0[0] = w0[0] ^ 0x5c5c5c5c ;
t0[1] = w0[1] ^ 0x5c5c5c5c ;
t0[2] = w0[2] ^ 0x5c5c5c5c ;
t0[3] = w0[3] ^ 0x5c5c5c5c ;
t1[0] = w1[0] ^ 0x5c5c5c5c ;
t1[1] = w1[1] ^ 0x5c5c5c5c ;
t1[2] = w1[2] ^ 0x5c5c5c5c ;
t1[3] = w1[3] ^ 0x5c5c5c5c ;
t2[0] = w2[0] ^ 0x5c5c5c5c ;
t2[1] = w2[1] ^ 0x5c5c5c5c ;
t2[2] = w2[2] ^ 0x5c5c5c5c ;
t2[3] = w2[3] ^ 0x5c5c5c5c ;
t3[0] = w3[0] ^ 0x5c5c5c5c ;
t3[1] = w3[1] ^ 0x5c5c5c5c ;
t3[2] = w3[2] ^ 0x5c5c5c5c ;
t3[3] = w3[3] ^ 0x5c5c5c5c ;
t4[0] = w4[0] ^ 0x5c5c5c5c ;
t4[1] = w4[1] ^ 0x5c5c5c5c ;
t4[2] = w4[2] ^ 0x5c5c5c5c ;
t4[3] = w4[3] ^ 0x5c5c5c5c ;
t5[0] = w5[0] ^ 0x5c5c5c5c ;
t5[1] = w5[1] ^ 0x5c5c5c5c ;
t5[2] = w5[2] ^ 0x5c5c5c5c ;
t5[3] = w5[3] ^ 0x5c5c5c5c ;
t6[0] = w6[0] ^ 0x5c5c5c5c ;
t6[1] = w6[1] ^ 0x5c5c5c5c ;
t6[2] = w6[2] ^ 0x5c5c5c5c ;
t6[3] = w6[3] ^ 0x5c5c5c5c ;
t7[0] = w7[0] ^ 0x5c5c5c5c ;
t7[1] = w7[1] ^ 0x5c5c5c5c ;
t7[2] = w7[2] ^ 0x5c5c5c5c ;
t7[3] = w7[3] ^ 0x5c5c5c5c ;
u32 b0[4] ;
u32 b1[4] ;
u32 b2[4] ;
u32 b3[4] ;
u32 b4[4] ;
u32 b5[4] ;
u32 b6[4] ;
u32 b7[4] ;
b0[0] = w0[0] ^ 0x5c5c5c5c ;
b0[1] = w0[1] ^ 0x5c5c5c5c ;
b0[2] = w0[2] ^ 0x5c5c5c5c ;
b0[3] = w0[3] ^ 0x5c5c5c5c ;
b1[0] = w1[0] ^ 0x5c5c5c5c ;
b1[1] = w1[1] ^ 0x5c5c5c5c ;
b1[2] = w1[2] ^ 0x5c5c5c5c ;
b1[3] = w1[3] ^ 0x5c5c5c5c ;
b2[0] = w2[0] ^ 0x5c5c5c5c ;
b2[1] = w2[1] ^ 0x5c5c5c5c ;
b2[2] = w2[2] ^ 0x5c5c5c5c ;
b2[3] = w2[3] ^ 0x5c5c5c5c ;
b3[0] = w3[0] ^ 0x5c5c5c5c ;
b3[1] = w3[1] ^ 0x5c5c5c5c ;
b3[2] = w3[2] ^ 0x5c5c5c5c ;
b3[3] = w3[3] ^ 0x5c5c5c5c ;
b4[0] = w4[0] ^ 0x5c5c5c5c ;
b4[1] = w4[1] ^ 0x5c5c5c5c ;
b4[2] = w4[2] ^ 0x5c5c5c5c ;
b4[3] = w4[3] ^ 0x5c5c5c5c ;
b5[0] = w5[0] ^ 0x5c5c5c5c ;
b5[1] = w5[1] ^ 0x5c5c5c5c ;
b5[2] = w5[2] ^ 0x5c5c5c5c ;
b5[3] = w5[3] ^ 0x5c5c5c5c ;
b6[0] = w6[0] ^ 0x5c5c5c5c ;
b6[1] = w6[1] ^ 0x5c5c5c5c ;
b6[2] = w6[2] ^ 0x5c5c5c5c ;
b6[3] = w6[3] ^ 0x5c5c5c5c ;
b7[0] = w7[0] ^ 0x5c5c5c5c ;
b7[1] = w7[1] ^ 0x5c5c5c5c ;
b7[2] = w7[2] ^ 0x5c5c5c5c ;
b7[3] = w7[3] ^ 0x5c5c5c5c ;
sha384_init_vector ( &ctx->opad ) ;
sha384_update_vector_128 ( &ctx->opad, t0, t1, t2, t3, t4, t5, t6, t7, 128 ) ;
sha384_update_vector_128 ( &ctx->opad, b0, b1, b2, b3, b4, b5, b6, b 7, 128 ) ;
}
DECLSPEC void sha384_hmac_init_vector ( sha384_hmac_ctx_vector_t *ctx, const u32x *w, const int len )