From 9d3164de326e24348fa5e86d19b3f4e6e961f2ce Mon Sep 17 00:00:00 2001 From: Sam Anthony Date: Mon, 14 Apr 2025 17:13:30 -0400 Subject: load keypair from disc --- key/key.go | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) (limited to 'key') diff --git a/key/key.go b/key/key.go index 2aac124..f7419e4 100644 --- a/key/key.go +++ b/key/key.go @@ -7,28 +7,47 @@ import ( "os" ) +// LoadKeypair reads the public and private keys from disc, +// or generates a new keypair if it does not already exist. +func LoadKeypair() (public, private [32]byte, err error) { + // Generate a keypair if it doesn't already exist. + err = generateIfNoExist() + if err != nil { + return + } + + public, err = loadKey(pubKeyFile) + if err != nil { + return + } + + private, err = loadKey(privKeyFile) + + return +} + // LoadPublicKey reads the public key from disc, or generates a new keypair // if it does not already exist. func LoadPublicKey() ([32]byte, error) { - // Generate a keypair if it doesn't already exist. - if err := generateIfNoExist(); err != nil { - return [32]byte{}, err - } + return loadKey(pubKeyFile) +} - // Open key file. - f, err := os.Open(pubKeyFile) +// loadKey reads a key (public or private) from the specified file. +func loadKey(filename string) ([32]byte, error) { + // Open file. + f, err := os.Open(filename) if err != nil { return [32]byte{}, err } defer f.Close() - // Read key. + // Read key from file. buf, err := io.ReadAll(f) if err != nil { return [32]byte{}, err } - // Decode. + // Decode key. var key [32]byte if hex.DecodedLen(len(buf)) != len(key) { return [32]byte{}, fmt.Errorf("malformed key: expected %d bytes; got %d", -- cgit v1.2.3