From 341054857ecc5555e4bdf3f1e74486e120dd3759 Mon Sep 17 00:00:00 2001 From: Greg Date: Thu, 2 Apr 2020 12:02:23 -0400 Subject: [PATCH] Initial commit --- .gitignore | 1 + go.mod | 5 +++++ go.sum | 6 ++++++ main.go | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 58 insertions(+) create mode 100644 .gitignore create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main.go diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d66949a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +b3sum diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..fb2195a --- /dev/null +++ b/go.mod @@ -0,0 +1,5 @@ +module git.wow.st/gmp/b3sum + +go 1.13 + +require github.com/zeebo/blake3 v0.0.1 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..1c98d4c --- /dev/null +++ b/go.sum @@ -0,0 +1,6 @@ +github.com/zeebo/assert v1.1.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= +github.com/zeebo/blake3 v0.0.1 h1:nZUbpoC0IddEMH+XSzRlqmLLpxg+knEXBx3b2u0kzWY= +github.com/zeebo/blake3 v0.0.1/go.mod h1:+l01N1So4KnXR2QTSMaSH2H6dHCb16oZOLgyfN5AgDc= +github.com/zeebo/wyhash v0.0.0-20191228005337-11a718112e35/go.mod h1:Ti+OwfNtM5AZiYAL0kOPIfliqDP5c0VtOnnMAqzuuZk= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5 h1:LfCXLvNmTYH9kEmVgqbnsWfruoXZIrh4YBgqVHtDvw0= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= diff --git a/main.go b/main.go new file mode 100644 index 0000000..c924014 --- /dev/null +++ b/main.go @@ -0,0 +1,46 @@ +package main + +import ( + "encoding/hex" + "flag" + "fmt" + "io" + "os" + + "github.com/zeebo/blake3" +) + +var ( + help = flag.Bool("h", false, "Prints help information") + length = flag.Int("l", 32, "The number of output bytes, prior to hex encoding (default 32)") +) + +func main() { + flag.Parse() + if *help || len(flag.Args()) == 0 { + flag.Usage() + os.Exit(0) + } + buf := [65536]byte{} + for _, name := range flag.Args() { + file, err := os.Open(name) + if err != nil { + panic(err) + } + hasher := blake3.NewSized(*length) + for { + n, err := file.Read(buf[:]) + hasher.Write(buf[:n]) + if err == io.EOF { + break + } else if err != nil { + panic(err) + } + } + file.Close() + hash := hasher.Sum([]byte{}) + fmt.Print(hex.EncodeToString(hash)) + fmt.Print(" ") + fmt.Println(name) + } +}