From a575c072e60b46d792d31e665683e9fdd91f0bad Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Thu, 21 Jan 2021 21:26:52 +0300 Subject: [PATCH] Non need to marshal temporary buffers --- internal/gost34112012/hash.go | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) 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 -- 2.44.0