End-to-end
pub, priv, err := ed25519.GenerateKey(rand.Reader)
if err != nil { log.Fatal(err) }
msg := []byte("hello")
sig := ed25519.Sign(priv, msg)
ok := ed25519.Verify(pub, msg, sig)
fmt.Println(ok) // true
crypto/ed25519Ed25519 signatures. Small keys, small signatures, constant-time by design. Preferred for new signing systems.
pub, priv, err := ed25519.GenerateKey(rand.Reader)
if err != nil { log.Fatal(err) }
msg := []byte("hello")
sig := ed25519.Sign(priv, msg)
ok := ed25519.Verify(pub, msg, sig)
fmt.Println(ok) // true
PublicKeySize=32, PrivateKeySize=64, SignatureSize=64. Serialize with base64 or hex.