From 08d5d28bae288db91447c41143e9239d1fb7d89b Mon Sep 17 00:00:00 2001 From: Sun Yimin Date: Tue, 5 Jul 2022 12:34:49 +0800 Subject: [PATCH] zuc: reduce one XOR & rename one function --- zuc/asm_amd64.s | 11 ++++------- zuc/eea.go | 2 +- zuc/eea_asm.go | 2 +- zuc/eea_generic.go | 2 +- 4 files changed, 7 insertions(+), 10 deletions(-) diff --git a/zuc/asm_amd64.s b/zuc/asm_amd64.s index c26fca6..4d75de5 100644 --- a/zuc/asm_amd64.s +++ b/zuc/asm_amd64.s @@ -40,8 +40,8 @@ DATA Aes_to_Zuc_mul_high_nibble<>+0x00(SB)/8, $0xA174A97CDD08D500 DATA Aes_to_Zuc_mul_high_nibble<>+0x08(SB)/8, $0x3DE835E04194499C GLOBL Aes_to_Zuc_mul_high_nibble<>(SB), RODATA, $16 -DATA Comb_matrix_mul_low_nibble<>+0x00(SB)/8, $0x9A8E3024EBFF4155 -DATA Comb_matrix_mul_low_nibble<>+0x08(SB)/8, $0x2D3987935C48F6E2 +DATA Comb_matrix_mul_low_nibble<>+0x00(SB)/8, $0xCFDB6571BEAA1400 +DATA Comb_matrix_mul_low_nibble<>+0x08(SB)/8, $0x786CD2C6091DA3B7 GLOBL Comb_matrix_mul_low_nibble<>(SB), RODATA, $16 DATA Comb_matrix_mul_high_nibble<>+0x00(SB)/8, $0x638CFA1523CCBA55 @@ -148,8 +148,7 @@ GLOBL flip_mask<>(SB), RODATA, $16 \ MOVOU Comb_matrix_mul_low_nibble<>(SB), XTMP1 \ MOVOU Comb_matrix_mul_high_nibble<>(SB), XIN_OUT \ - MUL_PSHUFB_SSE(XTMP2, XTMP1, XIN_OUT, XTMP3) \ - PXOR Const_comb_matrix<>(SB), XIN_OUT + MUL_PSHUFB_SSE(XTMP2, XTMP1, XIN_OUT, XTMP3) #define Rotl_5_AVX(XDATA, XTMP0) \ @@ -200,9 +199,7 @@ GLOBL flip_mask<>(SB), RODATA, $16 VAESENCLAST Cancel_aes<>(SB), XTMP2, XTMP2 \ VMOVDQU Comb_matrix_mul_low_nibble<>(SB), XTMP1 \ VMOVDQU Comb_matrix_mul_high_nibble<>(SB), XIN_OUT \ - MUL_PSHUFB_AVX(XTMP2, XTMP1, XIN_OUT, XTMP3) \ - VPXOR Const_comb_matrix<>(SB), XIN_OUT, XIN_OUT - + MUL_PSHUFB_AVX(XTMP2, XTMP1, XIN_OUT, XTMP3) // BITS_REORG(idx) // params diff --git a/zuc/eea.go b/zuc/eea.go index bf04a28..d4fdaa1 100644 --- a/zuc/eea.go +++ b/zuc/eea.go @@ -25,7 +25,7 @@ func NewEEACipher(key []byte, count, bearer, direction uint32) (cipher.Stream, e return newZUCState(key, iv) } -func genericXorKeyStream(c *zucState32, dst, src []byte) { +func xorKeyStreamGeneric(c *zucState32, dst, src []byte) { words := (len(src) + 3) / 4 rounds := words / RoundWords var keyWords [RoundWords]uint32 diff --git a/zuc/eea_asm.go b/zuc/eea_asm.go index 65b0e6b..f8bfc02 100644 --- a/zuc/eea_asm.go +++ b/zuc/eea_asm.go @@ -26,6 +26,6 @@ func xorKeyStream(c *zucState32, dst, src []byte) { xor.XorBytes(dst[words*4:], src[words*4:], singleWord[:]) } } else { - genericXorKeyStream(c, dst, src) + xorKeyStreamGeneric(c, dst, src) } } diff --git a/zuc/eea_generic.go b/zuc/eea_generic.go index 3a7d839..e7135c5 100644 --- a/zuc/eea_generic.go +++ b/zuc/eea_generic.go @@ -4,5 +4,5 @@ package zuc func xorKeyStream(c *zucState32, dst, src []byte) { - genericXorKeyStream(c, dst, src) + xorKeyStreamGeneric(c, dst, src) }