aboutsummaryrefslogtreecommitdiff
path: root/internal/fmtio/fmtio.go
diff options
context:
space:
mode:
authorRasmus Dahlberg <rasmus@mullvad.net>2022-04-23 18:19:25 +0200
committerRasmus Dahlberg <rasmus@mullvad.net>2022-04-23 18:29:31 +0200
commit047500ae23a12469ce3e458c6a58a642716041b7 (patch)
treedd8ab39910e623ff756532bd892fb2f8d2e5fef6 /internal/fmtio/fmtio.go
parent4fc0ff2ec2f48519ee245d6d7edee1921cb3b8bc (diff)
add drafty tool named sigsum-debug
Meant to be used for debugging and tests only. Replaces cmd/tmp/* in log-go, expect for the DNS command which is redundant. Use `dig -t txt $domain_hint` to debug domain hints.
Diffstat (limited to 'internal/fmtio/fmtio.go')
-rw-r--r--internal/fmtio/fmtio.go79
1 files changed, 79 insertions, 0 deletions
diff --git a/internal/fmtio/fmtio.go b/internal/fmtio/fmtio.go
new file mode 100644
index 0000000..0e252d4
--- /dev/null
+++ b/internal/fmtio/fmtio.go
@@ -0,0 +1,79 @@
+// package fmtio provides basic utilities to format input and output
+package fmtio
+
+import (
+ "bytes"
+ "crypto"
+ "crypto/ed25519"
+ "fmt"
+ "io/ioutil"
+ "os"
+
+ "git.sigsum.org/sigsum-go/pkg/hex"
+ "git.sigsum.org/sigsum-go/pkg/types"
+)
+
+func BytesFromStdin() ([]byte, error) {
+ b, err := ioutil.ReadAll(os.Stdin)
+ if err != nil {
+ return nil, err
+ }
+ return b, nil
+}
+
+// StringFromStdin reads bytes from stdin, parsing them as a string without
+// leading and trailing white space
+func StringFromStdin() (string, error) {
+ b, err := ioutil.ReadAll(os.Stdin)
+ if err != nil {
+ return "", err
+ }
+ return string(bytes.TrimSpace(b)), nil
+}
+
+func SignerFromHex(s string) (crypto.Signer, error) {
+ b, err := hex.Deserialize(s)
+ if err != nil {
+ return nil, err
+ }
+ if n := len(b); n != ed25519.PrivateKeySize {
+ return nil, fmt.Errorf("invalid size %d", n)
+ }
+ return ed25519.PrivateKey(b), nil
+}
+
+func PublicKeyFromHex(s string) (pub types.PublicKey, err error) {
+ b, err := hex.Deserialize(s)
+ if err != nil {
+ return pub, err
+ }
+ if n := len(b); n != types.PublicKeySize {
+ return pub, fmt.Errorf("invalid size %d", n)
+ }
+ copy(pub[:], b)
+ return
+}
+
+func KeyHashFromHex(s string) (h types.Hash, err error) {
+ b, err := hex.Deserialize(s)
+ if err != nil {
+ return h, err
+ }
+ if n := len(b); n != types.HashSize {
+ return h, fmt.Errorf("invalid size %d", n)
+ }
+ copy(h[:], b)
+ return
+}
+
+func SignatureFromHex(s string) (sig types.Signature, err error) {
+ b, err := hex.Deserialize(s)
+ if err != nil {
+ return sig, err
+ }
+ if n := len(b); n != types.SignatureSize {
+ return sig, fmt.Errorf("invalid size %d", n)
+ }
+ copy(sig[:], b)
+ return
+}