This consists of ~2000 lines of amd64 assembly and a, much slower, generic Go version in curve25519.go. The assembly has been ported from djb's public domain sources and the only semantic alterations are to deal with Go's split stacks. R=rsc CC=golang-dev https://golang.org/cl/5786045
30 lines
605 B
Go
30 lines
605 B
Go
// Copyright 2012 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package curve25519
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
)
|
|
|
|
const expectedHex = "89161fde887b2b53de549af483940106ecc114d6982daa98256de23bdf77661a"
|
|
|
|
func TestBaseScalarMult(t *testing.T) {
|
|
var a, b [32]byte
|
|
in := &a
|
|
out := &b
|
|
a[0] = 1
|
|
|
|
for i := 0; i < 200; i++ {
|
|
ScalarBaseMult(out, in)
|
|
in, out = out, in
|
|
}
|
|
|
|
result := fmt.Sprintf("%x", in[:])
|
|
if result != expectedHex {
|
|
t.Errorf("incorrect result: got %s, want %s", result, expectedHex)
|
|
}
|
|
}
|