2018-03-09 20:44:13 +00:00
|
|
|
package spam
|
|
|
|
|
|
|
|
import (
|
2018-05-28 20:48:35 +00:00
|
|
|
"cwtch.im/cwtch/protocol"
|
2018-03-09 20:44:13 +00:00
|
|
|
"github.com/golang/protobuf/proto"
|
2018-06-23 16:15:36 +00:00
|
|
|
"git.openprivacy.ca/openprivacy/libricochet-go/wire/control"
|
2018-03-09 20:44:13 +00:00
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestSpamGuard(t *testing.T) {
|
2018-03-14 22:23:35 +00:00
|
|
|
var spamGuard Guard
|
2018-03-09 20:44:13 +00:00
|
|
|
spamGuard.Difficulty = 2
|
|
|
|
challenge := spamGuard.GenerateChallenge(3)
|
|
|
|
|
|
|
|
control := new(Protocol_Data_Control.Packet)
|
|
|
|
proto.Unmarshal(challenge[:], control)
|
|
|
|
|
|
|
|
if control.GetChannelResult() != nil {
|
|
|
|
ce, _ := proto.GetExtension(control.GetChannelResult(), protocol.E_ServerNonce)
|
|
|
|
challenge := ce.([]byte)[:]
|
|
|
|
|
|
|
|
sgsolve := spamGuard.SolveChallenge(challenge, []byte("Hello"))
|
|
|
|
t.Logf("Solved: %v %v", challenge, sgsolve)
|
|
|
|
result := spamGuard.ValidateChallenge([]byte("Hello"), sgsolve)
|
|
|
|
if result != true {
|
2018-03-14 22:23:35 +00:00
|
|
|
t.Errorf("Validating Guard Failed")
|
2018-03-09 20:44:13 +00:00
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
t.Errorf("Failed SpamGaurd")
|
|
|
|
|
|
|
|
}
|
2018-04-02 21:10:29 +00:00
|
|
|
|
|
|
|
func TestSpamGuardBadLength(t *testing.T) {
|
|
|
|
var spamGuard Guard
|
|
|
|
spamGuard.Difficulty = 2
|
|
|
|
spamGuard.GenerateChallenge(3)
|
|
|
|
result := spamGuard.ValidateChallenge([]byte("test"), []byte{0x00, 0x00})
|
|
|
|
if result {
|
|
|
|
t.Errorf("Validating Guard should have failed")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestSpamGuardFail(t *testing.T) {
|
|
|
|
var spamGuard Guard
|
|
|
|
spamGuard.Difficulty = 2
|
|
|
|
challenge := spamGuard.GenerateChallenge(3)
|
|
|
|
|
|
|
|
control := new(Protocol_Data_Control.Packet)
|
|
|
|
proto.Unmarshal(challenge[:], control)
|
|
|
|
|
|
|
|
if control.GetChannelResult() != nil {
|
|
|
|
ce, _ := proto.GetExtension(control.GetChannelResult(), protocol.E_ServerNonce)
|
|
|
|
challenge := ce.([]byte)[:]
|
|
|
|
|
|
|
|
var spamGuard2 Guard
|
|
|
|
spamGuard2.Difficulty = 1
|
|
|
|
sgsolve := spamGuard2.SolveChallenge(challenge, []byte("Hello"))
|
|
|
|
t.Logf("Solved: %v %v", challenge, sgsolve)
|
|
|
|
result := spamGuard.ValidateChallenge([]byte("Hello"), sgsolve)
|
|
|
|
if result {
|
|
|
|
t.Errorf("Validating Guard successes")
|
|
|
|
}
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
t.Errorf("Failed SpamGaurd")
|
|
|
|
}
|