mirror of
https://github.com/emmansun/gmsm.git
synced 2025-04-28 05:06:18 +08:00
sm3: reduce Write calls in Sum
This commit is contained in:
parent
f1993bc41a
commit
57882bbdbc
12
sm3/sm3.go
12
sm3/sm3.go
@ -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")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user