aboutsummaryrefslogtreecommitdiffstats
path: root/key/key.go
diff options
context:
space:
mode:
Diffstat (limited to 'key/key.go')
-rw-r--r--key/key.go19
1 files changed, 16 insertions, 3 deletions
diff --git a/key/key.go b/key/key.go
index a427769..2aac124 100644
--- a/key/key.go
+++ b/key/key.go
@@ -1,6 +1,8 @@
package key
import (
+ "encoding/hex"
+ "fmt"
"io"
"os"
)
@@ -21,9 +23,20 @@ func LoadPublicKey() ([32]byte, error) {
defer f.Close()
// Read key.
- var pubkey [32]byte
- if _, err := io.ReadFull(f, pubkey[:]); err != nil {
+ buf, err := io.ReadAll(f)
+ if err != nil {
+ return [32]byte{}, err
+ }
+
+ // Decode.
+ var key [32]byte
+ if hex.DecodedLen(len(buf)) != len(key) {
+ return [32]byte{}, fmt.Errorf("malformed key: expected %d bytes; got %d",
+ len(key), hex.DecodedLen(len(buf)))
+ }
+ if _, err := hex.Decode(key[:], buf); err != nil {
return [32]byte{}, err
}
- return pubkey, nil
+
+ return key, nil
}