Commit 8796035

bryfry <bryon.fryer@gmail.com>
2015-03-06 23:52:12
add sha1
1 parent 64620bd
Changed files (1)
sha1sum.go
@@ -0,0 +1,58 @@
+package main
+
+import (
+	"crypto/sha1"
+	"flag"
+	"fmt"
+	"io"
+	"os"
+)
+
+func main() {
+
+	// choose a digest function
+	var newHash = sha1.New
+
+	// no args, read from stdin
+	if len(os.Args) == 1 {
+		h := newHash()
+		_, err := io.Copy(h, os.Stdin)
+		if err != nil {
+			fmt.Println(err.Error())
+		}
+		fmt.Printf("%x\t%s\n", h.Sum(nil), "-")
+		return
+	}
+
+	// string digest
+	var s = flag.String("s", "", "print the checksum of the given string")
+	flag.Parse()
+	sVal := *s
+	if sVal != "" {
+		fmt.Printf("%x\t\"%s\"\n", newHash().Sum([]byte(sVal)), sVal)
+		return
+	}
+
+	// files & stdin digests
+	for _, filename := range flag.Args() {
+		var (
+			f   = os.Stdin
+			h   = newHash()
+			err error
+		)
+		if filename != "-" {
+			f, err = os.Open(filename)
+		}
+		if err != nil {
+			fmt.Println(err.Error())
+			continue
+		}
+		_, err = io.Copy(h, f)
+		if err != nil {
+			fmt.Println(err.Error())
+			continue
+		}
+		fmt.Printf("%x\t%s\n", h.Sum(nil), filename)
+	}
+
+}