clang lacks proper gas support, implement stubs for sha256,sha512 for darwin.

REF: http://llvm.org/bugs/show_bug.cgi?id=18918
This commit is contained in:
Harshavardhana 2015-03-07 01:48:16 -08:00
parent 43f3866842
commit bf5a314144
14 changed files with 81 additions and 4 deletions

View File

@ -0,0 +1,31 @@
package sha256
import (
"io"
"crypto/sha256"
)
// Sum256 - single caller sha256 helper
func Sum256(data []byte) []byte {
d := sha256.New()
d.Write(data)
return d.Sum(nil)
}
// Sum - io.Reader based streaming sha256 helper
func Sum(reader io.Reader) ([]byte, error) {
d := sha256.New()
var err error
for err == nil {
length := 0
byteBuffer := make([]byte, 1024*1024)
length, err = reader.Read(byteBuffer)
byteBuffer = byteBuffer[0:length]
d.Write(byteBuffer)
}
if err != io.EOF {
return nil, err
}
return d.Sum(nil), nil
}

View File

@ -152,11 +152,11 @@ func (d *digest) checkSum() [Size]byte {
/// Convenience functions /// Convenience functions
// Sum256 - single caller sha256 helper // Sum256 - single caller sha256 helper
func Sum256(data []byte) [Size]byte { func Sum256(data []byte) []byte {
var d digest var d digest
d.Reset() d.Reset()
d.Write(data) d.Write(data)
return d.checkSum() return d.Sum(nil)
} }
// Sum - io.Reader based streaming sha256 helper // Sum - io.Reader based streaming sha256 helper

View File

@ -0,0 +1,46 @@
package sha512
import (
"io"
"crypto/sha512"
)
const (
Size = sha512.Size
)
// Sum512 - single caller sha512 helper
func Sum512(data []byte) []byte {
d := sha512.New()
d.Write(data)
return d.Sum(nil)
}
// Sum - io.Reader based streaming sha512 helper
func Sum(reader io.Reader) ([]byte, error) {
d := sha512.New()
var err error
for err == nil {
length := 0
byteBuffer := make([]byte, 1024*1024)
length, err = reader.Read(byteBuffer)
byteBuffer = byteBuffer[0:length]
d.Write(byteBuffer)
}
if err != io.EOF {
return nil, err
}
return d.Sum(nil), nil
}
// SumStream - similar to 'Sum()' but returns a [sha512.Size]byte
func SumStream(reader io.Reader) ([sha512.Size]byte, error) {
var returnValue [sha512.Size]byte
sumSlice, err := Sum(reader)
if err != nil {
return returnValue, err
}
copy(returnValue[:], sumSlice)
return returnValue, err
}

View File

@ -158,11 +158,11 @@ func (d *digest) checkSum() [Size]byte {
/// Convenience functions /// Convenience functions
// Sum512 - single caller sha512 helper // Sum512 - single caller sha512 helper
func Sum512(data []byte) [Size]byte { func Sum512(data []byte) []byte {
var d digest var d digest
d.Reset() d.Reset()
d.Write(data) d.Write(data)
return d.checkSum() return d.Sum(nil)
} }
// Sum - io.Reader based streaming sha512 helper // Sum - io.Reader based streaming sha512 helper