github.com/line/ostracon@v1.0.10-0.20230328032236-7f20145f065d/crypto/vrf/compatibility_vrf_test.go (about) 1 //go:build libsodium 2 // +build libsodium 3 4 package vrf 5 6 import ( 7 "crypto/ed25519" 8 "testing" 9 10 "github.com/stretchr/testify/require" 11 12 r2ishiguro "github.com/r2ishiguro/vrf/go/vrf_ed25519" 13 ) 14 15 func TestProveAndVerifyCompatibility(t *testing.T) { 16 privateKey := ed25519.NewKeyFromSeed(secret[:]) 17 publicKey := privateKey.Public().(ed25519.PublicKey) 18 19 sk := make([]byte, ed25519.PrivateKeySize) 20 copy(sk, privateKey[:]) 21 pk := make([]byte, ed25519.PublicKeySize) 22 copy(pk, publicKey[:]) 23 24 libsodiumImpl := newVrfEd25519libsodium() 25 26 t.Run("libsodium.Prove and r2ishiguro.Verify have NOT compatibility", func(t *testing.T) { 27 proof, err := libsodiumImpl.Prove(sk, message) 28 require.NoError(t, err) 29 require.NotNil(t, proof) 30 31 valid, err := r2ishiguro.ECVRF_verify(pk, proof, message) 32 require.Error(t, err) 33 require.False(t, valid) 34 }) 35 t.Run("r2ishiguro.Prove and libsodium.Verify have NOT compatibility", func(t *testing.T) { 36 proof, err := r2ishiguro.ECVRF_prove(pk, sk, message) 37 require.NoError(t, err) 38 require.NotNil(t, proof) 39 40 valid, err := libsodiumImpl.Verify(pk, proof, message) 41 require.Error(t, err) 42 require.False(t, valid) 43 }) 44 }