1
0
mirror of https://github.com/henrydcase/nobs.git synced 2024-11-26 00:51:22 +00:00

sha3: remove if from Read

This commit is contained in:
Henry Case 2020-10-03 22:41:14 +01:00
parent bd23898fdb
commit 174850c5be

View File

@ -157,28 +157,25 @@ func (c *state) Read(out []byte) (nread int, err error) {
rate := c.BlockSize() rate := c.BlockSize()
nread = len(out) nread = len(out)
// finalize if not done yet
if !c.isSquezing { if !c.isSquezing {
c.finalize_sha3() c.finalize_sha3()
} }
// Copy-out bytes that are still kept in the buffer // Copy-out bytes that are still kept in the buffer
if c.idx != 0 {
l := min(c.idx, len(out)) l := min(c.idx, len(out))
idx := rate - c.idx copy(out, buf[rate-c.idx:rate-c.idx+l])
copy(out, buf[idx:idx+l])
out = out[l:] out = out[l:]
c.idx -= l c.idx -= l
}
l := len(out) if len(out) == 0 {
if l == 0 {
// nothing else todo // nothing else todo
return nread, nil return nread, nil
} }
// copy out full blocks and squeeze. at this point // copy out full blocks and squeeze. at this point
// there is no more data in the buffer. // there is no more data in the buffer.
nblocks := l / rate nblocks := len(out) / rate
for nblocks > 0 { for nblocks > 0 {
keccakF1600(&c.a) keccakF1600(&c.a)
copyOut(c, out[:rate]) copyOut(c, out[:rate])