Skip to content

Commit 3ce865d

Browse files
mmcloughlinbradfitz
authored andcommitted
crypto/sha*: replace putUint{32,64} helpers
Replaces putUint{32,64} functions in crypto/sha* packages with the equivalent functions encoding/binary.BigEndian.PutUint{32,64}. Change-Id: I9208d2125202ea9c97777560e6917d21893aced0 Reviewed-on: https://go-review.googlesource.com/c/go/+/156117 Reviewed-by: Brad Fitzpatrick <[email protected]> Run-TryBot: Brad Fitzpatrick <[email protected]> TryBot-Result: Gobot Gobot <[email protected]>
1 parent 2500ac2 commit 3ce865d

File tree

3 files changed

+33
-82
lines changed

3 files changed

+33
-82
lines changed

src/crypto/sha1/sha1.go

Lines changed: 9 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ package sha1
1010

1111
import (
1212
"crypto"
13+
"encoding/binary"
1314
"errors"
1415
"hash"
1516
)
@@ -81,13 +82,13 @@ func (d *digest) UnmarshalBinary(b []byte) error {
8182

8283
func appendUint64(b []byte, x uint64) []byte {
8384
var a [8]byte
84-
putUint64(a[:], x)
85+
binary.BigEndian.PutUint64(a[:], x)
8586
return append(b, a[:]...)
8687
}
8788

8889
func appendUint32(b []byte, x uint32) []byte {
8990
var a [4]byte
90-
putUint32(a[:], x)
91+
binary.BigEndian.PutUint32(a[:], x)
9192
return append(b, a[:]...)
9293
}
9394

@@ -170,7 +171,7 @@ func (d *digest) checkSum() [Size]byte {
170171

171172
// Length in bits.
172173
len <<= 3
173-
putUint64(tmp[:], len)
174+
binary.BigEndian.PutUint64(tmp[:], len)
174175
d.Write(tmp[0:8])
175176

176177
if d.nx != 0 {
@@ -179,11 +180,11 @@ func (d *digest) checkSum() [Size]byte {
179180

180181
var digest [Size]byte
181182

182-
putUint32(digest[0:], d.h[0])
183-
putUint32(digest[4:], d.h[1])
184-
putUint32(digest[8:], d.h[2])
185-
putUint32(digest[12:], d.h[3])
186-
putUint32(digest[16:], d.h[4])
183+
binary.BigEndian.PutUint32(digest[0:], d.h[0])
184+
binary.BigEndian.PutUint32(digest[4:], d.h[1])
185+
binary.BigEndian.PutUint32(digest[8:], d.h[2])
186+
binary.BigEndian.PutUint32(digest[12:], d.h[3])
187+
binary.BigEndian.PutUint32(digest[16:], d.h[4])
187188

188189
return digest
189190
}
@@ -263,23 +264,3 @@ func Sum(data []byte) [Size]byte {
263264
d.Write(data)
264265
return d.checkSum()
265266
}
266-
267-
func putUint64(x []byte, s uint64) {
268-
_ = x[7]
269-
x[0] = byte(s >> 56)
270-
x[1] = byte(s >> 48)
271-
x[2] = byte(s >> 40)
272-
x[3] = byte(s >> 32)
273-
x[4] = byte(s >> 24)
274-
x[5] = byte(s >> 16)
275-
x[6] = byte(s >> 8)
276-
x[7] = byte(s)
277-
}
278-
279-
func putUint32(x []byte, s uint32) {
280-
_ = x[3]
281-
x[0] = byte(s >> 24)
282-
x[1] = byte(s >> 16)
283-
x[2] = byte(s >> 8)
284-
x[3] = byte(s)
285-
}

src/crypto/sha256/sha256.go

Lines changed: 12 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package sha256
88

99
import (
1010
"crypto"
11+
"encoding/binary"
1112
"errors"
1213
"hash"
1314
)
@@ -104,35 +105,15 @@ func (d *digest) UnmarshalBinary(b []byte) error {
104105
return nil
105106
}
106107

107-
func putUint32(x []byte, s uint32) {
108-
_ = x[3]
109-
x[0] = byte(s >> 24)
110-
x[1] = byte(s >> 16)
111-
x[2] = byte(s >> 8)
112-
x[3] = byte(s)
113-
}
114-
115-
func putUint64(x []byte, s uint64) {
116-
_ = x[7]
117-
x[0] = byte(s >> 56)
118-
x[1] = byte(s >> 48)
119-
x[2] = byte(s >> 40)
120-
x[3] = byte(s >> 32)
121-
x[4] = byte(s >> 24)
122-
x[5] = byte(s >> 16)
123-
x[6] = byte(s >> 8)
124-
x[7] = byte(s)
125-
}
126-
127108
func appendUint64(b []byte, x uint64) []byte {
128109
var a [8]byte
129-
putUint64(a[:], x)
110+
binary.BigEndian.PutUint64(a[:], x)
130111
return append(b, a[:]...)
131112
}
132113

133114
func appendUint32(b []byte, x uint32) []byte {
134115
var a [4]byte
135-
putUint32(a[:], x)
116+
binary.BigEndian.PutUint32(a[:], x)
136117
return append(b, a[:]...)
137118
}
138119

@@ -246,7 +227,7 @@ func (d *digest) checkSum() [Size]byte {
246227

247228
// Length in bits.
248229
len <<= 3
249-
putUint64(tmp[:], len)
230+
binary.BigEndian.PutUint64(tmp[:], len)
250231
d.Write(tmp[0:8])
251232

252233
if d.nx != 0 {
@@ -255,15 +236,15 @@ func (d *digest) checkSum() [Size]byte {
255236

256237
var digest [Size]byte
257238

258-
putUint32(digest[0:], d.h[0])
259-
putUint32(digest[4:], d.h[1])
260-
putUint32(digest[8:], d.h[2])
261-
putUint32(digest[12:], d.h[3])
262-
putUint32(digest[16:], d.h[4])
263-
putUint32(digest[20:], d.h[5])
264-
putUint32(digest[24:], d.h[6])
239+
binary.BigEndian.PutUint32(digest[0:], d.h[0])
240+
binary.BigEndian.PutUint32(digest[4:], d.h[1])
241+
binary.BigEndian.PutUint32(digest[8:], d.h[2])
242+
binary.BigEndian.PutUint32(digest[12:], d.h[3])
243+
binary.BigEndian.PutUint32(digest[16:], d.h[4])
244+
binary.BigEndian.PutUint32(digest[20:], d.h[5])
245+
binary.BigEndian.PutUint32(digest[24:], d.h[6])
265246
if !d.is224 {
266-
putUint32(digest[28:], d.h[7])
247+
binary.BigEndian.PutUint32(digest[28:], d.h[7])
267248
}
268249

269250
return digest

src/crypto/sha512/sha512.go

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ package sha512
1212

1313
import (
1414
"crypto"
15+
"encoding/binary"
1516
"errors"
1617
"hash"
1718
)
@@ -195,21 +196,9 @@ func (d *digest) UnmarshalBinary(b []byte) error {
195196
return nil
196197
}
197198

198-
func putUint64(x []byte, s uint64) {
199-
_ = x[7]
200-
x[0] = byte(s >> 56)
201-
x[1] = byte(s >> 48)
202-
x[2] = byte(s >> 40)
203-
x[3] = byte(s >> 32)
204-
x[4] = byte(s >> 24)
205-
x[5] = byte(s >> 16)
206-
x[6] = byte(s >> 8)
207-
x[7] = byte(s)
208-
}
209-
210199
func appendUint64(b []byte, x uint64) []byte {
211200
var a [8]byte
212-
putUint64(a[:], x)
201+
binary.BigEndian.PutUint64(a[:], x)
213202
return append(b, a[:]...)
214203
}
215204

@@ -316,24 +305,24 @@ func (d *digest) checkSum() [Size]byte {
316305

317306
// Length in bits.
318307
len <<= 3
319-
putUint64(tmp[0:], 0) // upper 64 bits are always zero, because len variable has type uint64
320-
putUint64(tmp[8:], len)
308+
binary.BigEndian.PutUint64(tmp[0:], 0) // upper 64 bits are always zero, because len variable has type uint64
309+
binary.BigEndian.PutUint64(tmp[8:], len)
321310
d.Write(tmp[0:16])
322311

323312
if d.nx != 0 {
324313
panic("d.nx != 0")
325314
}
326315

327316
var digest [Size]byte
328-
putUint64(digest[0:], d.h[0])
329-
putUint64(digest[8:], d.h[1])
330-
putUint64(digest[16:], d.h[2])
331-
putUint64(digest[24:], d.h[3])
332-
putUint64(digest[32:], d.h[4])
333-
putUint64(digest[40:], d.h[5])
317+
binary.BigEndian.PutUint64(digest[0:], d.h[0])
318+
binary.BigEndian.PutUint64(digest[8:], d.h[1])
319+
binary.BigEndian.PutUint64(digest[16:], d.h[2])
320+
binary.BigEndian.PutUint64(digest[24:], d.h[3])
321+
binary.BigEndian.PutUint64(digest[32:], d.h[4])
322+
binary.BigEndian.PutUint64(digest[40:], d.h[5])
334323
if d.function != crypto.SHA384 {
335-
putUint64(digest[48:], d.h[6])
336-
putUint64(digest[56:], d.h[7])
324+
binary.BigEndian.PutUint64(digest[48:], d.h[6])
325+
binary.BigEndian.PutUint64(digest[56:], d.h[7])
337326
}
338327

339328
return digest

0 commit comments

Comments
 (0)