43 lines
733 B
Go
43 lines
733 B
Go
package crypto
|
|
|
|
import (
|
|
"crypto/ed25519"
|
|
"crypto/rand"
|
|
"io"
|
|
"testing"
|
|
)
|
|
|
|
func TestEd25519(t *testing.T) {
|
|
var pubKey Ed25519PublicKey
|
|
|
|
signer := new(Ed25519Signer)
|
|
pub, priv, err := ed25519.GenerateKey(rand.Reader)
|
|
if err != nil {
|
|
t.Log("Failed to generate ed25519 test key")
|
|
t.Fail()
|
|
}
|
|
pubKey = []byte(pub)
|
|
signer.k = []byte(priv)
|
|
|
|
message := make([]byte, 123)
|
|
io.ReadFull(rand.Reader, message)
|
|
|
|
sig, err := signer.Sign(message)
|
|
if err != nil {
|
|
t.Log("Failed to sign message")
|
|
t.Fail()
|
|
}
|
|
|
|
verifier, err := pubKey.NewVerifier()
|
|
if err != nil {
|
|
t.Logf("Error from verifier: %s", err)
|
|
t.Fail()
|
|
}
|
|
|
|
err = verifier.Verify(message, sig)
|
|
if err != nil {
|
|
t.Log("Failed to verify message")
|
|
t.Fail()
|
|
}
|
|
}
|