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 <bradfitz@golang.org>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
diff --git a/src/crypto/sha1/sha1.go b/src/crypto/sha1/sha1.go
index 8c48042..286a59d 100644
--- a/src/crypto/sha1/sha1.go
+++ b/src/crypto/sha1/sha1.go
@@ -10,6 +10,7 @@
import (
"crypto"
+ "encoding/binary"
"errors"
"hash"
)
@@ -81,13 +82,13 @@
func appendUint64(b []byte, x uint64) []byte {
var a [8]byte
- putUint64(a[:], x)
+ binary.BigEndian.PutUint64(a[:], x)
return append(b, a[:]...)
}
func appendUint32(b []byte, x uint32) []byte {
var a [4]byte
- putUint32(a[:], x)
+ binary.BigEndian.PutUint32(a[:], x)
return append(b, a[:]...)
}
@@ -170,7 +171,7 @@
// Length in bits.
len <<= 3
- putUint64(tmp[:], len)
+ binary.BigEndian.PutUint64(tmp[:], len)
d.Write(tmp[0:8])
if d.nx != 0 {
@@ -179,11 +180,11 @@
var digest [Size]byte
- putUint32(digest[0:], d.h[0])
- putUint32(digest[4:], d.h[1])
- putUint32(digest[8:], d.h[2])
- putUint32(digest[12:], d.h[3])
- putUint32(digest[16:], d.h[4])
+ binary.BigEndian.PutUint32(digest[0:], d.h[0])
+ binary.BigEndian.PutUint32(digest[4:], d.h[1])
+ binary.BigEndian.PutUint32(digest[8:], d.h[2])
+ binary.BigEndian.PutUint32(digest[12:], d.h[3])
+ binary.BigEndian.PutUint32(digest[16:], d.h[4])
return digest
}
@@ -263,23 +264,3 @@
d.Write(data)
return d.checkSum()
}
-
-func putUint64(x []byte, s uint64) {
- _ = x[7]
- x[0] = byte(s >> 56)
- x[1] = byte(s >> 48)
- x[2] = byte(s >> 40)
- x[3] = byte(s >> 32)
- x[4] = byte(s >> 24)
- x[5] = byte(s >> 16)
- x[6] = byte(s >> 8)
- x[7] = byte(s)
-}
-
-func putUint32(x []byte, s uint32) {
- _ = x[3]
- x[0] = byte(s >> 24)
- x[1] = byte(s >> 16)
- x[2] = byte(s >> 8)
- x[3] = byte(s)
-}
diff --git a/src/crypto/sha256/sha256.go b/src/crypto/sha256/sha256.go
index 3fd446f..e1cccf6 100644
--- a/src/crypto/sha256/sha256.go
+++ b/src/crypto/sha256/sha256.go
@@ -8,6 +8,7 @@
import (
"crypto"
+ "encoding/binary"
"errors"
"hash"
)
@@ -104,35 +105,15 @@
return nil
}
-func putUint32(x []byte, s uint32) {
- _ = x[3]
- x[0] = byte(s >> 24)
- x[1] = byte(s >> 16)
- x[2] = byte(s >> 8)
- x[3] = byte(s)
-}
-
-func putUint64(x []byte, s uint64) {
- _ = x[7]
- x[0] = byte(s >> 56)
- x[1] = byte(s >> 48)
- x[2] = byte(s >> 40)
- x[3] = byte(s >> 32)
- x[4] = byte(s >> 24)
- x[5] = byte(s >> 16)
- x[6] = byte(s >> 8)
- x[7] = byte(s)
-}
-
func appendUint64(b []byte, x uint64) []byte {
var a [8]byte
- putUint64(a[:], x)
+ binary.BigEndian.PutUint64(a[:], x)
return append(b, a[:]...)
}
func appendUint32(b []byte, x uint32) []byte {
var a [4]byte
- putUint32(a[:], x)
+ binary.BigEndian.PutUint32(a[:], x)
return append(b, a[:]...)
}
@@ -246,7 +227,7 @@
// Length in bits.
len <<= 3
- putUint64(tmp[:], len)
+ binary.BigEndian.PutUint64(tmp[:], len)
d.Write(tmp[0:8])
if d.nx != 0 {
@@ -255,15 +236,15 @@
var digest [Size]byte
- putUint32(digest[0:], d.h[0])
- putUint32(digest[4:], d.h[1])
- putUint32(digest[8:], d.h[2])
- putUint32(digest[12:], d.h[3])
- putUint32(digest[16:], d.h[4])
- putUint32(digest[20:], d.h[5])
- putUint32(digest[24:], d.h[6])
+ binary.BigEndian.PutUint32(digest[0:], d.h[0])
+ binary.BigEndian.PutUint32(digest[4:], d.h[1])
+ binary.BigEndian.PutUint32(digest[8:], d.h[2])
+ binary.BigEndian.PutUint32(digest[12:], d.h[3])
+ binary.BigEndian.PutUint32(digest[16:], d.h[4])
+ binary.BigEndian.PutUint32(digest[20:], d.h[5])
+ binary.BigEndian.PutUint32(digest[24:], d.h[6])
if !d.is224 {
- putUint32(digest[28:], d.h[7])
+ binary.BigEndian.PutUint32(digest[28:], d.h[7])
}
return digest
diff --git a/src/crypto/sha512/sha512.go b/src/crypto/sha512/sha512.go
index c685319..9c143a2 100644
--- a/src/crypto/sha512/sha512.go
+++ b/src/crypto/sha512/sha512.go
@@ -12,6 +12,7 @@
import (
"crypto"
+ "encoding/binary"
"errors"
"hash"
)
@@ -195,21 +196,9 @@
return nil
}
-func putUint64(x []byte, s uint64) {
- _ = x[7]
- x[0] = byte(s >> 56)
- x[1] = byte(s >> 48)
- x[2] = byte(s >> 40)
- x[3] = byte(s >> 32)
- x[4] = byte(s >> 24)
- x[5] = byte(s >> 16)
- x[6] = byte(s >> 8)
- x[7] = byte(s)
-}
-
func appendUint64(b []byte, x uint64) []byte {
var a [8]byte
- putUint64(a[:], x)
+ binary.BigEndian.PutUint64(a[:], x)
return append(b, a[:]...)
}
@@ -316,8 +305,8 @@
// Length in bits.
len <<= 3
- putUint64(tmp[0:], 0) // upper 64 bits are always zero, because len variable has type uint64
- putUint64(tmp[8:], len)
+ binary.BigEndian.PutUint64(tmp[0:], 0) // upper 64 bits are always zero, because len variable has type uint64
+ binary.BigEndian.PutUint64(tmp[8:], len)
d.Write(tmp[0:16])
if d.nx != 0 {
@@ -325,15 +314,15 @@
}
var digest [Size]byte
- putUint64(digest[0:], d.h[0])
- putUint64(digest[8:], d.h[1])
- putUint64(digest[16:], d.h[2])
- putUint64(digest[24:], d.h[3])
- putUint64(digest[32:], d.h[4])
- putUint64(digest[40:], d.h[5])
+ binary.BigEndian.PutUint64(digest[0:], d.h[0])
+ binary.BigEndian.PutUint64(digest[8:], d.h[1])
+ binary.BigEndian.PutUint64(digest[16:], d.h[2])
+ binary.BigEndian.PutUint64(digest[24:], d.h[3])
+ binary.BigEndian.PutUint64(digest[32:], d.h[4])
+ binary.BigEndian.PutUint64(digest[40:], d.h[5])
if d.function != crypto.SHA384 {
- putUint64(digest[48:], d.h[6])
- putUint64(digest[56:], d.h[7])
+ binary.BigEndian.PutUint64(digest[48:], d.h[6])
+ binary.BigEndian.PutUint64(digest[56:], d.h[7])
}
return digest