| // 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) | |
| } | |
| } | |
| } |