]> Cypherpunks repositories - gostls13.git/commitdiff
crypto/sha*: replace putUint{32,64} helpers
authorMichael McLoughlin <mmcloughlin@gmail.com>
Thu, 3 Jan 2019 02:47:33 +0000 (18:47 -0800)
committerBrad Fitzpatrick <bradfitz@golang.org>
Thu, 23 May 2019 16:16:26 +0000 (16:16 +0000)
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>

src/crypto/sha1/sha1.go
src/crypto/sha256/sha256.go
src/crypto/sha512/sha512.go

index 8c48042b1ce3f987c437d2825fedfb8e3d2ec48b..286a59d33d662bfa6fc955dea711f0a3d5eba6a8 100644 (file)
@@ -10,6 +10,7 @@ package sha1
 
 import (
        "crypto"
+       "encoding/binary"
        "errors"
        "hash"
 )
@@ -81,13 +82,13 @@ func (d *digest) UnmarshalBinary(b []byte) error {
 
 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 @@ func (d *digest) checkSum() [Size]byte {
 
        // 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 @@ func (d *digest) checkSum() [Size]byte {
 
        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 @@ func Sum(data []byte) [Size]byte {
        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)
-}
index 3fd446f94b6f2835326e49406982e72533e8a73e..e1cccf65a60307517d7adecf7dcefdbd47d88aa5 100644 (file)
@@ -8,6 +8,7 @@ package sha256
 
 import (
        "crypto"
+       "encoding/binary"
        "errors"
        "hash"
 )
@@ -104,35 +105,15 @@ func (d *digest) UnmarshalBinary(b []byte) error {
        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 @@ func (d *digest) checkSum() [Size]byte {
 
        // 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 @@ func (d *digest) checkSum() [Size]byte {
 
        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
index c685319480c24470578f88649d5de9cba8a0de3f..9c143a2a2817786095b94b2775db18210ff3a7be 100644 (file)
@@ -12,6 +12,7 @@ package sha512
 
 import (
        "crypto"
+       "encoding/binary"
        "errors"
        "hash"
 )
@@ -195,21 +196,9 @@ func (d *digest) UnmarshalBinary(b []byte) error {
        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 @@ func (d *digest) checkSum() [Size]byte {
 
        // 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 @@ func (d *digest) checkSum() [Size]byte {
        }
 
        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