summaryrefslogtreecommitdiff
path: root/pkg/btrfs/crc32c.go
blob: 5e050cc60a17fe8aece722322431754446044daa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package btrfs

import (
	"bytes"
	"encoding/binary"
	"hash/crc32"
)

type CSum [0x20]byte

func (a CSum) Equal(b CSum) bool {
	return bytes.Equal(a[:], b[:])
}

func CRC32c(data []byte) CSum {
	crc := crc32.Update(0, crc32.MakeTable(crc32.Castagnoli), data)

	var ret CSum
	binary.LittleEndian.PutUint32(ret[:], crc)
	return ret
}