diff options
author | Rasmus Dahlberg <rasmus@mullvad.net> | 2022-04-23 18:19:25 +0200 |
---|---|---|
committer | Rasmus Dahlberg <rasmus@mullvad.net> | 2022-04-23 18:29:31 +0200 |
commit | 047500ae23a12469ce3e458c6a58a642716041b7 (patch) | |
tree | dd8ab39910e623ff756532bd892fb2f8d2e5fef6 /internal/fmtio | |
parent | 4fc0ff2ec2f48519ee245d6d7edee1921cb3b8bc (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')
-rw-r--r-- | internal/fmtio/fmtio.go | 79 |
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 +} |