...
1 package x25519_test
2
3 import (
4 "encoding/hex"
5 "testing"
6
7 "github.com/lestrrat-go/jwx/x25519"
8 "github.com/stretchr/testify/assert"
9 )
10
11 func TestGenerateKey(t *testing.T) {
12 t.Run("x25519.GenerateKey(nil)", func(t *testing.T) {
13 _, _, err := x25519.GenerateKey(nil)
14 if !assert.NoError(t, err, `x25519.GenerateKey should work even if argument is nil`) {
15 return
16 }
17 })
18 t.Run("x25519.NewKeyFromSeed(wrongSeedLength)", func(t *testing.T) {
19 dummy := make([]byte, x25519.SeedSize-1)
20 _, err := x25519.NewKeyFromSeed(dummy)
21 if !assert.Error(t, err, `wrong seed size should result in error`) {
22 return
23 }
24 })
25 }
26
27 func TestNewKeyFromSeed(t *testing.T) {
28
29 const alicePrivHex = `77076d0a7318a57d3c16c17251b26645df4c2f87ebc0992ab177fba51db92c2a`
30 const alicePubHex = `8520f0098930a754748b7ddcb43ef75a0dbf3a0d26381af4eba4a98eaa9b4e6a`
31 const bobPrivHex = `5dab087e624a8a4b79e17f8b83800ee66f3bb1292618b6fd1c2f8b27ff88e0eb`
32 const bobPubHex = `de9edb7d7b7dc1b4d35b61c2ece435373f8343c85b78674dadfc7e146f882b4f`
33
34 alicePrivSeed, err := hex.DecodeString(alicePrivHex)
35 if !assert.NoError(t, err, `alice seed decoded`) {
36 return
37 }
38 alicePriv, err := x25519.NewKeyFromSeed(alicePrivSeed)
39 if !assert.NoError(t, err, `alice private key`) {
40 return
41 }
42
43 alicePub := alicePriv.Public().(x25519.PublicKey)
44 if !assert.Equal(t, hex.EncodeToString(alicePub), alicePubHex, `alice public key`) {
45 return
46 }
47
48 bobPrivSeed, err := hex.DecodeString(bobPrivHex)
49 if !assert.NoError(t, err, `bob seed decoded`) {
50 return
51 }
52 bobPriv, err := x25519.NewKeyFromSeed(bobPrivSeed)
53 if !assert.NoError(t, err, `bob private key`) {
54 return
55 }
56
57 bobPub := bobPriv.Public().(x25519.PublicKey)
58 if !assert.Equal(t, hex.EncodeToString(bobPub), bobPubHex, `bob public key`) {
59 return
60 }
61
62 if !assert.True(t, bobPriv.Equal(bobPriv), `bobPriv should equal bobPriv`) {
63 return
64 }
65 if !assert.True(t, bobPub.Equal(bobPub), `bobPub should equal bobPub`) {
66 return
67 }
68 if !assert.False(t, bobPriv.Equal(bobPub), `bobPriv should NOT equal bobPub`) {
69 return
70 }
71 if !assert.False(t, bobPub.Equal(bobPriv), `bobPub should NOT equal bobPriv`) {
72 return
73 }
74 }
75
View as plain text