From e8963fed17e045a0050a506f7b6c913cf9a5a41d Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Sun, 19 Oct 2025 13:02:43 -0400 Subject: [PATCH] sha512sum now working --- sha512sum/.gitignore | 2 ++ sha512sum/Makefile | 4 ++++ sha512sum/go.mod | 3 +++ sha512sum/main.go | 45 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 sha512sum/.gitignore create mode 100644 sha512sum/Makefile create mode 100644 sha512sum/go.mod create mode 100644 sha512sum/main.go diff --git a/sha512sum/.gitignore b/sha512sum/.gitignore new file mode 100644 index 0000000..8fedf02 --- /dev/null +++ b/sha512sum/.gitignore @@ -0,0 +1,2 @@ +sha512sum +sha512sum.exe diff --git a/sha512sum/Makefile b/sha512sum/Makefile new file mode 100644 index 0000000..bea7546 --- /dev/null +++ b/sha512sum/Makefile @@ -0,0 +1,4 @@ + + +build: + go build . diff --git a/sha512sum/go.mod b/sha512sum/go.mod new file mode 100644 index 0000000..29d28e6 --- /dev/null +++ b/sha512sum/go.mod @@ -0,0 +1,3 @@ +module lcthw.dev/go/go-coreutils/sha512sum + +go 1.25.3 diff --git a/sha512sum/main.go b/sha512sum/main.go new file mode 100644 index 0000000..a6a10a3 --- /dev/null +++ b/sha512sum/main.go @@ -0,0 +1,45 @@ +package main + +import ( + "fmt" + "flag" + "os" + "log" + "crypto/sha512" +) + +type Opts struct { + Inputs []string +} + +func parse_opts() Opts { + var opts Opts + + flag.Parse() + opts.Inputs = flag.Args() + + return opts +} + +func to_hex(hash [sha512.Size]byte) string { + result := "" + + for _, b := range hash { + result += fmt.Sprintf("%x", b) + } + + return result +} + +func main() { + opts := parse_opts() + + for _, fname := range opts.Inputs { + in_data, err := os.ReadFile(fname) + if err != nil { log.Fatal(err) } + + hash := sha512.Sum512(in_data) + + fmt.Println(to_hex(hash), fname) + } +}