2018-06-30 02:29:11 +02:00
|
|
|
package pake
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
2018-06-30 23:54:29 +02:00
|
|
|
"github.com/tscholl2/siec"
|
2018-06-30 02:29:11 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
func TestPake(t *testing.T) {
|
2018-06-30 23:54:29 +02:00
|
|
|
curve := 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())
|
|
|
|
|
|
|
|
}
|