mirror of https://github.com/golang/go.git
Revert "Use binary big endian functions in the crypto boring sha file"
This reverts commit 181767b19c.
This commit is contained in:
parent
181767b19c
commit
1c6c68279e
|
|
@ -57,7 +57,6 @@ _goboringcrypto_gosha512(void *p, size_t n, void *out)
|
||||||
*/
|
*/
|
||||||
import "C"
|
import "C"
|
||||||
import (
|
import (
|
||||||
"encoding/binary"
|
|
||||||
"errors"
|
"errors"
|
||||||
"hash"
|
"hash"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
@ -163,14 +162,14 @@ func (h *sha1Hash) MarshalBinary() ([]byte, error) {
|
||||||
d := (*sha1Ctx)(unsafe.Pointer(&h.ctx))
|
d := (*sha1Ctx)(unsafe.Pointer(&h.ctx))
|
||||||
b := make([]byte, 0, sha1MarshaledSize)
|
b := make([]byte, 0, sha1MarshaledSize)
|
||||||
b = append(b, sha1Magic...)
|
b = append(b, sha1Magic...)
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[0])
|
b = appendUint32(b, d.h[0])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[1])
|
b = appendUint32(b, d.h[1])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[2])
|
b = appendUint32(b, d.h[2])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[3])
|
b = appendUint32(b, d.h[3])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[4])
|
b = appendUint32(b, d.h[4])
|
||||||
b = append(b, d.x[:d.nx]...)
|
b = append(b, d.x[:d.nx]...)
|
||||||
b = b[:len(b)+len(d.x)-int(d.nx)] // already zero
|
b = b[:len(b)+len(d.x)-int(d.nx)] // already zero
|
||||||
b = binary.BigEndian.AppendUint64(b, uint64(d.nl)>>3|uint64(d.nh)<<29)
|
b = appendUint64(b, uint64(d.nl)>>3|uint64(d.nh)<<29)
|
||||||
return b, nil
|
return b, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -289,17 +288,17 @@ func (h *sha224Hash) MarshalBinary() ([]byte, error) {
|
||||||
d := (*sha256Ctx)(unsafe.Pointer(&h.ctx))
|
d := (*sha256Ctx)(unsafe.Pointer(&h.ctx))
|
||||||
b := make([]byte, 0, marshaledSize256)
|
b := make([]byte, 0, marshaledSize256)
|
||||||
b = append(b, magic224...)
|
b = append(b, magic224...)
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[0])
|
b = appendUint32(b, d.h[0])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[1])
|
b = appendUint32(b, d.h[1])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[2])
|
b = appendUint32(b, d.h[2])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[3])
|
b = appendUint32(b, d.h[3])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[4])
|
b = appendUint32(b, d.h[4])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[5])
|
b = appendUint32(b, d.h[5])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[6])
|
b = appendUint32(b, d.h[6])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[7])
|
b = appendUint32(b, d.h[7])
|
||||||
b = append(b, d.x[:d.nx]...)
|
b = append(b, d.x[:d.nx]...)
|
||||||
b = b[:len(b)+len(d.x)-int(d.nx)] // already zero
|
b = b[:len(b)+len(d.x)-int(d.nx)] // already zero
|
||||||
b = binary.BigEndian.AppendUint64(b, uint64(d.nl)>>3|uint64(d.nh)<<29)
|
b = appendUint64(b, uint64(d.nl)>>3|uint64(d.nh)<<29)
|
||||||
return b, nil
|
return b, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -307,17 +306,17 @@ func (h *sha256Hash) MarshalBinary() ([]byte, error) {
|
||||||
d := (*sha256Ctx)(unsafe.Pointer(&h.ctx))
|
d := (*sha256Ctx)(unsafe.Pointer(&h.ctx))
|
||||||
b := make([]byte, 0, marshaledSize256)
|
b := make([]byte, 0, marshaledSize256)
|
||||||
b = append(b, magic256...)
|
b = append(b, magic256...)
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[0])
|
b = appendUint32(b, d.h[0])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[1])
|
b = appendUint32(b, d.h[1])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[2])
|
b = appendUint32(b, d.h[2])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[3])
|
b = appendUint32(b, d.h[3])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[4])
|
b = appendUint32(b, d.h[4])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[5])
|
b = appendUint32(b, d.h[5])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[6])
|
b = appendUint32(b, d.h[6])
|
||||||
b = binary.BigEndian.AppendUint32(b, d.h[7])
|
b = appendUint32(b, d.h[7])
|
||||||
b = append(b, d.x[:d.nx]...)
|
b = append(b, d.x[:d.nx]...)
|
||||||
b = b[:len(b)+len(d.x)-int(d.nx)] // already zero
|
b = b[:len(b)+len(d.x)-int(d.nx)] // already zero
|
||||||
b = binary.BigEndian.AppendUint64(b, uint64(d.nl)>>3|uint64(d.nh)<<29)
|
b = appendUint64(b, uint64(d.nl)>>3|uint64(d.nh)<<29)
|
||||||
return b, nil
|
return b, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -466,17 +465,17 @@ func (h *sha384Hash) MarshalBinary() ([]byte, error) {
|
||||||
d := (*sha512Ctx)(unsafe.Pointer(&h.ctx))
|
d := (*sha512Ctx)(unsafe.Pointer(&h.ctx))
|
||||||
b := make([]byte, 0, marshaledSize512)
|
b := make([]byte, 0, marshaledSize512)
|
||||||
b = append(b, magic384...)
|
b = append(b, magic384...)
|
||||||
b = binary.BigEndian.AppendUint64(b, d.h[0])
|
b = appendUint64(b, d.h[0])
|
||||||
b = binary.BigEndian.AppendUint64(b, d.h[1])
|
b = appendUint64(b, d.h[1])
|
||||||
b = binary.BigEndian.AppendUint64(b, d.h[2])
|
b = appendUint64(b, d.h[2])
|
||||||
b = binary.BigEndian.AppendUint64(b, d.h[3])
|
b = appendUint64(b, d.h[3])
|
||||||
b = binary.BigEndian.AppendUint64(b, d.h[4])
|
b = appendUint64(b, d.h[4])
|
||||||
b = binary.BigEndian.AppendUint64(b, d.h[5])
|
b = appendUint64(b, d.h[5])
|
||||||
b = binary.BigEndian.AppendUint64(b, d.h[6])
|
b = appendUint64(b, d.h[6])
|
||||||
b = binary.BigEndian.AppendUint64(b, d.h[7])
|
b = appendUint64(b, d.h[7])
|
||||||
b = append(b, d.x[:d.nx]...)
|
b = append(b, d.x[:d.nx]...)
|
||||||
b = b[:len(b)+len(d.x)-int(d.nx)] // already zero
|
b = b[:len(b)+len(d.x)-int(d.nx)] // already zero
|
||||||
b = binary.BigEndian.AppendUint64(b, d.nl>>3|d.nh<<61)
|
b = appendUint64(b, d.nl>>3|d.nh<<61)
|
||||||
return b, nil
|
return b, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -484,17 +483,17 @@ func (h *sha512Hash) MarshalBinary() ([]byte, error) {
|
||||||
d := (*sha512Ctx)(unsafe.Pointer(&h.ctx))
|
d := (*sha512Ctx)(unsafe.Pointer(&h.ctx))
|
||||||
b := make([]byte, 0, marshaledSize512)
|
b := make([]byte, 0, marshaledSize512)
|
||||||
b = append(b, magic512...)
|
b = append(b, magic512...)
|
||||||
b = binary.BigEndian.AppendUint64(b, d.h[0])
|
b = appendUint64(b, d.h[0])
|
||||||
b = binary.BigEndian.AppendUint64(b, d.h[1])
|
b = appendUint64(b, d.h[1])
|
||||||
b = binary.BigEndian.AppendUint64(b, d.h[2])
|
b = appendUint64(b, d.h[2])
|
||||||
b = binary.BigEndian.AppendUint64(b, d.h[3])
|
b = appendUint64(b, d.h[3])
|
||||||
b = binary.BigEndian.AppendUint64(b, d.h[4])
|
b = appendUint64(b, d.h[4])
|
||||||
b = binary.BigEndian.AppendUint64(b, d.h[5])
|
b = appendUint64(b, d.h[5])
|
||||||
b = binary.BigEndian.AppendUint64(b, d.h[6])
|
b = appendUint64(b, d.h[6])
|
||||||
b = binary.BigEndian.AppendUint64(b, d.h[7])
|
b = appendUint64(b, d.h[7])
|
||||||
b = append(b, d.x[:d.nx]...)
|
b = append(b, d.x[:d.nx]...)
|
||||||
b = b[:len(b)+len(d.x)-int(d.nx)] // already zero
|
b = b[:len(b)+len(d.x)-int(d.nx)] // already zero
|
||||||
b = binary.BigEndian.AppendUint64(b, d.nl>>3|d.nh<<61)
|
b = appendUint64(b, d.nl>>3|d.nh<<61)
|
||||||
return b, nil
|
return b, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -554,10 +553,47 @@ func (h *sha512Hash) UnmarshalBinary(b []byte) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func appendUint64(b []byte, x uint64) []byte {
|
||||||
|
var a [8]byte
|
||||||
|
putUint64(a[:], x)
|
||||||
|
return append(b, a[:]...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func appendUint32(b []byte, x uint32) []byte {
|
||||||
|
var a [4]byte
|
||||||
|
putUint32(a[:], x)
|
||||||
|
return append(b, a[:]...)
|
||||||
|
}
|
||||||
|
|
||||||
func consumeUint64(b []byte) ([]byte, uint64) {
|
func consumeUint64(b []byte) ([]byte, uint64) {
|
||||||
return b[8:], binary.BigEndian.Uint64(b)
|
_ = b[7]
|
||||||
|
x := uint64(b[7]) | uint64(b[6])<<8 | uint64(b[5])<<16 | uint64(b[4])<<24 |
|
||||||
|
uint64(b[3])<<32 | uint64(b[2])<<40 | uint64(b[1])<<48 | uint64(b[0])<<56
|
||||||
|
return b[8:], x
|
||||||
}
|
}
|
||||||
|
|
||||||
func consumeUint32(b []byte) ([]byte, uint32) {
|
func consumeUint32(b []byte) ([]byte, uint32) {
|
||||||
return b[4:], binary.BigEndian.Uint32(b)
|
_ = b[3]
|
||||||
|
x := uint32(b[3]) | uint32(b[2])<<8 | uint32(b[1])<<16 | uint32(b[0])<<24
|
||||||
|
return b[4:], x
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue