diff --git a/zuc/eia256.go b/zuc/eia256.go index 935a439..9d2ba70 100644 --- a/zuc/eia256.go +++ b/zuc/eia256.go @@ -224,6 +224,7 @@ func (m *ZUC256Mac) Finish(p []byte, nbits int) []byte { b = p[nbytes] } digest := m.checkSum(nRemainBits, b) + m.Reset() return digest[:] } diff --git a/zuc/eia256_asm_ppc64x.s b/zuc/eia256_asm_ppc64x.s index cd87cf6..a5234d9 100644 --- a/zuc/eia256_asm_ppc64x.s +++ b/zuc/eia256_asm_ppc64x.s @@ -52,8 +52,8 @@ TEXT ·eia256RoundTag8(SB),NOSPLIT,$0 MOVD $0x10, R8 LXVD2X (PTR)(R8), BIT_REV_TAB_L VSLB BIT_REV_TAB_L, XTMP2, BIT_REV_TAB_H - VPERM BIT_REV_TAB_L, BIT_REV_TAB_L, XTMP3, XTMP3 - VPERM BIT_REV_TAB_H, BIT_REV_TAB_H, XTMP1, XTMP1 + VPERM BIT_REV_TAB_L, BIT_REV_TAB_L, XTMP1, XTMP1 + VPERM BIT_REV_TAB_H, BIT_REV_TAB_H, XTMP3, XTMP3 VXOR XTMP1, XTMP3, XTMP3 // XTMP3 - bit reverse data bytes // ZUC authentication part, 4x32 data bits @@ -142,8 +142,8 @@ TEXT ·eia256RoundTag16(SB),NOSPLIT,$0 MOVD $0x10, R8 LXVD2X (PTR)(R8), BIT_REV_TAB_L VSLB BIT_REV_TAB_L, XTMP2, BIT_REV_TAB_H - VPERM BIT_REV_TAB_L, BIT_REV_TAB_L, XTMP3, XTMP3 - VPERM BIT_REV_TAB_H, BIT_REV_TAB_H, XTMP1, XTMP1 + VPERM BIT_REV_TAB_L, BIT_REV_TAB_L, XTMP1, XTMP1 + VPERM BIT_REV_TAB_H, BIT_REV_TAB_H, XTMP3, XTMP3 VXOR XTMP1, XTMP3, XTMP3 // XTMP3 - bit reverse data bytes // ZUC authentication part, 4x32 data bits