Move to separated directory. Get ready for p434

This commit is contained in:
Henry Case 2019-06-27 09:38:02 +01:00
bovenliggende fa7ffc3162
commit c18cbd517a
10 gewijzigde bestanden met toevoegingen van 16 en 16 verwijderingen

Bestand weergeven

@ -14,25 +14,25 @@ var p503 = Fp{
}
// 2*503
var p503x2 = Fp{
var pX2 = Fp{
0xFFFFFFFFFFFFFFFE, 0xFFFFFFFFFFFFFFFF, 0xFFFFFFFFFFFFFFFF, 0x57FFFFFFFFFFFFFF,
0x2610B7B44423CF41, 0x3737ED90F6FCFB5E, 0xC08B8D7BB4EF49A0, 0x0080CDEA83023C3C,
}
// p503 + 1
var p503p1 = Fp{
var p1 = Fp{
0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0xAC00000000000000,
0x13085BDA2211E7A0, 0x1B9BF6C87B7E7DAF, 0x6045C6BDDA77A4D0, 0x004066F541811E1E,
}
// R^2=(2^512)^2 mod p
var p503R2 = Fp{
var pR2 = Fp{
0x5289A0CF641D011F, 0x9B88257189FED2B9, 0xA3B365D58DC8F17A, 0x5BC57AB6EFF168EC,
0x9E51998BD84D4423, 0xBF8999CBAC3B5695, 0x46E9127BCE14CDB6, 0x003F6CFCE8B81771,
}
// p503 + 1 left-shifted by 8, assuming little endianness
var p503p1s8 = Fp{
var p1s8 = Fp{
0x0000000000000000, 0x0000000000000000, 0x0000000000000000, 0x0000000000000000,
0x085BDA2211E7A0AC, 0x9BF6C87B7E7DAF13, 0x45C6BDDA77A4D01B, 0x4066F541811E1E60,
}

Bestand weergeven

@ -36,9 +36,9 @@ func toMontDomain(x *Fp2) {
var aRR FpX2
// convert to montgomery domain
fpMul(&aRR, &x.A, &p503R2) // = a*R*R
fpMontRdc(&x.A, &aRR) // = a*R mod p
fpMul(&aRR, &x.B, &p503R2)
fpMul(&aRR, &x.A, &pR2) // = a*R*R
fpMontRdc(&x.A, &aRR) // = a*R mod p
fpMul(&aRR, &x.B, &pR2)
fpMontRdc(&x.B, &aRR)
}

Bestand weergeven

@ -15,17 +15,17 @@ func fpAddRdc(z, x, y *Fp) {
z[i], carry = bits.Add64(x[i], y[i], carry)
}
// z = z - p503x2
// z = z - pX2
carry = 0
for i := 0; i < FP_WORDS; i++ {
z[i], carry = bits.Sub64(z[i], p503x2[i], carry)
z[i], carry = bits.Sub64(z[i], pX2[i], carry)
}
// if z<0 add p503x2 back
// if z<0 add pX2 back
mask := uint64(0 - carry)
carry = 0
for i := 0; i < FP_WORDS; i++ {
z[i], carry = bits.Add64(z[i], p503x2[i]&mask, carry)
z[i], carry = bits.Add64(z[i], pX2[i]&mask, carry)
}
}
@ -33,16 +33,16 @@ func fpAddRdc(z, x, y *Fp) {
func fpSubRdc(z, x, y *Fp) {
var borrow uint64
// z = z - p503x2
// z = z - pX2
for i := 0; i < FP_WORDS; i++ {
z[i], borrow = bits.Sub64(x[i], y[i], borrow)
}
// if z<0 add p503x2 back
// if z<0 add pX2 back
mask := uint64(0 - borrow)
borrow = 0
for i := 0; i < FP_WORDS; i++ {
z[i], borrow = bits.Add64(z[i], p503x2[i]&mask, borrow)
z[i], borrow = bits.Add64(z[i], pX2[i]&mask, borrow)
}
}
@ -116,7 +116,7 @@ func fpMontRdc(z *Fp, x *FpX2) {
for i := 0; i < FP_WORDS; i++ {
for j := 0; j < i; j++ {
if j < (i - count + 1) {
hi, lo = bits.Mul64(z[j], p503p1[i-j])
hi, lo = bits.Mul64(z[j], p1[i-j])
v, carry = bits.Add64(lo, v, 0)
u, carry = bits.Add64(hi, u, carry)
t += carry
@ -138,7 +138,7 @@ func fpMontRdc(z *Fp, x *FpX2) {
}
for j := i - FP_WORDS + 1; j < FP_WORDS; j++ {
if j < (FP_WORDS - count) {
hi, lo = bits.Mul64(z[j], p503p1[i-j])
hi, lo = bits.Mul64(z[j], p1[i-j])
v, carry = bits.Add64(lo, v, 0)
u, carry = bits.Add64(hi, u, carry)
t += carry