mirror of
https://github.com/minio/minio.git
synced 2025-11-10 05:59:43 -05:00
Crc32c re-implementation with Convenience functions
- Sum32([]byte) --> uint32 - Sum(io.Reader) --> uint32, error
This commit is contained in:
@@ -23,11 +23,25 @@ import (
|
||||
|
||||
var castanagoliTable = crc32.MakeTable(crc32.Castagnoli)
|
||||
|
||||
func Crc32c(buffer []byte) (uint32, error) {
|
||||
func Sum32(buffer []byte) uint32 {
|
||||
crc := crc32.New(castanagoliTable)
|
||||
if len(buffer) <= 0 {
|
||||
return 0, errors.New("input buffer cannot be null")
|
||||
}
|
||||
crc.Reset()
|
||||
crc.Write(buffer)
|
||||
return crc.Sum32(), nil
|
||||
return crc.Sum32()
|
||||
}
|
||||
|
||||
func Sum(reader io.Reader) (uint32, error) {
|
||||
h := New()
|
||||
var err error
|
||||
for err == nil {
|
||||
length := 0
|
||||
byteBuffer := make([]byte, 1024*1024)
|
||||
length, err = reader.Read(byteBuffer)
|
||||
byteBuffer = byteBuffer[0:length]
|
||||
h.Write(byteBuffer)
|
||||
}
|
||||
if err != io.EOF {
|
||||
return nil, err
|
||||
}
|
||||
return h.Sum32(), nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user