diff --git a/Makefile b/Makefile index f9505a2..d1eac44 100644 --- a/Makefile +++ b/Makefile @@ -24,5 +24,9 @@ build-arm64: docker build -t sha1cd-arm64 -f Dockerfile.arm64 . docker run --rm sha1cd-arm64 +# Build with cgo disabled. +build-nocgo: + CGO_ENABLED=0 go build ./cgo + # Run cross-compilation to assure supported architectures. -cross-build: build-arm build-arm64 +cross-build: build-arm build-arm64 build-nocgo diff --git a/cgo/fallback_no_cgo.go b/cgo/fallback_no_cgo.go new file mode 100644 index 0000000..6e8bef2 --- /dev/null +++ b/cgo/fallback_no_cgo.go @@ -0,0 +1,32 @@ +//go:build !cgo +// +build !cgo + +package cgo + +import ( + "hash" + + "github.com/pjbgf/sha1cd" + "github.com/pjbgf/sha1cd/ubc" +) + +// CalculateDvMask falls back to github.com/pjbgf/sha1cd/ubc implementation +// due to CGO being disabled at compilation time. +func CalculateDvMask(W []uint32) (uint32, error) { + return ubc.CalculateDvMask(W) +} + +// CalculateDvMask falls back to github.com/pjbgf/sha1cd implementation +// due to CGO being disabled at compilation time. +func New() hash.Hash { + return sha1cd.New() +} + +// CalculateDvMask falls back to github.com/pjbgf/sha1cd implementation +// due to CGO being disabled at compilation time. +func Sum(data []byte) ([]byte, bool) { + d := sha1cd.New().(sha1cd.CollisionResistantHash) + d.Write(data) + + return d.CollisionResistantSum(nil) +}