Archived
1
0

add tests and try making no libsodium version work properly

This commit is contained in:
Jeff Becker 2017-08-26 10:41:28 -04:00
parent 2983eb6fbd
commit 59ea3da355
No known key found for this signature in database
GPG Key ID: F357B3B42F6F9B05
6 changed files with 102 additions and 33 deletions

View File

@ -10,3 +10,9 @@ pure:
clean:
GOPATH=$(REPO) go clean -v
test:
GOPATH=$(REPO) go test -v -tags libsodium srnd
test-pure:
GOPATH=$(REPO) go test -v srnd

View File

@ -0,0 +1,44 @@
package srnd
import (
"bufio"
"io"
"io/ioutil"
"os"
"path/filepath"
"testing"
)
func TestVerify(t *testing.T) {
d := filepath.Join("testdata", "article.test.txt")
f, e := os.Open(d)
if e != nil {
t.Logf("os.Open returned error: %s", e)
t.Fail()
return
}
r := bufio.NewReader(f)
msg, er := readMIMEHeader(r)
if er != nil {
t.Logf("readMIMEHeader returned error: %s", er)
t.Fail()
return
}
b := &io.LimitedReader{
R: msg.Body,
N: 1000000000,
}
err := read_message_body(b, msg.Header, nil, ioutil.Discard, true, func(msg NNTPMessage) {
return
})
if err != nil {
t.Logf("read_message_body returned error: %s", err)
t.Fail()
return
}
}

View File

@ -3,27 +3,44 @@
package srnd
import (
"crypto/sha512"
"golang.org/x/crypto/curve25519"
"golang.org/x/crypto/ed25519"
)
func naclCryptoVerifyFucky(h, sig, pk []byte) bool {
return false
pub := make(ed25519.PublicKey, ed25519.PublicKeySize)
copy(pub, pk)
return ed25519.Verify(pub, h, sig)
}
func naclCryptoSignFucky(hash, sk []byte) []byte {
return nil
}
func naclCryptoVerifyDetached(hash, sig, pk []byte) bool {
return false
}
func naclCryptoSignDetached(hash, sk []byte) []byte {
return nil
sec := make(ed25519.PrivateKey, ed25519.PrivateKeySize)
copy(sec, sk)
return ed25519.Sign(sec, hash)
}
func naclSeedToKeyPair(seed []byte) (pk, sk []byte) {
h := sha512.Sum512(seed)
sk = h[:]
sk[0] &= 248
sk[31] &= 63
sk[31] |= 64
// scalarmult magick shit
pk = scalarBaseMult(sk)
copy(sk[0:32], seed[0:32])
copy(sk[32:64], pk[0:32])
return
}
var naclScalarBaseMult = curve25519.ScalarBaseMult
func scalarBaseMult(sk []byte) (pk []byte) {
var skey [32]byte
var pkey [32]byte
copy(skey[0:32], sk[0:32])
curve25519.ScalarBaseMult(&pkey, &skey)
pk = pkey[0:32]
return
}

View File

@ -502,7 +502,7 @@ func verifyMessageBLAKE2B(pk, sig string, body *io.LimitedReader, innerHandler f
hash := h.Sum(nil)
log.Printf("hash=%s", hexify(hash))
log.Printf("sig=%s", hexify(sig_bytes))
if naclCryptoVerifyDetached(hash, sig_bytes, pk_bytes) {
if naclCryptoVerifyFucky(hash, sig_bytes, pk_bytes) {
log.Println("signature is valid :^)")
} else {
err = errors.New("invalid signature")

View File

@ -1,21 +0,0 @@
package srnd
import "testing"
import "fmt"
import "github.com/majestrate/nacl"
func TestSignVerify(t *testing.T) {
msgid := "<asd@asd.asd>"
secret := "asdasdasd"
seed := parseTripcodeSecret(secret)
kp := nacl.LoadSignKey(seed)
defer kp.Free()
pubkey := hexify(kp.Public())
seckey := kp.Secret()
sig := msgidFrontendSign(seckey, msgid)
fmt.Println(sig, pubkey, msgid)
if !verifyFrontendSig(pubkey, sig, msgid) {
t.Fail()
}
}

View File

@ -0,0 +1,23 @@
Subject: My moderation decision/perspective
From: mgs <poster@web.oniichan.onion>
X-Signature-Ed25519-SHA512: 6e0478722d0de3c0896e8aa7bd9bb1fa94ba6831faf0c54c4aa1d91a191382f85ae57833a6e00f1d4da53048df0e0cb8402df5f952948aa53fb5788ca9242f02
X-Frontend-Pubkey: b1dcaa6ba60c1381a5823c3c61c995afeaead79896f95f9748da5fe1cf6ea43f
Path: web.oniichan.onion
Content-Type: message/rfc822; charset=UTF-8
Newsgroups: overchan.moderation
Message-ID: <b880c1483096181@web.oniichan.onion>
Date: Fri, 30 Dec 2016 11:09:41 +0000
X-PubKey-Ed25519: 9a659a2c761009374b510f2eb133cf7e67220f93c8912fd4668c601144823121
X-Frontend-Signature: 11eb01c8a137e29f4e7a8b25a2cf38b5d913db9d4faaca5c5f8946b0e7f83d826bd3af6c9fc6a40c1091c09ad437b2b9d9aa41617c63a464e5b1833ed77fe202
Path: web.oniichan.onion
Content-Type: text/plain; charset=utf-8
Newsgroups: overchan.moderation
Subject: My moderation decision/perspective
From: mgs <poster@web.oniichan.onion>
Message-ID: <b880c1483096181@web.oniichan.onion>
Date: Fri, 30 Dec 2016 11:09:41 +0000
Like the subject says, I will update in this thread on decisions I made on ctl with briefs/explanations. Anyone is actually welcomed to comment, discuss, and opinionate here, but not spam. If anyone uses this very thread to spam, I will delete, the node owners will see it, and I will reply it here exactly saying so.
Iow: please critique.