croc/src/pake/pake_test.go

57 lines
1.3 KiB
Go
Raw Normal View History

2018-06-30 02:29:11 +02:00
package pake
import (
"crypto/elliptic"
"testing"
"github.com/stretchr/testify/assert"
)
func TestPake(t *testing.T) {
2018-06-30 23:45:44 +02:00
curve := elliptic.P521() //siec.SIEC255()
2018-06-30 02:29:11 +02:00
// successful (both have same k)
// initialize A
2018-06-30 23:45:44 +02:00
A, err := Init([]byte{1, 2, 3}, 0, curve)
2018-06-30 02:29:11 +02:00
assert.Nil(t, err)
assert.False(t, A.IsVerified())
// initialize B
2018-06-30 23:45:44 +02:00
B, err := Init([]byte{1, 2, 3}, 1, curve)
2018-06-30 02:29:11 +02:00
assert.Nil(t, err)
assert.False(t, B.IsVerified())
// send A's stuff to B
err = B.Update(A.Bytes())
assert.Nil(t, err)
assert.False(t, B.IsVerified())
// send B's stuff to A
err = A.Update(B.Bytes())
assert.Nil(t, err) // A validates
assert.True(t, A.IsVerified())
// send A's stuff back to B
err = B.Update(A.Bytes())
assert.Nil(t, err) // B validates
assert.True(t, B.IsVerified())
// failure (both have different k)
// initialize A
2018-06-30 23:45:44 +02:00
A, err = Init([]byte{1, 2, 3}, 0, curve)
2018-06-30 02:29:11 +02:00
assert.Nil(t, err)
assert.False(t, A.IsVerified())
// initialize B
2018-06-30 23:45:44 +02:00
B, err = Init([]byte{4, 5, 6}, 1, curve)
2018-06-30 02:29:11 +02:00
assert.Nil(t, err)
assert.False(t, B.IsVerified())
// send A's stuff to B
err = B.Update(A.Bytes())
assert.Nil(t, err)
assert.False(t, B.IsVerified())
// send B's stuff to A
err = A.Update(B.Bytes())
assert.NotNil(t, err) // A validates
assert.False(t, A.IsVerified())
// send A's stuff back to B
err = B.Update(A.Bytes())
assert.NotNil(t, err)
assert.False(t, B.IsVerified())
}