mirror of
https://github.com/autc04/Retro68.git
synced 2024-12-22 19:30:36 +00:00
48 lines
994 B
Go
48 lines
994 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 elliptic
|
|
|
|
import (
|
|
"math/big"
|
|
"testing"
|
|
)
|
|
|
|
var toFromBigTests = []string{
|
|
"0",
|
|
"1",
|
|
"23",
|
|
"b70e0cb46bb4bf7f321390b94a03c1d356c01122343280d6105c1d21",
|
|
"706a46d476dcb76798e6046d89474788d164c18032d268fd10704fa6",
|
|
}
|
|
|
|
func p224AlternativeToBig(in *p224FieldElement) *big.Int {
|
|
ret := new(big.Int)
|
|
tmp := new(big.Int)
|
|
|
|
for i := uint(0); i < 8; i++ {
|
|
tmp.SetInt64(int64(in[i]))
|
|
tmp.Lsh(tmp, 28*i)
|
|
ret.Add(ret, tmp)
|
|
}
|
|
ret.Mod(ret, p224.P)
|
|
return ret
|
|
}
|
|
|
|
func TestToFromBig(t *testing.T) {
|
|
for i, test := range toFromBigTests {
|
|
n, _ := new(big.Int).SetString(test, 16)
|
|
var x p224FieldElement
|
|
p224FromBig(&x, n)
|
|
m := p224ToBig(&x)
|
|
if n.Cmp(m) != 0 {
|
|
t.Errorf("#%d: %x != %x", i, n, m)
|
|
}
|
|
q := p224AlternativeToBig(&x)
|
|
if n.Cmp(q) != 0 {
|
|
t.Errorf("#%d: %x != %x (alternative)", i, n, m)
|
|
}
|
|
}
|
|
}
|