diff options
author | Rasmus Dahlberg <rasmus@mullvad.net> | 2022-04-13 16:33:03 +0200 |
---|---|---|
committer | Rasmus Dahlberg <rasmus@mullvad.net> | 2022-04-13 16:33:03 +0200 |
commit | b1bcc5d12fc57f0d39f3dadc0d159f4c71ae37d7 (patch) | |
tree | b32b07c221dcccdb3bbd8f6f2dd28f7709e2af65 /internal/util/util.go | |
parent | 10317e6bcbd391c80c573816d5d16c989f75a899 (diff) |
one util file for now
Diffstat (limited to 'internal/util/util.go')
-rw-r--r-- | internal/util/util.go | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/internal/util/util.go b/internal/util/util.go new file mode 100644 index 0000000..4d52245 --- /dev/null +++ b/internal/util/util.go @@ -0,0 +1,52 @@ +package util + +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, fmt.Errorf("util: read stdin: %v", err) + } + return b, nil +} + +func HexFromStdin() ([]byte, error) { + b, err := BytesFromStdin() + if err != nil { + return nil, err + } + b, err = hex.Deserialize(string(bytes.TrimSpace(b))) + if err != nil { + return nil, fmt.Errorf("util: parse stdin: %v", err) + } + return b, nil +} + +func SignerFromHex(s string) (crypto.Signer, error) { + b, err := hex.Deserialize(s) + if err != nil { + return nil, fmt.Errorf("util: parse key: %v", err) + } + if len(b) != ed25519.PrivateKeySize { + return nil, fmt.Errorf("util: invalid private key size %d", len(b)) + } + return ed25519.PrivateKey(b), nil +} + +func FileHash(path string) (*types.Hash, error) { + b, err := ioutil.ReadFile(path) + if err != nil { + return nil, fmt.Errorf("util: read file %s: %v", path, err) + } + return types.HashFn(b), nil +} |