참고 사이트 : "github.com/cloudflare/circl/sign/ed25519"

Go Lang : ed25519 Example

package main

import (
    "crypto/rand"
    "fmt"
    "io"
    "os"
    "github.com/cloudflare/circl/sign/ed25519"
)

func main() {
  var public ed25519.PublicKey
	var private ed25519.PrivateKey

	_, _ = io.ReadFull(rand.Reader, private[:])

	argCount := len(os.Args[1:])

	message := "Hello"

	if argCount > 0 {
		message = string(os.Args[1])
	}

	msg := []byte(message)

	//ed25519.KeyGen(&public, &private)
	//ed25519.KeyGen(&public, &private)
	public, private, _ = ed25519.GenerateKey(rand.Reader)

	fmt.Printf("Private:\\t%x\\n", private)
	fmt.Printf("Public:\\t\\t%x\\n", public)

	sig := ed25519.Sign(private, msg)
	fmt.Printf("\\n\\nSignature:\\t%x\\n", sig)

	ver := ed25519.Verify(public, msg, sig)
	fmt.Printf("\\n\\nSignature verified:\\t%t\\n", ver)
}

A sample run is:

Private:    6f74424c0fbf9e03871b3a1e137d0decb7d966cbfe3fbc554e8c8219a489acc3
Public:     0911352aa4c4cdcbea73d7d95b36ac6342574fb8a3a934995de27e7c2989fc81

Signature:  89c204038e39cc1b53878fdaddc9ae75245d13eba67fa11f9430bc7102d06d1c1fb510e88656c375e686fb37a4d555775c617b1b3a9005e9aafa36d099891b0e

Signature verified: true