sm3: reduce Write calls in Sum

This commit is contained in:
Sun Yimin 2022-11-22 08:42:17 +08:00 committed by GitHub
parent f1993bc41a
commit 57882bbdbc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -129,17 +129,19 @@ func (d *digest) Sum(in []byte) []byte {
func (d *digest) checkSum() [Size]byte { func (d *digest) checkSum() [Size]byte {
len := d.len len := d.len
// Padding. Add a 1 bit and 0 bits until 56 bytes mod 64. // 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 tmp[0] = 0x80
var t uint64
if len%64 < 56 { if len%64 < 56 {
d.Write(tmp[0 : 56-len%64]) t = 56 - len%64
} else { } else {
d.Write(tmp[0 : 64+56-len%64]) t = 64 + 56 - len%64
} }
// Length in bits. // Length in bits.
len <<= 3 len <<= 3
binary.BigEndian.PutUint64(tmp[:], len) padlen := tmp[:t+8]
d.Write(tmp[0:8]) binary.BigEndian.PutUint64(padlen[t:], len)
d.Write(padlen)
if d.nx != 0 { if d.nx != 0 {
panic("d.nx != 0") panic("d.nx != 0")