From 57882bbdbc6da32bf2e24f6913dd95c1b4a8cea0 Mon Sep 17 00:00:00 2001 From: Sun Yimin Date: Tue, 22 Nov 2022 08:42:17 +0800 Subject: [PATCH] sm3: reduce Write calls in Sum --- sm3/sm3.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sm3/sm3.go b/sm3/sm3.go index 828f006..2ad99fa 100644 --- a/sm3/sm3.go +++ b/sm3/sm3.go @@ -129,17 +129,19 @@ func (d *digest) Sum(in []byte) []byte { func (d *digest) checkSum() [Size]byte { len := d.len // Padding. Add a 1 bit and 0 bits until 56 bytes mod 64. - var tmp [64]byte + var tmp [64 + 8]byte // padding + length buffer tmp[0] = 0x80 + var t uint64 if len%64 < 56 { - d.Write(tmp[0 : 56-len%64]) + t = 56 - len%64 } else { - d.Write(tmp[0 : 64+56-len%64]) + t = 64 + 56 - len%64 } // Length in bits. len <<= 3 - binary.BigEndian.PutUint64(tmp[:], len) - d.Write(tmp[0:8]) + padlen := tmp[:t+8] + binary.BigEndian.PutUint64(padlen[t:], len) + d.Write(padlen) if d.nx != 0 { panic("d.nx != 0")