func NewEd25519SignerKeysFile(path string) (string, string, error) {
	outPriv := path + "/qed_ed25519"
	outPub := outPriv + ".pub"
	pubKey, privKey, _ := ed25519.GenerateKey(rand.Reader)
	err := ioutil.WriteFile(outPriv, privKey, 0644)
	if err != nil {
		return outPub, outPriv, err
	}
	_ = ioutil.WriteFile(outPub, pubKey, 0644)
	return outPub, outPriv, nil
}
NewEd25519SignerKeysFile generates a new private/public signer key.
Input parameter is the full path to the output directory where the keys
will be stored. The function output is the full path to our new signer keys
and an error. Eg: (/var/tmp/qed_ed25519, /var/tmp/qed_ed25519.pub, nil)
package crypto
import (
	"crypto/rand"
	"io/ioutil"
	"golang.org/x/crypto/ed25519"
)