From 15929b76b6c653fa6ce2e48cf420323d99d9fc75 Mon Sep 17 00:00:00 2001
From: Sergey Matveev <stargrave@stargrave.org>
Date: Thu, 4 May 2023 12:14:32 +0300
Subject: [PATCH 1/1] Initial commit

---
 build                  |  4 ++++
 cmd/goshake128/main.go | 24 ++++++++++++++++++++++++
 cmd/goshake256/main.go | 24 ++++++++++++++++++++++++
 go.mod                 |  7 +++++++
 go.sum                 |  4 ++++
 5 files changed, 63 insertions(+)
 create mode 100755 build
 create mode 100644 cmd/goshake128/main.go
 create mode 100644 cmd/goshake256/main.go
 create mode 100644 go.mod
 create mode 100644 go.sum

diff --git a/build b/build
new file mode 100755
index 0000000..5dfda95
--- /dev/null
+++ b/build
@@ -0,0 +1,4 @@
+#!/bin/sh -e
+
+go build -ldflags=-s ./cmd/goshake128
+go build -ldflags=-s ./cmd/goshake256
diff --git a/cmd/goshake128/main.go b/cmd/goshake128/main.go
new file mode 100644
index 0000000..1511f12
--- /dev/null
+++ b/cmd/goshake128/main.go
@@ -0,0 +1,24 @@
+package main
+
+import (
+	"bufio"
+	"encoding/hex"
+	"fmt"
+	"io"
+	"os"
+
+	"golang.org/x/crypto/sha3"
+)
+
+func main() {
+	h := sha3.NewShake128()
+	dgst := make([]byte, 32)
+	var err error
+	if _, err = io.Copy(h, bufio.NewReaderSize(os.Stdin, 1<<20)); err != nil {
+		panic(err)
+	}
+	if _, err = io.ReadFull(h, dgst); err != nil {
+		panic(err)
+	}
+	fmt.Println(hex.EncodeToString(dgst))
+}
diff --git a/cmd/goshake256/main.go b/cmd/goshake256/main.go
new file mode 100644
index 0000000..6895fa5
--- /dev/null
+++ b/cmd/goshake256/main.go
@@ -0,0 +1,24 @@
+package main
+
+import (
+	"bufio"
+	"encoding/hex"
+	"fmt"
+	"io"
+	"os"
+
+	"golang.org/x/crypto/sha3"
+)
+
+func main() {
+	h := sha3.NewShake256()
+	dgst := make([]byte, 64)
+	var err error
+	if _, err = io.Copy(h, bufio.NewReaderSize(os.Stdin, 1<<20)); err != nil {
+		panic(err)
+	}
+	if _, err = io.ReadFull(h, dgst); err != nil {
+		panic(err)
+	}
+	fmt.Println(hex.EncodeToString(dgst))
+}
diff --git a/go.mod b/go.mod
new file mode 100644
index 0000000..ecfb048
--- /dev/null
+++ b/go.mod
@@ -0,0 +1,7 @@
+module go.stargrave.org/gosha3
+
+go 1.20
+
+require golang.org/x/crypto v0.8.0
+
+require golang.org/x/sys v0.7.0 // indirect
diff --git a/go.sum b/go.sum
new file mode 100644
index 0000000..81d231e
--- /dev/null
+++ b/go.sum
@@ -0,0 +1,4 @@
+golang.org/x/crypto v0.8.0 h1:pd9TJtTueMTVQXzk8E2XESSMQDj/U7OUu0PqJqPXQjQ=
+golang.org/x/crypto v0.8.0/go.mod h1:mRqEX+O9/h5TFCrQhkgjo2yKi0yYA+9ecGkdQoHrywE=
+golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU=
+golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-- 
2.51.0