From: Sergey Matveev Date: Thu, 21 Jan 2021 18:26:52 +0000 (+0300) Subject: Non need to marshal temporary buffers X-Git-Tag: v5.3.0~2 X-Git-Url: http://www.git.cypherpunks.ru/?p=gogost.git;a=commitdiff_plain;h=a575c072e60b46d792d31e665683e9fdd91f0bad Non need to marshal temporary buffers --- diff --git a/internal/gost34112012/hash.go b/internal/gost34112012/hash.go index 2c8fa3a..f4cb881 100644 --- a/internal/gost34112012/hash.go +++ b/internal/gost34112012/hash.go @@ -409,25 +409,23 @@ func l(data *[BlockSize]byte) *[BlockSize]byte { } func (h *Hash) MarshalBinary() (data []byte, err error) { - data = make([]byte, len(MarshaledName)+1+8+3*BlockSize+len(h.buf)) + data = make([]byte, len(MarshaledName)+1+8+2*BlockSize+len(h.buf)) copy(data, []byte(MarshaledName)) idx := len(MarshaledName) data[idx] = byte(h.size) idx += 1 binary.BigEndian.PutUint64(data[idx:idx+8], h.n) idx += 8 - copy(data[idx:], h.hsh[:]) + copy(data[idx:], h.hsh) idx += BlockSize - copy(data[idx:], h.chk[:]) - idx += BlockSize - copy(data[idx:], h.tmp[:]) + copy(data[idx:], h.chk) idx += BlockSize copy(data[idx:], h.buf) return } func (h *Hash) UnmarshalBinary(data []byte) error { - expectedLen := len(MarshaledName) + 1 + 8 + 3*BlockSize + expectedLen := len(MarshaledName) + 1 + 8 + 2*BlockSize if len(data) < expectedLen { return fmt.Errorf("gogost/internal/gost34112012: len(data) != %d", expectedLen) } @@ -439,11 +437,9 @@ func (h *Hash) UnmarshalBinary(data []byte) error { idx += 1 h.n = binary.BigEndian.Uint64(data[idx : idx+8]) idx += 8 - copy(h.hsh[:], data[idx:]) - idx += BlockSize - copy(h.chk[:], data[idx:]) + copy(h.hsh, data[idx:]) idx += BlockSize - copy(h.tmp[:], data[idx:]) + copy(h.chk, data[idx:]) idx += BlockSize h.buf = data[idx:] return nil