mirror of
https://github.com/guanzhi/GmSSL.git
synced 2026-05-07 08:56:17 +08:00
optimize zuc
about 15% faster on 64-bit cpu
This commit is contained in:
@@ -124,6 +124,24 @@ static const uint8_t S1[256] = {
|
||||
{int j; for (j=0; j<15;j++) LFSR[j]=LFSR[j+1];} \
|
||||
LFSR[15] = V
|
||||
|
||||
/* FIXME: check if uint64_t is supported */
|
||||
#if 1
|
||||
#define LFSRWithWorkMode() \
|
||||
{ \
|
||||
int j; \
|
||||
uint64_t a = LFSR[0]; \
|
||||
a += ((uint64_t)LFSR[0]) << 8; \
|
||||
a += ((uint64_t)LFSR[4]) << 20; \
|
||||
a += ((uint64_t)LFSR[10]) << 21; \
|
||||
a += ((uint64_t)LFSR[13]) << 17; \
|
||||
a += ((uint64_t)LFSR[15]) << 15; \
|
||||
a = (a & 0x7fffffff) + (a >> 31); \
|
||||
a = (a & 0x7fffffff) + (a >> 31); \
|
||||
for (j = 0; j < 15; j++) \
|
||||
LFSR[j] = LFSR[j+1]; \
|
||||
LFSR[15] = a; \
|
||||
}
|
||||
#else
|
||||
#define LFSRWithWorkMode() \
|
||||
V = LFSR[0]; \
|
||||
ADD31(V, ROT31(LFSR[0], 8)); \
|
||||
@@ -133,6 +151,7 @@ static const uint8_t S1[256] = {
|
||||
ADD31(V, ROT31(LFSR[15], 15)); \
|
||||
{int j; for (j=0; j<15;j++) LFSR[j]=LFSR[j+1];} \
|
||||
LFSR[15] = V
|
||||
#endif
|
||||
|
||||
#define BitReconstruction2(X1,X2) \
|
||||
X1 = ((LFSR[11] & 0xFFFF) << 16) | (LFSR[9] >> 15); \
|
||||
@@ -176,6 +195,7 @@ static const uint8_t S1[256] = {
|
||||
(X0 ^ R1) + R2; \
|
||||
F_(X1, X2)
|
||||
|
||||
|
||||
void ZUC_set_key(ZUC_KEY *key, const unsigned char *user_key, const unsigned char *iv)
|
||||
{
|
||||
ZUC_UINT31 *LFSR = key->LFSR;
|
||||
|
||||
Reference in New Issue
Block a user